/linux/drivers/net/ethernet/intel/iavf/ |
H A D | iavf_adv_rss.c | 4 /* advanced RSS configuration ethtool support for iavf */ 9 * iavf_fill_adv_rss_ip4_hdr - fill the IPv4 RSS protocol header 11 * @hash_flds: the RSS configuration protocol hash fields 26 * iavf_fill_adv_rss_ip6_hdr - fill the IPv6 RSS protocol header 28 * @hash_flds: the RSS configuration protocol hash fields 43 * iavf_fill_adv_rss_tcp_hdr - fill the TCP RSS protocol header 45 * @hash_flds: the RSS configuration protocol hash fields 60 * iavf_fill_adv_rss_udp_hdr - fill the UDP RSS protocol header 62 * @hash_flds: the RSS configuration protocol hash fields 77 * iavf_fill_adv_rss_sctp_hdr - fill the SCTP RSS protocol header [all …]
|
H A D | iavf_adv_rss.h | 9 /* State of advanced RSS configuration */ 11 IAVF_ADV_RSS_ADD_REQUEST, /* User requests to add RSS */ 12 IAVF_ADV_RSS_ADD_PENDING, /* RSS pending add by the PF */ 13 IAVF_ADV_RSS_DEL_REQUEST, /* Driver requests to delete RSS */ 14 IAVF_ADV_RSS_DEL_PENDING, /* RSS pending delete by the PF */ 15 IAVF_ADV_RSS_ACTIVE, /* RSS configuration is active */ 76 /* bookkeeping of advanced RSS configuration */ 94 iavf_print_adv_rss_cfg(struct iavf_adapter *adapter, struct iavf_adv_rss *rss,
|
H A D | iavf_virtchnl.c | 1151 * Request RSS Hash enable bits from PF 1157 dev_err(&adapter->pdev->dev, "Cannot get RSS hash capabilities, command %d pending\n", in iavf_get_rss_hashcfg() 1170 * Request the PF to set our RSS hash capabilities 1178 dev_err(&adapter->pdev->dev, "Cannot set RSS hash enable, command %d pending\n", in iavf_set_rss_hashcfg() 1193 * Request the PF to set our RSS hash key 1202 dev_err(&adapter->pdev->dev, "Cannot set RSS key, command %d pending\n", in iavf_set_rss_key() 1224 * Request the PF to set our RSS lookup table 1233 dev_err(&adapter->pdev->dev, "Cannot set RSS LUT, command %d pending\n", in iavf_set_rss_lut() 1254 * Request the PF to set our RSS Hash function 1263 dev_err(&adapter->pdev->dev, "Cannot set RSS Hash function, command %d pending\n", in iavf_set_rss_hfunc() [all …]
|
/linux/tools/testing/selftests/drivers/net/hw/ |
H A D | rss_ctx.py | 27 if 'rss-hash-key' not in data: 29 non_zero = [x for x in data['rss-hash-key'] if x != 0] 30 ksft_eq(bool(non_zero), True, comment=f"RSS key is all zero {data['rss-hash-key']}") 49 # Output will be something like: "New RSS context is 1" or 110 """Check that ntuple rule references RSS context ID""" 112 pattern = f"RSS Context (ID: )?{ctx_id}" 113 ksft_true(re.search(pattern, text), "RSS context not referenced in ntuple rule") 117 """Test basics like updating the main RSS key and indirection table.""" 124 want_keys = ['rss [all...] |
H A D | rss_api.py | 5 API level tests for RSS (mostly Netlink vs IOCTL). 27 # Output will be something like: "New RSS context is 1" or 95 rss = cfg.ethnl.rss_get({"header": {"dev-index": cfg.ifindex}}) 96 ksft_eq(set(rss.get("indir", [-1])), {1}) 100 rss = cfg.ethnl.rss_get({"header": {"dev-index": cfg.ifindex}}) 101 ksft_eq(set(rss.get("indir", [-1])), {0, 1}) 111 rss = cfg.ethnl.rss_get({"header": {"dev-index": cfg.ifindex}}) 112 ksft_eq(set(rss.get("indir", [-1])), set(range(qcnt))) 130 rss = cfg.ethnl.rss_get({"header": {"dev-index": cfg.ifindex}, 132 ksft_eq(set(rss.get("indir", [-1])), {1}) [all …]
|
H A D | rss_input_xfrm.py | 27 If symmetric RSS hash is configured, send traffic twice, swapping the 33 raise KsftSkipEx("Need at least two CPUs to test symmetric RSS hash") 40 rss = cfg.ethnl.rss_get({'header': {'dev-name': cfg.ifname}}) 41 input_xfrm = set(filter(lambda x: 'sym' in x, rss.get('input-xfrm', {}))) 45 raise KsftSkipEx("Symmetric RSS hash not requested")
|
/linux/drivers/net/ethernet/amazon/ena/ |
H A D | ena_com.c | 1043 return ena_dev->rss.hash_func; in ena_com_get_current_hash_function() 1049 (ena_dev->rss).hash_key; in ena_com_hash_key_fill_default_key() 1060 struct ena_rss *rss = &ena_dev->rss; in ena_com_hash_key_allocate() local 1065 rss->hash_key = dma_alloc_coherent(ena_dev->dmadev, sizeof(*rss->hash_key), in ena_com_hash_key_allocate() 1066 &rss->hash_key_dma_addr, GFP_KERNEL); in ena_com_hash_key_allocate() 1068 if (unlikely(!rss->hash_key)) in ena_com_hash_key_allocate() 1076 struct ena_rss *rss = &ena_dev->rss; in ena_com_hash_key_destroy() local 1078 if (rss->hash_key) in ena_com_hash_key_destroy() 1079 dma_free_coherent(ena_dev->dmadev, sizeof(*rss->hash_key), rss->hash_key, in ena_com_hash_key_destroy() 1080 rss->hash_key_dma_addr); in ena_com_hash_key_destroy() [all …]
|
H A D | ena_com.h | 371 struct ena_rss rss; member 699 /* ena_com_rss_init - Init RSS 703 * Allocate RSS/RFS resources. 704 * The caller then can configure rss using ena_com_set_hash_function, 711 /* ena_com_rss_destroy - Destroy rss 714 * Free all the RSS/RFS resources. 718 /* ena_com_get_current_hash_function - Get RSS hash function 726 /* ena_com_fill_hash_function - Fill RSS hash function 783 /* ena_com_fill_hash_ctrl - Fill RSS hash control 838 /* ena_com_indirect_table_fill_entry - Fill a single entry in the RSS [all …]
|
/linux/tools/testing/selftests/net/ |
H A D | toeplitz.sh | 4 # extended toeplitz test: test rxhash plus, optionally, either (1) rss mapping 5 # from rxhash to rx queue ('-rss') or (2) rps mapping from rxhash to cpu 12 # [(-rss -irq_prefix <irq-pattern-prefix>)|(-rps <rps_map>)] 31 # Return the number of rxqs among which RSS is configured to spread packets. 32 # This is determined by reading the RSS indirection table using ethtool. 51 # Consider only as many queues as RSS actually uses. We assume that 52 # if RSS_CFG_NUM_RXQS=N, then RSS uses rxqs 0-(N-1). 130 elif [[ "$1" = "-rss" ]]; then 140 [(-rss -irq_prefix <irq-pattern-prefix>)|(-rps <rps_map>)]" 171 # which breaks the PACKET_FANOUT_CPU identification of RSS decisions.
|
/linux/Documentation/networking/ |
H A D | scaling.rst | 17 - RSS: Receive Side Scaling 24 RSS: Receive Side Scaling 33 generally known as “Receive-side Scaling” (RSS). The goal of RSS and 38 The filter used in RSS is typically a hash function over the network 41 implementation of RSS uses a 128-entry indirection table where each entry 47 Some NICs support symmetric RSS hashing where, if the IP (source address, 52 "Symmetric-XOR" and "Symmetric-OR-XOR" are types of RSS algorithms that 67 The result is then fed to the underlying RSS algorithm. 75 RSS Configuration 81 num_queues. A typical RSS configuration would be to have one receive queue [all …]
|
/linux/drivers/net/ethernet/intel/ixgbe/ |
H A D | ixgbe_lib.c | 13 * will also try to cache the proper offsets if RSS/FCoE are enabled along 190 struct ixgbe_ring_feature *rss = &adapter->ring_feature[RING_F_RSS]; in ixgbe_cache_ring_sriov() local 203 /* Allow first FCoE queue to be mapped as RSS */ in ixgbe_cache_ring_sriov() 208 if ((reg_idx & ~vmdq->mask) >= rss->indices) { in ixgbe_cache_ring_sriov() 227 /* Allow first FCoE queue to be mapped as RSS */ in ixgbe_cache_ring_sriov() 232 if ((reg_idx & rss->mask) >= rss->indices) in ixgbe_cache_ring_sriov() 248 * ixgbe_cache_ring_rss - Descriptor ring to register mapping for RSS 251 * Cache the descriptor ring offsets for RSS to the assigned rings. 373 * We do not support DCB, VMDq, and RSS all simultaneously in ixgbe_set_dcb_sriov_queues() 374 * so we will disable RSS since it is the lowest priority in ixgbe_set_dcb_sriov_queues() [all …]
|
/linux/drivers/net/ethernet/hisilicon/hns3/hns3_common/ |
H A D | hclge_comm_rss.c | 114 "failed to set rss tc mode, ret = %d.\n", ret); in hclge_comm_set_rss_tc_mode() 131 /* Set the RSS Hash Key if specififed by the user */ in hclge_comm_set_rss_hash_key() 137 /* Update the shadow RSS key with user specified qids */ in hclge_comm_set_rss_hash_key() 171 "failed to init rss tuple cmd, ret = %d.\n", ret); in hclge_comm_set_rss_tuple() 178 "failed to set rss tuple, ret = %d.\n", ret); in hclge_comm_set_rss_tuple() 222 /* Initialize RSS indirect table */ in hclge_comm_rss_indir_init_cfg() 308 "failed to configure rss table, ret = %d.\n", in hclge_comm_set_rss_indir_table() 341 "failed to configure rss input, ret = %d.\n", ret); in hclge_comm_set_rss_input_tuple() 364 /* Get the RSS Key required by the user */ in hclge_comm_get_rss_hash_info() 415 "failed to configure RSS key, ret = %d.\n", in hclge_comm_set_rss_algo_key()
|
/linux/drivers/net/ethernet/netronome/nfp/ |
H A D | nfp_net_ctrl.h | 61 /* Hash type pre-pended when a RSS hash was computed */ 111 #define NFP_NET_CFG_CTRL_RSS (0x1 << 17) /* RSS (version 1) */ 121 #define NFP_NET_CFG_CTRL_RSS2 (0x1 << 29) /* RSS (version 2) */ 141 #define NFP_NET_CFG_UPDATE_RSS (0x1 << 2) /* RSS config change */ 219 /* RSS capabilities 281 /* RSS configuration (0x0100 - 0x01ac): 283 * %NFP_NET_CFG_RSS_CFG: RSS configuration word 284 * %NFP_NET_CFG_RSS_KEY: RSS "secret" key 285 * %NFP_NET_CFG_RSS_ITBL: RSS indirection table 291 #define NFP_NET_CFG_RSS_IPV4 (1 << 8) /* RSS for IPv4 */ [all …]
|
/linux/drivers/net/ethernet/mellanox/mlx4/ |
H A D | en_resources.c | 41 int is_tx, int rss, int qpn, int cqn, in mlx4_en_fill_qp_context() argument 48 context->flags = cpu_to_be32(7 << 16 | rss << MLX4_RSS_QPC_FLAG_OFFSET); in mlx4_en_fill_qp_context() 51 if (!is_tx && !rss) in mlx4_en_fill_qp_context() 74 if (!rss && in mlx4_en_fill_qp_context() 87 if (!is_tx && !rss && in mlx4_en_fill_qp_context()
|
/linux/drivers/net/ethernet/cavium/thunder/ |
H A D | nicvf_ethtool.c | 566 struct nicvf_rss_info *rss; in nicvf_set_rxfh_fields() local 569 rss = &nic->rss_info; in nicvf_set_rxfh_fields() 572 if (!rss->enable) in nicvf_set_rxfh_fields() 574 "RSS is disabled, hash cannot be set\n"); in nicvf_set_rxfh_fields() 576 netdev_info(nic->netdev, "Set RSS flow type = %d, data = %u\n", in nicvf_set_rxfh_fields() 650 struct nicvf_rss_info *rss = &nic->rss_info; in nicvf_get_rxfh() local 654 for (idx = 0; idx < rss->rss_size; idx++) in nicvf_get_rxfh() 655 rxfh->indir[idx] = rss->ind_tbl[idx]; in nicvf_get_rxfh() 659 memcpy(rxfh->key, rss->key, RSS_HASH_KEY_SIZE * sizeof(u64)); in nicvf_get_rxfh() 671 struct nicvf_rss_info *rss = &nic->rss_info; in nicvf_set_rxfh() local [all …]
|
/linux/drivers/net/ethernet/chelsio/cxgb4vf/ |
H A D | t4vf_hw.c | 1009 * t4vf_get_rss_glb_config - retrieve adapter RSS Global Configuration 1012 * Retrieves global RSS mode and parameters with which we have to live 1013 * and stores them in the @adapter's RSS parameters. 1017 struct rss_params *rss = &adapter->params.rss; in t4vf_get_rss_glb_config() local 1022 * Execute an RSS Global Configuration read command to retrieve in t4vf_get_rss_glb_config() 1023 * our RSS configuration. in t4vf_get_rss_glb_config() 1035 * Transate the big-endian RSS Global Configuration into our in t4vf_get_rss_glb_config() 1036 * cpu-endian format based on the RSS mode. We also do first level in t4vf_get_rss_glb_config() 1040 rss->mode = FW_RSS_GLB_CONFIG_CMD_MODE_G( in t4vf_get_rss_glb_config() 1042 switch (rss->mode) { in t4vf_get_rss_glb_config() [all …]
|
/linux/drivers/net/ethernet/intel/ice/ |
H A D | ice_flow.c | 1270 * @symm: symmetric setting for RSS profiles 1363 * @symm: symmetric setting for RSS profiles 1640 * @symm: symmetric setting for RSS profiles 1723 /* No flow entry data is expected for RSS */ in ice_flow_add_entry() 1980 * ice_flow_set_rss_seg_info - setup packet segments for RSS 2032 * ice_rem_vsi_rss_list - remove VSI from RSS list 2036 * Remove the VSI from all RSS configurations in the list. 2056 * ice_rem_vsi_rss_cfg - remove RSS configurations associated with VSI 2095 * ice_get_rss_hdr_type - get a RSS profile's header type 2096 * @prof: RSS flow profile [all …]
|
/linux/drivers/net/ethernet/mellanox/mlx5/core/ |
H A D | en_fs_ethtool.c | 66 struct mlx5e_rss *rss; member 429 struct mlx5e_rss *rss; in flow_get_tirn() local 434 rss = mlx5e_rx_res_rss_get(priv->rx_res, rss_context); in flow_get_tirn() 435 if (!rss) in flow_get_tirn() 444 err = mlx5e_rss_obtain_tirn(rss, tt, &pkt_merge_param, false, tirn); in flow_get_tirn() 447 eth_rule->rss = rss; in flow_get_tirn() 448 mlx5e_rss_refcnt_inc(eth_rule->rss); in flow_get_tirn() 514 if (eth_rule->rss) in del_ethtool_rule() 515 mlx5e_rss_refcnt_dec(eth_rule->rss); in del_ethtool_rule() 807 if (!eth_rule->rss) in mlx5e_ethtool_get_flow() [all …]
|
/linux/drivers/net/ethernet/intel/igc/ |
H A D | igc_base.h | 68 __le16 pkt_info; /*RSS type, Pkt type*/ 74 __le32 rss; /* RSS Hash */ member
|
/linux/include/uapi/linux/ |
H A D | taskstats.h | 127 /* Accumulated RSS usage in duration of a task, in MBytes-usecs. 128 * The current rss usage is added to this counter every time 133 __u64 coremem; /* accumulated RSS usage in MB-usec */ 139 /* High watermark of RSS and virtual memory usage in duration of 142 __u64 hiwater_rss; /* High-watermark of RSS usage, in KB */
|
/linux/Documentation/networking/device_drivers/ethernet/freescale/ |
H A D | dpaa.rst | 157 ethtool. Also, rx-flow-hash and rx-hashing was added. The addition of RSS 189 By default the DPAA Ethernet driver enables RSS, making use of the 193 When RSS is disabled, all traffic received by a certain interface is 201 certain interface when RSS is not enabled. 203 To implement RSS, the DPAA Ethernet driver allocates an extra set of 212 RSS can be turned off for a certain interface using ethtool, i.e.::
|
/linux/drivers/net/ethernet/qlogic/qed/ |
H A D | qed_l2.c | 485 …"update rss flag %d, rss_mode = %d, update_caps = %d, capabilities = %d, update_ind = %d, update_r… in qed_sp_vport_update_rss() 505 "Configured RSS indirection table [%d entries]:\n", in qed_sp_vport_update_rss() 2375 struct qed_rss_params *rss) in qed_update_vport_rss() argument 2380 rss->update_rss_config = 1; in qed_update_vport_rss() 2381 rss->rss_enable = 1; in qed_update_vport_rss() 2382 rss->update_rss_capabilities = 1; in qed_update_vport_rss() 2383 rss->update_rss_ind_table = 1; in qed_update_vport_rss() 2384 rss->update_rss_key = 1; in qed_update_vport_rss() 2385 rss->rss_caps = input->rss_caps; in qed_update_vport_rss() 2386 memcpy(rss->rss_key, input->rss_key, QED_RSS_KEY_SIZE * sizeof(u32)); in qed_update_vport_rss() [all …]
|
/linux/drivers/net/ethernet/cisco/enic/ |
H A D | vnic_rss.h | 10 /* RSS key array */ 24 /* RSS cpu array */
|
/linux/include/linux/ |
H A D | ethtool.h | 66 ETH_RSS_HASH_TOP_BIT, /* Configurable RSS hash function - Toeplitz */ 67 ETH_RSS_HASH_XOR_BIT, /* Configurable RSS hash function - Xor */ 68 ETH_RSS_HASH_CRC32_BIT, /* Configurable RSS hash function - Crc32 */ 176 * struct ethtool_rxfh_context - a custom RSS context configuration 180 * @hfunc: RSS hash function identifier. One of the %ETH_RSS_HASH_* 818 * struct ethtool_rxfh_param - RXFH (RSS) parameters 819 * @hfunc: Defines the current RSS hash function used by HW (or to be set to). 830 * @rss_context: RSS context identifier. Context 0 is the default for normal 833 * to allocate a new RSS context; on return this field will 854 * @rss_context: RSS context, will only be used if rxfh_per_ctx_fields is [all …]
|
/linux/drivers/net/ethernet/marvell/octeontx2/nic/ |
H A D | otx2_common.c | 291 struct otx2_rss_info *rss = &pfvf->hw.rss_info; in otx2_set_flowkey_cfg() local 303 req->flowkey_cfg = rss->flowkey_cfg; in otx2_set_flowkey_cfg() 325 struct otx2_rss_info *rss = &pfvf->hw.rss_info; in otx2_set_rss_table() local 326 const int index = rss->rss_size * ctx_id; in otx2_set_rss_table() 332 ind_tbl = ind_tbl ?: rss->ind_tbl; in otx2_set_rss_table() 334 for (idx = 0; idx < rss->rss_size; idx++) { in otx2_set_rss_table() 356 aq->rss.rq = ind_tbl[idx]; in otx2_set_rss_table() 370 struct otx2_rss_info *rss = &pfvf->hw.rss_info; in otx2_set_rss_key() local 371 u64 *key = (u64 *)&rss->key[4]; in otx2_set_rss_key() 383 (u64)(*((u32 *)&rss->key)) << 32); in otx2_set_rss_key() [all …]
|