Home
last modified time | relevance | path

Searched full:rxfh (Results 1 – 25 of 25) sorted by relevance

/linux/drivers/net/ethernet/sfc/
H A Dethtool_common.c1161 struct ethtool_rxfh_param *rxfh) in efx_ethtool_get_rxfh() argument
1166 if (rxfh->rss_context) /* core should never call us for these */ in efx_ethtool_get_rxfh()
1173 rxfh->hfunc = ETH_RSS_HASH_TOP; in efx_ethtool_get_rxfh()
1174 if (rxfh->indir) in efx_ethtool_get_rxfh()
1175 memcpy(rxfh->indir, efx->rss_context.rx_indir_table, in efx_ethtool_get_rxfh()
1177 if (rxfh->key) in efx_ethtool_get_rxfh()
1178 memcpy(rxfh->key, efx->rss_context.rx_hash_key, in efx_ethtool_get_rxfh()
1185 const struct ethtool_rxfh_param *rxfh, in efx_ethtool_modify_rxfh_context() argument
1190 const u32 *indir = rxfh->indir; in efx_ethtool_modify_rxfh_context()
1191 const u8 *key = rxfh->key; in efx_ethtool_modify_rxfh_context()
[all …]
H A Dethtool_common.h48 struct ethtool_rxfh_param *rxfh);
50 struct ethtool_rxfh_param *rxfh,
56 const struct ethtool_rxfh_param *rxfh,
60 const struct ethtool_rxfh_param *rxfh,
/linux/drivers/net/ethernet/marvell/octeontx2/nic/
H A Dotx2_ethtool.c809 const struct ethtool_rxfh_param *rxfh, in otx2_create_rxfh() argument
821 if (rxfh->hfunc && rxfh->hfunc != ETH_RSS_HASH_TOP) in otx2_create_rxfh()
830 ind_tbl = rxfh->indir; in otx2_create_rxfh()
837 otx2_set_rss_table(pfvf, rxfh->rss_context, ind_tbl); in otx2_create_rxfh()
843 const struct ethtool_rxfh_param *rxfh, in otx2_modify_rxfh() argument
848 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in otx2_modify_rxfh()
849 rxfh->hfunc != ETH_RSS_HASH_TOP) in otx2_modify_rxfh()
857 if (rxfh->indir) in otx2_modify_rxfh()
858 otx2_set_rss_table(pfvf, rxfh->rss_context, rxfh->indir); in otx2_modify_rxfh()
881 struct ethtool_rxfh_param *rxfh, in otx2_set_rxfh() argument
[all …]
/linux/drivers/net/ethernet/mellanox/mlx5/core/
H A Den_ethtool.c522 /* If RXFH is configured, changing the channels number is allowed only if in mlx5e_ethtool_set_channels()
533 …"%s: RXFH is configured, block changing channels number that affects RSS table size (new: %d, curr… in mlx5e_ethtool_set_channels()
1485 static int mlx5e_get_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh) in mlx5e_get_rxfh() argument
1491 mlx5e_rx_res_rss_get_rxfh(priv->rx_res, 0, rxfh->indir, rxfh->key, in mlx5e_get_rxfh()
1492 &rxfh->hfunc, &symmetric); in mlx5e_get_rxfh()
1496 rxfh->input_xfrm = RXH_XFRM_SYM_OR_XOR; in mlx5e_get_rxfh()
1502 const struct ethtool_rxfh_param *rxfh, in mlx5e_rxfh_hfunc_check() argument
1509 if (rxfh->hfunc == ETH_RSS_HASH_XOR) { in mlx5e_rxfh_hfunc_check()
1525 struct ethtool_rxfh_param *rxfh, in mlx5e_set_rxfh() argument
1528 bool symmetric = rxfh->input_xfrm == RXH_XFRM_SYM_OR_XOR; in mlx5e_set_rxfh()
[all …]
/linux/drivers/net/ethernet/aquantia/atlantic/
H A Daq_ethtool.c446 struct ethtool_rxfh_param *rxfh) in aq_ethtool_get_rss() argument
454 rxfh->hfunc = ETH_RSS_HASH_TOP; /* Toeplitz */ in aq_ethtool_get_rss()
455 if (rxfh->indir) { in aq_ethtool_get_rss()
457 rxfh->indir[i] = cfg->aq_rss.indirection_table[i]; in aq_ethtool_get_rss()
459 if (rxfh->key) in aq_ethtool_get_rss()
460 memcpy(rxfh->key, cfg->aq_rss.hash_secret_key, in aq_ethtool_get_rss()
467 struct ethtool_rxfh_param *rxfh, in aq_ethtool_set_rss() argument
480 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in aq_ethtool_set_rss()
481 rxfh->hfunc != ETH_RSS_HASH_TOP) in aq_ethtool_set_rss()
484 if (rxfh->indir) in aq_ethtool_set_rss()
[all …]
/linux/drivers/net/ethernet/microchip/
H A Dlan743x_ethtool.c957 struct ethtool_rxfh_param *rxfh) in lan743x_ethtool_get_rxfh() argument
961 if (rxfh->indir) { in lan743x_ethtool_get_rxfh()
970 rxfh->indir[byte_index + 0] = in lan743x_ethtool_get_rxfh()
972 rxfh->indir[byte_index + 1] = in lan743x_ethtool_get_rxfh()
974 rxfh->indir[byte_index + 2] = in lan743x_ethtool_get_rxfh()
976 rxfh->indir[byte_index + 3] = in lan743x_ethtool_get_rxfh()
980 if (rxfh->key) { in lan743x_ethtool_get_rxfh()
990 rxfh->key[byte_index + 0] = in lan743x_ethtool_get_rxfh()
992 rxfh->key[byte_index + 1] = in lan743x_ethtool_get_rxfh()
994 rxfh->key[byte_index + 2] = in lan743x_ethtool_get_rxfh()
[all …]
/linux/drivers/net/ethernet/cisco/enic/
H A Denic_ethtool.c616 struct ethtool_rxfh_param *rxfh) in enic_get_rxfh() argument
620 if (rxfh->key) in enic_get_rxfh()
621 memcpy(rxfh->key, enic->rss_key, ENIC_RSS_LEN); in enic_get_rxfh()
623 rxfh->hfunc = ETH_RSS_HASH_TOP; in enic_get_rxfh()
629 struct ethtool_rxfh_param *rxfh, in enic_set_rxfh() argument
634 if (rxfh->indir || in enic_set_rxfh()
635 (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in enic_set_rxfh()
636 rxfh->hfunc != ETH_RSS_HASH_TOP)) in enic_set_rxfh()
639 if (rxfh->key) in enic_set_rxfh()
640 memcpy(enic->rss_key, rxfh->key, ENIC_RSS_LEN); in enic_set_rxfh()
/linux/net/ethtool/
H A Dcommon.c713 struct ethtool_rxfh_param rxfh = {}; in ethtool_get_max_rxfh_channel()
734 rxfh.indir = kcalloc(dev_size, sizeof(rxfh.indir[0]), GFP_USER); in ethtool_get_max_rxfh_channel()
735 if (!rxfh.indir) in ethtool_get_max_rxfh_channel()
739 ret = dev->ethtool_ops->get_rxfh(dev, &rxfh); in ethtool_get_max_rxfh_channel()
747 current_max = max(current_max, rxfh.indir[dev_size]); in ethtool_check_max_channel()
750 kfree(rxfh.indir); in ethtool_check_max_channel()
874 int ethtool_rxfh_config_is_sym(u64 rxfh) in ethtool_rxfh_config_is_sym()
878 sym = rxfh == (rxfh
705 struct ethtool_rxfh_param rxfh = {}; ethtool_get_max_rxfh_channel() local
866 ethtool_rxfh_config_is_sym(u64 rxfh) ethtool_rxfh_config_is_sym() argument
[all...]
/linux/drivers/net/ethernet/hisilicon/hns/
H A Dhns_ethtool.c1188 hns_get_rss(struct net_device *netdev, struct ethtool_rxfh_param *rxfh) in hns_get_rss() argument
1201 if (!rxfh->indir) in hns_get_rss()
1205 rxfh->indir, rxfh->key, &rxfh->hfunc); in hns_get_rss()
1209 hns_set_rss(struct net_device *netdev, struct ethtool_rxfh_param *rxfh, in hns_set_rss() argument
1223 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in hns_set_rss()
1224 rxfh->hfunc != ETH_RSS_HASH_TOP) { in hns_set_rss()
1230 rxfh->indir, rxfh->key, rxfh->hfunc); in hns_set_rss()
/linux/drivers/net/ethernet/sfc/siena/
H A Dethtool_common.c1152 struct ethtool_rxfh_param *rxfh) in efx_siena_ethtool_get_rxfh() argument
1161 rxfh->hfunc = ETH_RSS_HASH_TOP; in efx_siena_ethtool_get_rxfh()
1162 if (rxfh->indir) in efx_siena_ethtool_get_rxfh()
1163 memcpy(rxfh->indir, efx->rss_context.rx_indir_table, in efx_siena_ethtool_get_rxfh()
1165 if (rxfh->key) in efx_siena_ethtool_get_rxfh()
1166 memcpy(rxfh->key, efx->rss_context.rx_hash_key, in efx_siena_ethtool_get_rxfh()
1172 struct ethtool_rxfh_param *rxfh, in efx_siena_ethtool_set_rxfh() argument
1176 u32 *indir = rxfh->indir; in efx_siena_ethtool_set_rxfh()
1177 u8 *key = rxfh->key; in efx_siena_ethtool_set_rxfh()
1180 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in efx_siena_ethtool_set_rxfh()
[all …]
H A Dethtool_common.h45 struct ethtool_rxfh_param *rxfh);
47 struct ethtool_rxfh_param *rxfh,
/linux/drivers/net/ethernet/emulex/benet/
H A Dbe_ethtool.c1268 struct ethtool_rxfh_param *rxfh) in be_get_rxfh() argument
1274 if (rxfh->indir) { in be_get_rxfh()
1276 rxfh->indir[i] = rss->rss_queue[i]; in be_get_rxfh()
1279 if (rxfh->key) in be_get_rxfh()
1280 memcpy(rxfh->key, rss->rss_hkey, RSS_HASH_KEY_LEN); in be_get_rxfh()
1282 rxfh->hfunc = ETH_RSS_HASH_TOP; in be_get_rxfh()
1288 struct ethtool_rxfh_param *rxfh, in be_set_rxfh() argument
1293 u8 *hkey = rxfh->key; in be_set_rxfh()
1297 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in be_set_rxfh()
1298 rxfh->hfunc != ETH_RSS_HASH_TOP) in be_set_rxfh()
[all …]
/linux/drivers/net/ethernet/huawei/hinic/
H A Dhinic_ethtool.c1123 struct ethtool_rxfh_param *rxfh) in hinic_get_rxfh() argument
1138 rxfh->hfunc = hash_engine_type ? ETH_RSS_HASH_TOP : ETH_RSS_HASH_XOR; in hinic_get_rxfh()
1140 if (rxfh->indir) { in hinic_get_rxfh()
1143 rxfh->indir); in hinic_get_rxfh()
1148 if (rxfh->key) in hinic_get_rxfh()
1151 rxfh->key); in hinic_get_rxfh()
1157 struct ethtool_rxfh_param *rxfh, in hinic_set_rxfh() argument
1166 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE) { in hinic_set_rxfh()
1167 if (rxfh->hfunc != ETH_RSS_HASH_TOP && in hinic_set_rxfh()
1168 rxfh->hfunc != ETH_RSS_HASH_XOR) in hinic_set_rxfh()
[all …]
/linux/drivers/net/ethernet/sfc/falcon/
H A Dethtool.c1263 struct ethtool_rxfh_param *rxfh) in ef4_ethtool_get_rxfh() argument
1267 rxfh->hfunc = ETH_RSS_HASH_TOP; in ef4_ethtool_get_rxfh()
1268 if (rxfh->indir) in ef4_ethtool_get_rxfh()
1269 memcpy(rxfh->indir, efx->rx_indir_table, in ef4_ethtool_get_rxfh()
1275 struct ethtool_rxfh_param *rxfh, in ef4_ethtool_set_rxfh() argument
1281 if (rxfh->key || in ef4_ethtool_set_rxfh()
1282 (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in ef4_ethtool_set_rxfh()
1283 rxfh->hfunc != ETH_RSS_HASH_TOP)) in ef4_ethtool_set_rxfh()
1285 if (!rxfh->indir) in ef4_ethtool_set_rxfh()
1288 return efx->type->rx_push_rss_config(efx, true, rxfh->indir); in ef4_ethtool_set_rxfh()
/linux/drivers/net/ethernet/qlogic/qede/
H A Dqede_ethtool.c1370 struct ethtool_rxfh_param *rxfh) in qede_get_rxfh() argument
1375 rxfh->hfunc = ETH_RSS_HASH_TOP; in qede_get_rxfh()
1377 if (!rxfh->indir) in qede_get_rxfh()
1381 rxfh->indir[i] = edev->rss_ind_table[i]; in qede_get_rxfh()
1383 if (rxfh->key) in qede_get_rxfh()
1384 memcpy(rxfh->key, edev->rss_key, qede_get_rxfh_key_size(dev)); in qede_get_rxfh()
1390 struct ethtool_rxfh_param *rxfh, in qede_set_rxfh() argument
1403 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in qede_set_rxfh()
1404 rxfh->hfunc != ETH_RSS_HASH_TOP) in qede_set_rxfh()
1407 if (!rxfh->indir && !rxfh->key) in qede_set_rxfh()
[all …]
/linux/drivers/net/ethernet/intel/igc/
H A Digc_ethtool.c1491 struct ethtool_rxfh_param *rxfh) in igc_ethtool_get_rxfh() argument
1496 rxfh->hfunc = ETH_RSS_HASH_TOP; in igc_ethtool_get_rxfh()
1497 if (!rxfh->indir) in igc_ethtool_get_rxfh()
1500 rxfh->indir[i] = adapter->rss_indir_tbl[i]; in igc_ethtool_get_rxfh()
1506 struct ethtool_rxfh_param *rxfh, in igc_ethtool_set_rxfh() argument
1514 if (rxfh->key || in igc_ethtool_set_rxfh()
1515 (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in igc_ethtool_set_rxfh()
1516 rxfh->hfunc != ETH_RSS_HASH_TOP)) in igc_ethtool_set_rxfh()
1518 if (!rxfh->indir) in igc_ethtool_set_rxfh()
1525 if (rxfh->indir[i] >= num_queues) in igc_ethtool_set_rxfh()
[all …]
/linux/include/linux/
H A Dethtool.h818 * struct ethtool_rxfh_param - RXFH (RSS) parameters
851 * struct ethtool_rxfh_fields - Rx Flow Hashing (RXFH) header field config
1014 * However, if @rxfh.indir is set to %NULL, the driver must update the
1016 * use; similarly, if @rxfh.key is %NULL, @rxfh.hfunc is
1017 * %ETH_RSS_HASH_NO_CHANGE, or @rxfh.input_xfrm is %RXH_XFRM_NO_CHANGE,
1201 const struct ethtool_rxfh_param *rxfh,
1205 const struct ethtool_rxfh_param *rxfh,
/linux/drivers/net/ethernet/chelsio/cxgb4/
H A Dcxgb4_ethtool.c1587 struct ethtool_rxfh_param *rxfh) in get_rss_table() argument
1592 rxfh->hfunc = ETH_RSS_HASH_TOP; in get_rss_table()
1593 if (!rxfh->indir) in get_rss_table()
1596 rxfh->indir[n] = pi->rss[n]; in get_rss_table()
1601 struct ethtool_rxfh_param *rxfh, in set_rss_table() argument
1610 if (rxfh->key || in set_rss_table()
1611 (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in set_rss_table()
1612 rxfh->hfunc != ETH_RSS_HASH_TOP)) in set_rss_table()
1614 if (!rxfh->indir) in set_rss_table()
1620 pi->rss[i] = rxfh->indir[i]; in set_rss_table()
/linux/drivers/net/ethernet/google/gve/
H A Dgve_adminq.h651 int gve_adminq_configure_rss(struct gve_priv *priv, struct ethtool_rxfh_param *rxfh);
652 int gve_adminq_query_rss_config(struct gve_priv *priv, struct ethtool_rxfh_param *rxfh);
H A Dgve_main.c1786 struct ethtool_rxfh_param rxfh = {0}; in gve_init_rss_config() local
1798 rxfh.hfunc = ETH_RSS_HASH_TOP; in gve_init_rss_config()
1800 return gve_adminq_configure_rss(priv, &rxfh); in gve_init_rss_config()
/linux/drivers/net/ethernet/intel/igb/
H A Digb_ethtool.c3273 struct ethtool_rxfh_param *rxfh) in igb_get_rxfh() argument
3278 rxfh->hfunc = ETH_RSS_HASH_TOP; in igb_get_rxfh()
3279 if (!rxfh->indir) in igb_get_rxfh()
3282 rxfh->indir[i] = adapter->rss_indir_tbl[i]; in igb_get_rxfh()
3323 struct ethtool_rxfh_param *rxfh, in igb_set_rxfh() argument
3332 if (rxfh->key || in igb_set_rxfh()
3333 (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in igb_set_rxfh()
3334 rxfh->hfunc != ETH_RSS_HASH_TOP)) in igb_set_rxfh()
3336 if (!rxfh->indir) in igb_set_rxfh()
3353 if (rxfh->indir[i] >= num_queues) in igb_set_rxfh()
[all …]
/linux/drivers/net/ethernet/intel/i40e/
H A Di40e_ethtool.c5112 * @rxfh: pointer to param struct (indir, key, hfunc)
5118 struct ethtool_rxfh_param *rxfh) in i40e_get_rxfh() argument
5126 rxfh->hfunc = ETH_RSS_HASH_TOP; in i40e_get_rxfh()
5128 if (!rxfh->indir) in i40e_get_rxfh()
5131 seed = rxfh->key; in i40e_get_rxfh()
5139 rxfh->indir[i] = (u32)(lut[i]); in i40e_get_rxfh()
5150 * @rxfh: pointer to param struct (indir, key, hfunc)
5157 struct ethtool_rxfh_param *rxfh, in i40e_set_rxfh() argument
5166 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in i40e_set_rxfh()
5167 rxfh->hfunc != ETH_RSS_HASH_TOP) in i40e_set_rxfh()
[all …]
/linux/drivers/net/
H A Dvirtio_net.c5585 struct ethtool_rxfh_param *rxfh) in virtnet_get_rxfh() argument
5590 if (rxfh->indir) { in virtnet_get_rxfh()
5592 rxfh->indir[i] = le16_to_cpu(vi->rss_hdr->indirection_table[i]); in virtnet_get_rxfh()
5595 if (rxfh->key) in virtnet_get_rxfh()
5596 memcpy(rxfh->key, vi->rss_hash_key_data, vi->rss_key_size); in virtnet_get_rxfh()
5598 rxfh->hfunc = ETH_RSS_HASH_TOP; in virtnet_get_rxfh()
5604 struct ethtool_rxfh_param *rxfh, in virtnet_set_rxfh() argument
5611 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in virtnet_set_rxfh()
5612 rxfh->hfunc != ETH_RSS_HASH_TOP) in virtnet_set_rxfh()
5615 if (rxfh->indir) { in virtnet_set_rxfh()
[all …]
/linux/Documentation/networking/
H A Dscaling.rst90 commands (--show-rxfh-indir and --set-rxfh-indir). Modifying the
/linux/drivers/net/ethernet/broadcom/
H A Dtg3.c12746 static int tg3_get_rxfh(struct net_device *dev, struct ethtool_rxfh_param *rxfh) in tg3_get_rxfh() argument
12751 rxfh->hfunc = ETH_RSS_HASH_TOP; in tg3_get_rxfh()
12752 if (!rxfh->indir) in tg3_get_rxfh()
12756 rxfh->indir[i] = tp->rss_ind_tbl[i]; in tg3_get_rxfh()
12761 static int tg3_set_rxfh(struct net_device *dev, struct ethtool_rxfh_param *rxfh, in tg3_set_rxfh() argument
12770 if (rxfh->key || in tg3_set_rxfh()
12771 (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in tg3_set_rxfh()
12772 rxfh->hfunc != ETH_RSS_HASH_TOP)) in tg3_set_rxfh()
12775 if (!rxfh->indir) in tg3_set_rxfh()
12779 tp->rss_ind_tbl[i] = rxfh->indir[i]; in tg3_set_rxfh()