/linux/net/ethtool/ |
H A D | ioctl.c | 1002 struct ethtool_rxfh_param rxfh = {}; in ethtool_set_rxnfc() local 1004 rc = ops->get_rxfh(dev, &rxfh); in ethtool_set_rxnfc() 1012 if ((rxfh.input_xfrm & RXH_XFRM_SYM_XOR) && in ethtool_set_rxnfc() 1098 struct ethtool_rxfh_param rxfh = {}; in ethtool_get_rxfh_indir() local 1105 rxfh.indir_size = dev->ethtool_ops->get_rxfh_indir_size(dev); in ethtool_get_rxfh_indir() 1106 if (rxfh.indir_size == 0) in ethtool_get_rxfh_indir() 1115 &rxfh.indir_size, sizeof(rxfh.indir_size))) in ethtool_get_rxfh_indir() 1122 if (user_size < rxfh.indir_size) in ethtool_get_rxfh_indir() 1125 rxfh.indir = kcalloc(rxfh.indir_size, sizeof(rxfh.indir[0]), GFP_USER); in ethtool_get_rxfh_indir() 1126 if (!rxfh.indir) in ethtool_get_rxfh_indir() [all …]
|
H A D | rss.c | 54 struct ethtool_rxfh_param rxfh = {}; in rss_prepare_get() local 86 rxfh.indir_size = data->indir_size; in rss_prepare_get() 87 rxfh.indir = data->indir_table; in rss_prepare_get() 88 rxfh.key_size = data->hkey_size; in rss_prepare_get() 89 rxfh.key = data->hkey; in rss_prepare_get() 91 ret = ops->get_rxfh(dev, &rxfh); in rss_prepare_get() 95 data->hfunc = rxfh.hfunc; in rss_prepare_get() 96 data->input_xfrm = rxfh.input_xfrm; in rss_prepare_get()
|
H A D | common.c | 640 struct ethtool_rxfh_param rxfh = {}; in ethtool_get_max_rxfh_channel() local 661 rxfh.indir = kcalloc(dev_size, sizeof(rxfh.indir[0]), GFP_USER); in ethtool_get_max_rxfh_channel() 662 if (!rxfh.indir) in ethtool_get_max_rxfh_channel() 665 ret = dev->ethtool_ops->get_rxfh(dev, &rxfh); in ethtool_get_max_rxfh_channel() 672 current_max = max(current_max, rxfh.indir[dev_size]); in ethtool_get_max_rxfh_channel() 675 kfree(rxfh.indir); in ethtool_get_max_rxfh_channel()
|
/linux/drivers/net/ethernet/microsoft/mana/ |
H A D | mana_ethtool.c | 235 struct ethtool_rxfh_param *rxfh) in mana_get_rxfh() argument 240 rxfh->hfunc = ETH_RSS_HASH_TOP; /* Toeplitz */ in mana_get_rxfh() 242 if (rxfh->indir) { in mana_get_rxfh() 244 rxfh->indir[i] = apc->indir_table[i]; in mana_get_rxfh() 247 if (rxfh->key) in mana_get_rxfh() 248 memcpy(rxfh->key, apc->hashkey, MANA_HASH_KEY_SIZE); in mana_get_rxfh() 254 struct ethtool_rxfh_param *rxfh, in mana_set_rxfh() argument 266 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in mana_set_rxfh() 267 rxfh->hfunc != ETH_RSS_HASH_TOP) in mana_set_rxfh() 274 if (rxfh->indir) { in mana_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/sfc/ |
H A D | ethtool_common.h | 48 struct ethtool_rxfh_param *rxfh); 50 struct ethtool_rxfh_param *rxfh, 54 const struct ethtool_rxfh_param *rxfh, 58 const struct ethtool_rxfh_param *rxfh,
|
/linux/drivers/net/ethernet/amd/xgbe/ |
H A D | xgbe-ethtool.c | 527 struct ethtool_rxfh_param *rxfh) in xgbe_get_rxfh() argument 532 if (rxfh->indir) { in xgbe_get_rxfh() 534 rxfh->indir[i] = XGMAC_GET_BITS(pdata->rss_table[i], in xgbe_get_rxfh() 538 if (rxfh->key) in xgbe_get_rxfh() 539 memcpy(rxfh->key, pdata->rss_key, sizeof(pdata->rss_key)); in xgbe_get_rxfh() 541 rxfh->hfunc = ETH_RSS_HASH_TOP; in xgbe_get_rxfh() 547 struct ethtool_rxfh_param *rxfh, in xgbe_set_rxfh() argument 554 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in xgbe_set_rxfh() 555 rxfh->hfunc != ETH_RSS_HASH_TOP) { in xgbe_set_rxfh() 560 if (rxfh->indir) { in xgbe_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/fungible/funeth/ |
H A D | funeth_ethtool.c | 981 struct ethtool_rxfh_param *rxfh) in fun_get_rxfh() argument 988 if (rxfh->indir) in fun_get_rxfh() 989 memcpy(rxfh->indir, fp->indir_table, in fun_get_rxfh() 992 if (rxfh->key) in fun_get_rxfh() 993 memcpy(rxfh->key, fp->rss_key, sizeof(fp->rss_key)); in fun_get_rxfh() 995 rxfh->hfunc = fp->hash_algo == FUN_ETH_RSS_ALG_TOEPLITZ ? in fun_get_rxfh() 1002 struct ethtool_rxfh_param *rxfh, in fun_set_rxfh() argument 1006 const u32 *rss_indir = rxfh->indir ? rxfh->indir : fp->indir_table; in fun_set_rxfh() 1007 const u8 *rss_key = rxfh->key ? rxfh->key : fp->rss_key; in fun_set_rxfh() 1013 if (rxfh->hfunc == ETH_RSS_HASH_NO_CHANGE) in fun_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/aquantia/atlantic/ |
H A D | aq_ethtool.c | 446 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/marvell/octeontx2/nic/ |
H A D | otx2_ethtool.c | 829 struct ethtool_rxfh_param *rxfh, in otx2_set_rxfh() argument 838 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in otx2_set_rxfh() 839 rxfh->hfunc != ETH_RSS_HASH_TOP) in otx2_set_rxfh() 842 if (rxfh->rss_context) in otx2_set_rxfh() 843 rss_context = rxfh->rss_context; in otx2_set_rxfh() 856 if (rxfh->key) { in otx2_set_rxfh() 857 memcpy(rss->key, rxfh->key, sizeof(rss->key)); in otx2_set_rxfh() 860 if (rxfh->rss_delete) in otx2_set_rxfh() 865 rxfh->rss_context = rss_context; in otx2_set_rxfh() 869 if (rxfh->indir) { in otx2_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/cavium/thunder/ |
H A D | nicvf_ethtool.c | 657 struct ethtool_rxfh_param *rxfh) in nicvf_get_rxfh() argument 663 if (rxfh->indir) { in nicvf_get_rxfh() 665 rxfh->indir[idx] = rss->ind_tbl[idx]; in nicvf_get_rxfh() 668 if (rxfh->key) in nicvf_get_rxfh() 669 memcpy(rxfh->key, rss->key, RSS_HASH_KEY_SIZE * sizeof(u64)); in nicvf_get_rxfh() 671 rxfh->hfunc = ETH_RSS_HASH_TOP; in nicvf_get_rxfh() 677 struct ethtool_rxfh_param *rxfh, in nicvf_set_rxfh() argument 684 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in nicvf_set_rxfh() 685 rxfh->hfunc != ETH_RSS_HASH_TOP) in nicvf_set_rxfh() 694 if (rxfh->indir) { in nicvf_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/intel/idpf/ |
H A D | idpf_ethtool.c | 83 struct ethtool_rxfh_param *rxfh) in idpf_get_rxfh() argument 104 rxfh->hfunc = ETH_RSS_HASH_TOP; in idpf_get_rxfh() 106 if (rxfh->key) in idpf_get_rxfh() 107 memcpy(rxfh->key, rss_data->rss_key, rss_data->rss_key_size); in idpf_get_rxfh() 109 if (rxfh->indir) { in idpf_get_rxfh() 111 rxfh->indir[i] = rss_data->rss_lut[i]; in idpf_get_rxfh() 130 struct ethtool_rxfh_param *rxfh, in idpf_set_rxfh() argument 154 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in idpf_set_rxfh() 155 rxfh->hfunc != ETH_RSS_HASH_TOP) { in idpf_set_rxfh() 160 if (rxfh->key) in idpf_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/cisco/enic/ |
H A D | enic_ethtool.c | 654 struct ethtool_rxfh_param *rxfh) in enic_get_rxfh() argument 658 if (rxfh->key) in enic_get_rxfh() 659 memcpy(rxfh->key, enic->rss_key, ENIC_RSS_LEN); in enic_get_rxfh() 661 rxfh->hfunc = ETH_RSS_HASH_TOP; in enic_get_rxfh() 667 struct ethtool_rxfh_param *rxfh, in enic_set_rxfh() argument 672 if (rxfh->indir || in enic_set_rxfh() 673 (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in enic_set_rxfh() 674 rxfh->hfunc != ETH_RSS_HASH_TOP)) in enic_set_rxfh() 677 if (rxfh->key) in enic_set_rxfh() 678 memcpy(enic->rss_key, rxfh->key, ENIC_RSS_LEN); in enic_set_rxfh()
|
/linux/drivers/net/ethernet/intel/ixgbevf/ |
H A D | ethtool.c | 901 struct ethtool_rxfh_param *rxfh) in ixgbevf_get_rxfh() argument 906 rxfh->hfunc = ETH_RSS_HASH_TOP; in ixgbevf_get_rxfh() 909 if (rxfh->key) in ixgbevf_get_rxfh() 910 memcpy(rxfh->key, adapter->rss_key, in ixgbevf_get_rxfh() 913 if (rxfh->indir) { in ixgbevf_get_rxfh() 917 rxfh->indir[i] = adapter->rss_indir_tbl[i]; in ixgbevf_get_rxfh() 923 if (!rxfh->indir && !rxfh->key) in ixgbevf_get_rxfh() 927 if (rxfh->indir) in ixgbevf_get_rxfh() 929 rxfh->indir, in ixgbevf_get_rxfh() 932 if (!err && rxfh->key) in ixgbevf_get_rxfh() [all …]
|
/linux/drivers/net/ethernet/intel/iavf/ |
H A D | iavf_ethtool.c | 1740 struct ethtool_rxfh_param *rxfh) in iavf_get_rxfh() argument 1745 rxfh->hfunc = ETH_RSS_HASH_TOP; in iavf_get_rxfh() 1747 rxfh->input_xfrm |= RXH_XFRM_SYM_XOR; in iavf_get_rxfh() 1749 if (rxfh->key) in iavf_get_rxfh() 1750 memcpy(rxfh->key, adapter->rss_key, adapter->rss_key_size); in iavf_get_rxfh() 1752 if (rxfh->indir) in iavf_get_rxfh() 1755 rxfh->indir[i] = (u32)adapter->rss_lut[i]; in iavf_get_rxfh() 1770 struct ethtool_rxfh_param *rxfh, in iavf_set_rxfh() argument 1777 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in iavf_set_rxfh() 1778 rxfh->hfunc != ETH_RSS_HASH_TOP) in iavf_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/amazon/ena/ |
H A D | ena_ethtool.c | 924 struct ethtool_rxfh_param *rxfh) in ena_get_rxfh() argument 931 rc = ena_indirection_table_get(adapter, rxfh->indir); in ena_get_rxfh() 946 rc = ena_com_get_hash_key(adapter->ena_dev, rxfh->key); in ena_get_rxfh() 963 rxfh->hfunc = func; in ena_get_rxfh() 969 struct ethtool_rxfh_param *rxfh, in ena_set_rxfh() argument 977 if (rxfh->indir) { in ena_set_rxfh() 978 rc = ena_indirection_table_set(adapter, rxfh->indir); in ena_set_rxfh() 983 switch (rxfh->hfunc) { in ena_set_rxfh() 995 rxfh->hfunc); in ena_set_rxfh() 999 if (rxfh->key || func) { in ena_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/sfc/siena/ |
H A D | ethtool_common.h | 45 struct ethtool_rxfh_param *rxfh); 47 struct ethtool_rxfh_param *rxfh,
|
H A D | ethtool_common.c | 1149 struct ethtool_rxfh_param *rxfh) in efx_siena_ethtool_get_rxfh() argument 1158 rxfh->hfunc = ETH_RSS_HASH_TOP; in efx_siena_ethtool_get_rxfh() 1159 if (rxfh->indir) in efx_siena_ethtool_get_rxfh() 1160 memcpy(rxfh->indir, efx->rss_context.rx_indir_table, in efx_siena_ethtool_get_rxfh() 1162 if (rxfh->key) in efx_siena_ethtool_get_rxfh() 1163 memcpy(rxfh->key, efx->rss_context.rx_hash_key, in efx_siena_ethtool_get_rxfh() 1169 struct ethtool_rxfh_param *rxfh, in efx_siena_ethtool_set_rxfh() argument 1173 u32 *indir = rxfh->indir; in efx_siena_ethtool_set_rxfh() 1174 u8 *key = rxfh->key; in efx_siena_ethtool_set_rxfh() 1177 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in efx_siena_ethtool_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/intel/fm10k/ |
H A D | fm10k_ethtool.c | 1061 struct ethtool_rxfh_param *rxfh) in fm10k_get_rssh() argument 1064 u8 *key = rxfh->key; in fm10k_get_rssh() 1067 rxfh->hfunc = ETH_RSS_HASH_TOP; in fm10k_get_rssh() 1069 err = fm10k_get_reta(netdev, rxfh->indir); in fm10k_get_rssh() 1080 struct ethtool_rxfh_param *rxfh, in fm10k_set_rssh() argument 1088 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in fm10k_set_rssh() 1089 rxfh->hfunc != ETH_RSS_HASH_TOP) in fm10k_set_rssh() 1092 err = fm10k_set_reta(netdev, rxfh->indir); in fm10k_set_rssh() 1093 if (err || !rxfh->key) in fm10k_set_rssh() 1096 for (i = 0; i < FM10K_RSSRK_SIZE; i++, rxfh->key += 4) { in fm10k_set_rssh() [all …]
|
/linux/drivers/net/ethernet/pensando/ionic/ |
H A D | ionic_ethtool.c | 878 struct ethtool_rxfh_param *rxfh) in ionic_get_rxfh() argument 883 if (rxfh->indir) { in ionic_get_rxfh() 886 rxfh->indir[i] = lif->rss_ind_tbl[i]; in ionic_get_rxfh() 889 if (rxfh->key) in ionic_get_rxfh() 890 memcpy(rxfh->key, lif->rss_hash_key, IONIC_RSS_HASH_KEY_SIZE); in ionic_get_rxfh() 892 rxfh->hfunc = ETH_RSS_HASH_TOP; in ionic_get_rxfh() 898 struct ethtool_rxfh_param *rxfh, in ionic_set_rxfh() argument 903 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in ionic_set_rxfh() 904 rxfh->hfunc != ETH_RSS_HASH_TOP) in ionic_set_rxfh() 908 rxfh->key, rxfh->indir); in ionic_set_rxfh()
|
/linux/drivers/net/ethernet/emulex/benet/ |
H A D | be_ethtool.c | 1275 struct ethtool_rxfh_param *rxfh) in be_get_rxfh() argument 1281 if (rxfh->indir) { in be_get_rxfh() 1283 rxfh->indir[i] = rss->rss_queue[i]; in be_get_rxfh() 1286 if (rxfh->key) in be_get_rxfh() 1287 memcpy(rxfh->key, rss->rss_hkey, RSS_HASH_KEY_LEN); in be_get_rxfh() 1289 rxfh->hfunc = ETH_RSS_HASH_TOP; in be_get_rxfh() 1295 struct ethtool_rxfh_param *rxfh, in be_set_rxfh() argument 1300 u8 *hkey = rxfh->key; in be_set_rxfh() 1304 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in be_set_rxfh() 1305 rxfh->hfunc != ETH_RSS_HASH_TOP) in be_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/freescale/enetc/ |
H A D | enetc_ethtool.c | 681 struct ethtool_rxfh_param *rxfh) in enetc_get_rxfh() argument 688 rxfh->hfunc = ETH_RSS_HASH_TOP; in enetc_get_rxfh() 691 if (rxfh->key && hw->port) in enetc_get_rxfh() 693 ((u32 *)rxfh->key)[i] = enetc_port_rd(hw, in enetc_get_rxfh() 697 if (rxfh->indir) in enetc_get_rxfh() 698 err = enetc_get_rss_table(priv->si, rxfh->indir, in enetc_get_rxfh() 714 struct ethtool_rxfh_param *rxfh, in enetc_set_rxfh() argument 722 if (rxfh->key && hw->port) in enetc_set_rxfh() 723 enetc_set_rss_key(hw, rxfh->key); in enetc_set_rxfh() 726 if (rxfh->indir) in enetc_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/huawei/hinic/ |
H A D | hinic_ethtool.c | 1140 struct ethtool_rxfh_param *rxfh) in hinic_get_rxfh() argument 1155 rxfh->hfunc = hash_engine_type ? ETH_RSS_HASH_TOP : ETH_RSS_HASH_XOR; in hinic_get_rxfh() 1157 if (rxfh->indir) { in hinic_get_rxfh() 1160 rxfh->indir); in hinic_get_rxfh() 1165 if (rxfh->key) in hinic_get_rxfh() 1168 rxfh->key); in hinic_get_rxfh() 1174 struct ethtool_rxfh_param *rxfh, in hinic_set_rxfh() argument 1183 if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE) { in hinic_set_rxfh() 1184 if (rxfh->hfunc != ETH_RSS_HASH_TOP && in hinic_set_rxfh() 1185 rxfh->hfunc != ETH_RSS_HASH_XOR) in hinic_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/mellanox/mlx4/ |
H A D | en_ethtool.c | 1243 struct ethtool_rxfh_param *rxfh) in mlx4_en_get_rxfh() argument 1253 if (!rxfh->indir) in mlx4_en_get_rxfh() 1255 rxfh->indir[i] = i % rss_rings; in mlx4_en_get_rxfh() 1257 if (rxfh->key) in mlx4_en_get_rxfh() 1258 memcpy(rxfh->key, priv->rss_key, MLX4_EN_RSS_KEY_SIZE); in mlx4_en_get_rxfh() 1259 rxfh->hfunc = priv->rss_hash_fn; in mlx4_en_get_rxfh() 1264 struct ethtool_rxfh_param *rxfh, in mlx4_en_set_rxfh() argument 1279 if (!rxfh->indir) in mlx4_en_set_rxfh() 1281 if (i > 0 && !rxfh->indir[i] && !rss_rings) in mlx4_en_set_rxfh() 1284 if (rxfh->indir[i] != (i % (rss_rings ?: n))) in mlx4_en_set_rxfh() [all …]
|
/linux/drivers/net/ethernet/netronome/nfp/ |
H A D | nfp_net_ethtool.c | 1798 struct ethtool_rxfh_param *rxfh) in nfp_net_get_rxfh() argument 1806 if (rxfh->indir) in nfp_net_get_rxfh() 1808 rxfh->indir[i] = nn->rss_itbl[i]; in nfp_net_get_rxfh() 1809 if (rxfh->key) in nfp_net_get_rxfh() 1810 memcpy(rxfh->key, nn->rss_key, nfp_net_rss_key_sz(nn)); in nfp_net_get_rxfh() 1812 rxfh->hfunc = nn->rss_hfunc; in nfp_net_get_rxfh() 1813 if (rxfh->hfunc >= 1 << ETH_RSS_HASH_FUNCS_COUNT) in nfp_net_get_rxfh() 1814 rxfh->hfunc = ETH_RSS_HASH_UNKNOWN; in nfp_net_get_rxfh() 1820 struct ethtool_rxfh_param *rxfh, in nfp_net_set_rxfh() argument 1827 !(rxfh->hfunc == ETH_RSS_HASH_NO_CHANGE || in nfp_net_set_rxfh() [all …]
|
/linux/drivers/net/vmxnet3/ |
H A D | vmxnet3_ethtool.c | 1139 vmxnet3_get_rss(struct net_device *netdev, struct ethtool_rxfh_param *rxfh) in vmxnet3_get_rss() argument 1145 rxfh->hfunc = ETH_RSS_HASH_TOP; in vmxnet3_get_rss() 1146 if (!rxfh->indir) in vmxnet3_get_rss() 1151 rxfh->indir[n] = rssConf->indTable[n]; in vmxnet3_get_rss() 1157 vmxnet3_set_rss(struct net_device *netdev, struct ethtool_rxfh_param *rxfh, in vmxnet3_set_rss() argument 1166 if (rxfh->key || in vmxnet3_set_rss() 1167 (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && in vmxnet3_set_rss() 1168 rxfh->hfunc != ETH_RSS_HASH_TOP)) in vmxnet3_set_rss() 1170 if (!rxfh->indir) in vmxnet3_set_rss() 1173 rssConf->indTable[i] = rxfh->indir[i]; in vmxnet3_set_rss()
|