| /linux/drivers/net/ethernet/mellanox/mlx5/core/en/ |
| H A D | rss.c | 72 struct mlx5e_rss_params_indir indir; member 90 rss->indir.actual_table_size = mlx5e_rqt_size(rss->mdev, num_channels); in mlx5e_rss_params_indir_modify_actual_size() 93 int mlx5e_rss_params_indir_init(struct mlx5e_rss_params_indir *indir, in mlx5e_rss_params_indir_init() argument 96 indir->table = kvmalloc_objs(*indir->table, max_table_size); in mlx5e_rss_params_indir_init() 97 if (!indir->table) in mlx5e_rss_params_indir_init() 100 indir->max_table_size = max_table_size; in mlx5e_rss_params_indir_init() 101 indir->actual_table_size = actual_table_size; in mlx5e_rss_params_indir_init() 106 void mlx5e_rss_params_indir_cleanup(struct mlx5e_rss_params_indir *indir) in mlx5e_rss_params_indir_cleanup() argument 108 kvfree(indir->table); in mlx5e_rss_params_indir_cleanup() 115 if (to->indir.actual_table_size != from->indir.actual_table_size || in mlx5e_rss_copy() [all …]
|
| H A D | rqt.c | 34 void mlx5e_rss_params_indir_init_uniform(struct mlx5e_rss_params_indir *indir, in mlx5e_rss_params_indir_init_uniform() argument 39 for (i = 0; i < indir->actual_table_size; i++) in mlx5e_rss_params_indir_init_uniform() 40 indir->table[i] = i % num_channels; in mlx5e_rss_params_indir_init_uniform() 113 u8 hfunc, struct mlx5e_rss_params_indir *indir) in mlx5e_calc_indir_rqns() argument 117 for (i = 0; i < indir->actual_table_size; i++) { in mlx5e_calc_indir_rqns() 121 ix = mlx5e_bits_invert(ix, ilog2(indir->actual_table_size)); in mlx5e_calc_indir_rqns() 123 ix = indir->table[ix]; in mlx5e_calc_indir_rqns() 140 u8 hfunc, struct mlx5e_rss_params_indir *indir) in mlx5e_rqt_init_indir() argument 145 rss_rqns = kvmalloc_array(indir->actual_table_size, sizeof(*rss_rqns), GFP_KERNEL); in mlx5e_rqt_init_indir() 150 rss_vhca_ids = kvmalloc_array(indir->actual_table_size, sizeof(*rss_vhca_ids), in mlx5e_rqt_init_indir() [all …]
|
| H A D | rqt.h | 19 void mlx5e_rss_params_indir_init_uniform(struct mlx5e_rss_params_indir *indir, 32 u8 hfunc, struct mlx5e_rss_params_indir *indir); 45 u8 hfunc, struct mlx5e_rss_params_indir *indir);
|
| H A D | rx_res.c | 220 u32 *indir, u8 *key, u8 *hfunc, bool *symmetric) in mlx5e_rx_res_rss_get_rxfh() argument 229 mlx5e_rss_get_rxfh(rss, indir, key, hfunc, symmetric); in mlx5e_rx_res_rss_get_rxfh() 233 const u32 *indir, const u8 *key, const u8 *hfunc, in mlx5e_rx_res_rss_set_rxfh() argument 246 return mlx5e_rss_set_rxfh(rss, indir, key, hfunc, symmetric, in mlx5e_rx_res_rss_set_rxfh()
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/esw/ |
| H A D | indir_table.c | 49 struct mlx5_esw_indir_table *indir = kvzalloc_obj(*indir); in mlx5_esw_indir_table_init() local 51 if (!indir) in mlx5_esw_indir_table_init() 54 mutex_init(&indir->lock); in mlx5_esw_indir_table_init() 55 hash_init(indir->table); in mlx5_esw_indir_table_init() 56 return indir; in mlx5_esw_indir_table_init() 60 mlx5_esw_indir_table_destroy(struct mlx5_esw_indir_table *indir) in mlx5_esw_indir_table_destroy() argument 62 mutex_destroy(&indir->lock); in mlx5_esw_indir_table_destroy() 63 kvfree(indir); in mlx5_esw_indir_table_destroy() 293 hash_add(esw->fdb_table.offloads.indir->table, &e->hlist, in mlx5_esw_indir_table_entry_create() 316 hash_for_each_possible(esw->fdb_table.offloads.indir->table, e, hlist, key) in mlx5_esw_indir_table_entry_lookup() [all …]
|
| H A D | indir_table.h | 12 mlx5_esw_indir_table_destroy(struct mlx5_esw_indir_table *indir); 38 mlx5_esw_indir_table_destroy(struct mlx5_esw_indir_table *indir) in mlx5_esw_indir_table_destroy() argument
|
| /linux/drivers/net/ethernet/sfc/ |
| H A D | ethtool_common.c | 1177 if (rxfh->indir) in efx_ethtool_get_rxfh() 1178 memcpy(rxfh->indir, efx->rss_context.rx_indir_table, in efx_ethtool_get_rxfh() 1193 const u32 *indir = rxfh->indir; in efx_ethtool_modify_rxfh_context() local 1212 if (!indir) in efx_ethtool_modify_rxfh_context() 1213 indir = ethtool_rxfh_context_indir(ctx); in efx_ethtool_modify_rxfh_context() 1215 return efx->type->rx_push_rss_context_config(efx, priv, indir, key, in efx_ethtool_modify_rxfh_context() 1236 if (!rxfh->indir) in efx_ethtool_create_rxfh_context() 1272 u32 *indir = rxfh->indir; in efx_ethtool_set_rxfh() local 1284 if (!indir && !key) in efx_ethtool_set_rxfh() 1289 if (!indir) in efx_ethtool_set_rxfh() [all …]
|
| H A D | rx_common.h | 89 void efx_set_default_rx_indir_table(struct efx_nic *efx, u32 *indir);
|
| /linux/tools/testing/selftests/drivers/net/hw/ |
| H A D | toeplitz.c | 546 if (rsp->_count.indir > RSS_MAX_INDIR) in read_rss_dev_info_ynl() 548 rsp->_count.indir, RSS_MAX_INDIR); in read_rss_dev_info_ynl() 551 if (rsp->_count.indir) { in read_rss_dev_info_ynl() 552 memcpy(rss_indir_tbl, rsp->indir, in read_rss_dev_info_ynl() 553 rsp->_count.indir * sizeof(rss_indir_tbl[0])); in read_rss_dev_info_ynl() 554 rss_indir_tbl_size = rsp->_count.indir; in read_rss_dev_info_ynl()
|
| /linux/drivers/net/ethernet/hisilicon/hns3/hns3_common/ |
| H A D | hclge_comm_rss.c | 277 struct hclge_comm_hw *hw, const u16 *indir) in hclge_comm_set_rss_indir_table() argument 301 qid = indir[i * HCLGE_COMM_RSS_CFG_TBL_SIZE + j]; in hclge_comm_set_rss_indir_table() 371 u32 *indir, u16 rss_ind_tbl_size) in hclge_comm_get_rss_indir_tbl() argument 375 if (!indir) in hclge_comm_get_rss_indir_tbl() 379 indir[i] = rss_cfg->rss_indirection_tbl[i]; in hclge_comm_get_rss_indir_tbl()
|
| H A D | hclge_comm_rss.h | 107 u32 *indir, u16 rss_ind_tbl_size); 118 struct hclge_comm_hw *hw, const u16 *indir);
|
| /linux/drivers/net/ethernet/hisilicon/hns/ |
| H A D | hns_ae_adapt.c | 880 static int hns_ae_get_rss(struct hnae_handle *handle, u32 *indir, u8 *key, in hns_ae_get_rss() argument 894 if (indir) in hns_ae_get_rss() 895 memcpy(indir, ppe_cb->rss_indir_table, in hns_ae_get_rss() 896 HNS_PPEV2_RSS_IND_TBL_SIZE * sizeof(*indir)); in hns_ae_get_rss() 901 static int hns_ae_set_rss(struct hnae_handle *handle, const u32 *indir, in hns_ae_set_rss() argument 912 if (indir) { in hns_ae_set_rss() 914 memcpy(ppe_cb->rss_indir_table, indir, in hns_ae_set_rss() 915 HNS_PPEV2_RSS_IND_TBL_SIZE * sizeof(*indir)); in hns_ae_set_rss()
|
| /linux/drivers/net/ethernet/marvell/octeontx2/nic/ |
| H A D | otx2_ethtool.c | 835 ind_tbl = rxfh->indir; in otx2_create_rxfh() 862 if (rxfh->indir) in otx2_modify_rxfh() 863 otx2_set_rss_table(pfvf, rxfh->rss_context, rxfh->indir); in otx2_modify_rxfh() 909 if (rxfh->indir) { in otx2_set_rxfh() 911 rss->ind_tbl[idx] = rxfh->indir[idx]; in otx2_set_rxfh() 924 u32 *indir = rxfh->indir; in otx2_get_rxfh() local 930 if (!indir) in otx2_get_rxfh() 936 indir[idx] = ethtool_rxfh_indir_default(idx, rx_queues); in otx2_get_rxfh() 944 indir[idx] = rss->ind_tbl[idx]; in otx2_get_rxfh()
|
| /linux/drivers/net/ethernet/marvell/mvpp2/ |
| H A D | mvpp2_cls.c | 1488 mvpp22_rxfh_indir(port, table->indir[i])); in mvpp22_rss_fill_table() 1587 const u32 *indir) in mvpp22_port_rss_ctx_indir_set() argument 1596 memcpy(rss_table->indir, indir, in mvpp22_port_rss_ctx_indir_set() 1597 MVPP22_RSS_TABLE_ENTRIES * sizeof(rss_table->indir[0])); in mvpp22_port_rss_ctx_indir_set() 1605 u32 *indir) in mvpp22_port_rss_ctx_indir_get() argument 1614 memcpy(indir, rss_table->indir, in mvpp22_port_rss_ctx_indir_get() 1615 MVPP22_RSS_TABLE_ENTRIES * sizeof(rss_table->indir[0])); in mvpp22_port_rss_ctx_indir_get() 1726 table->indir[i] = ethtool_rxfh_indir_default(i, port->nrxqs); in mvpp22_port_rss_init()
|
| H A D | mvpp2_cls.h | 271 const u32 *indir); 273 u32 *indir);
|
| /linux/drivers/net/ethernet/sfc/siena/ |
| H A D | ethtool_common.c | 1165 if (rxfh->indir) in efx_siena_ethtool_get_rxfh() 1166 memcpy(rxfh->indir, efx->rss_context.rx_indir_table, in efx_siena_ethtool_get_rxfh() 1179 u32 *indir = rxfh->indir; in efx_siena_ethtool_set_rxfh() local 1187 if (!indir && !key) in efx_siena_ethtool_set_rxfh() 1192 if (!indir) in efx_siena_ethtool_set_rxfh() 1193 indir = efx->rss_context.rx_indir_table; in efx_siena_ethtool_set_rxfh() 1195 return efx->type->rx_push_rss_config(efx, true, indir, key); in efx_siena_ethtool_set_rxfh()
|
| /linux/drivers/net/ethernet/google/gve/ |
| H A D | gve_ethtool.c | 905 if (rxfh->indir) { in gve_get_rss_config_cache() 907 memcpy(rxfh->indir, rss_config->hash_lut, in gve_get_rss_config_cache() 908 priv->rss_lut_size * sizeof(*rxfh->indir)); in gve_get_rss_config_cache() 935 if (rxfh->indir) in gve_set_rss_config_cache() 936 memcpy(rss_config->hash_lut, rxfh->indir, in gve_set_rss_config_cache() 937 priv->rss_lut_size * sizeof(*rxfh->indir)); in gve_set_rss_config_cache()
|
| /linux/drivers/net/ethernet/huawei/hinic/ |
| H A D | hinic_ethtool.c | 1061 const u32 *indir, const u8 *key) in __set_rss_rxfh() argument 1066 if (indir) { in __set_rss_rxfh() 1075 memcpy(nic_dev->rss_indir_user, indir, in __set_rss_rxfh() 1079 nic_dev->rss_tmpl_idx, indir); in __set_rss_rxfh() 1129 if (rxfh->indir) { in hinic_get_rxfh() 1132 rxfh->indir); in hinic_get_rxfh() 1170 err = __set_rss_rxfh(netdev, rxfh->indir, rxfh->key); in hinic_set_rxfh()
|
| /linux/drivers/net/ethernet/intel/iavf/ |
| H A D | iavf_ethtool.c | 1798 if (rxfh->indir) in iavf_get_rxfh() 1801 rxfh->indir[i] = (u32)adapter->rss_lut[i]; in iavf_get_rxfh() 1839 if (!rxfh->key && !rxfh->indir) in iavf_set_rxfh() 1845 if (rxfh->indir) { in iavf_set_rxfh() 1848 adapter->rss_lut[i] = (u8)(rxfh->indir[i]); in iavf_set_rxfh()
|
| /linux/drivers/net/ethernet/sfc/falcon/ |
| H A D | ethtool.c | 1271 if (rxfh->indir) in ef4_ethtool_get_rxfh() 1272 memcpy(rxfh->indir, efx->rx_indir_table, in ef4_ethtool_get_rxfh() 1288 if (!rxfh->indir) in ef4_ethtool_set_rxfh() 1291 return efx->type->rx_push_rss_config(efx, true, rxfh->indir); in ef4_ethtool_set_rxfh()
|
| /linux/drivers/net/ethernet/mellanox/mlx4/ |
| H A D | en_ethtool.c | 1253 if (!rxfh->indir) in mlx4_en_get_rxfh() 1255 rxfh->indir[i] = i % rss_rings; in mlx4_en_get_rxfh() 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() 1307 if (rxfh->indir) in mlx4_en_set_rxfh()
|
| /linux/drivers/net/ethernet/intel/idpf/ |
| H A D | idpf_ethtool.c | 445 if (rxfh->indir) { in idpf_get_rxfh() 447 rxfh->indir[i] = rxhash_ena ? rss_data->rss_lut[i] : 0; in idpf_get_rxfh() 497 if (rxfh->indir) { in idpf_set_rxfh() 499 rss_data->rss_lut[lut] = rxfh->indir[lut]; in idpf_set_rxfh()
|
| /linux/drivers/net/hyperv/ |
| H A D | netvsc_drv.c | 1723 if (rxfh->indir) { in netvsc_get_rxfh() 1725 rxfh->indir[i] = ndc->rx_table[i]; in netvsc_get_rxfh() 1755 if (rxfh->indir) { in netvsc_set_rxfh() 1757 if (rxfh->indir[i] >= ndev->num_chn) in netvsc_set_rxfh() 1761 ndc->rx_table[i] = rxfh->indir[i]; in netvsc_set_rxfh() 1765 if (!rxfh->indir) in netvsc_set_rxfh()
|
| /linux/drivers/net/ethernet/intel/igc/ |
| H A D | igc_ethtool.c | 1497 if (!rxfh->indir) in igc_ethtool_get_rxfh() 1500 rxfh->indir[i] = adapter->rss_indir_tbl[i]; in igc_ethtool_get_rxfh() 1518 if (!rxfh->indir) in igc_ethtool_set_rxfh() 1525 if (rxfh->indir[i] >= num_queues) in igc_ethtool_set_rxfh() 1529 adapter->rss_indir_tbl[i] = rxfh->indir[i]; in igc_ethtool_set_rxfh()
|
| /linux/drivers/net/ethernet/freescale/enetc/ |
| H A D | enetc_ethtool.c | 986 if (rxfh->indir) in enetc_get_rxfh() 987 err = si->ops->get_rss_table(si, rxfh->indir, si->num_rss); in enetc_get_rxfh() 1024 if (rxfh->indir) in enetc_set_rxfh() 1025 err = si->ops->set_rss_table(si, rxfh->indir, si->num_rss); in enetc_set_rxfh()
|