From: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
To: intel-wired-lan@lists.osuosl.org
Cc: madhu.chittim@intel.com,
Pavan Kumar Linga <pavan.kumar.linga@intel.com>,
Anton Nadezhdin <anton.nadezhdin@intel.com>
Subject: [Intel-wired-lan] [PATCH net-next v7 6/9] idpf: add rss_data field to RSS function parameters
Date: Thu, 21 Aug 2025 23:32:12 -0700 [thread overview]
Message-ID: <20250822063215.3911-7-pavan.kumar.linga@intel.com> (raw)
In-Reply-To: <20250822063215.3911-1-pavan.kumar.linga@intel.com>
Retrieve rss_data field of vport just once and pass it to RSS related
functions instead of retrieving it in each function.
While at it, update s/rss/RSS in the RSS function doc comments.
Reviewed-by: Anton Nadezhdin <anton.nadezhdin@intel.com>
Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
---
drivers/net/ethernet/intel/idpf/idpf.h | 1 +
.../net/ethernet/intel/idpf/idpf_ethtool.c | 2 +-
drivers/net/ethernet/intel/idpf/idpf_lib.c | 16 +++++----
drivers/net/ethernet/intel/idpf/idpf_txrx.c | 34 +++++++------------
drivers/net/ethernet/intel/idpf/idpf_txrx.h | 6 ++--
.../net/ethernet/intel/idpf/idpf_virtchnl.c | 24 ++++++-------
.../net/ethernet/intel/idpf/idpf_virtchnl.h | 8 +++--
7 files changed, 45 insertions(+), 46 deletions(-)
diff --git a/drivers/net/ethernet/intel/idpf/idpf.h b/drivers/net/ethernet/intel/idpf/idpf.h
index 7696c5495cfc..9922dfa01664 100644
--- a/drivers/net/ethernet/intel/idpf/idpf.h
+++ b/drivers/net/ethernet/intel/idpf/idpf.h
@@ -9,6 +9,7 @@ struct idpf_adapter;
struct idpf_vport;
struct idpf_vport_max_q;
struct idpf_q_vec_rsrc;
+struct idpf_rss_data;
#include <net/pkt_sched.h>
#include <linux/aer.h>
diff --git a/drivers/net/ethernet/intel/idpf/idpf_ethtool.c b/drivers/net/ethernet/intel/idpf/idpf_ethtool.c
index ab0b90f034f0..1de71dec9b7e 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_ethtool.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_ethtool.c
@@ -453,7 +453,7 @@ static int idpf_set_rxfh(struct net_device *netdev,
rss_data->rss_lut[lut] = rxfh->indir[lut];
}
- err = idpf_config_rss(vport);
+ err = idpf_config_rss(vport, rss_data);
unlock_mutex:
idpf_vport_ctrl_unlock(netdev);
diff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ethernet/intel/idpf/idpf_lib.c
index 6f4b5fa783e7..2b7465d4d996 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_lib.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c
@@ -994,8 +994,8 @@ static void idpf_vport_rel(struct idpf_vport *vport)
u16 idx = vport->idx;
vport_config = adapter->vport_config[vport->idx];
- idpf_deinit_rss(vport);
rss_data = &vport_config->user_config.rss_data;
+ idpf_deinit_rss(rss_data);
kfree(rss_data->rss_key);
rss_data->rss_key = NULL;
@@ -1399,6 +1399,7 @@ static int idpf_vport_open(struct idpf_vport *vport, bool rtnl)
struct idpf_adapter *adapter = vport->adapter;
struct idpf_vport_config *vport_config;
struct idpf_queue_id_reg_info *chunks;
+ struct idpf_rss_data *rss_data;
int err;
if (np->state != __IDPF_VPORT_DOWN)
@@ -1495,10 +1496,11 @@ static int idpf_vport_open(struct idpf_vport *vport, bool rtnl)
idpf_restore_features(vport);
- if (vport_config->user_config.rss_data.rss_lut)
- err = idpf_config_rss(vport);
+ rss_data = &vport_config->user_config.rss_data;
+ if (rss_data->rss_lut)
+ err = idpf_config_rss(vport, rss_data);
else
- err = idpf_init_rss(vport);
+ err = idpf_init_rss(vport, rss_data);
if (err) {
dev_err(&adapter->pdev->dev, "Failed to initialize RSS for vport %u: %d\n",
vport->vport_id, err);
@@ -1518,7 +1520,7 @@ static int idpf_vport_open(struct idpf_vport *vport, bool rtnl)
return 0;
deinit_rss:
- idpf_deinit_rss(vport);
+ idpf_deinit_rss(rss_data);
disable_vport:
idpf_send_disable_vport_msg(vport);
disable_queues:
@@ -2016,7 +2018,7 @@ int idpf_initiate_soft_reset(struct idpf_vport *vport,
idpf_vport_stop(vport, false);
}
- idpf_deinit_rss(vport);
+ idpf_deinit_rss(&vport_config->user_config.rss_data);
/* We're passing in vport here because we need its wait_queue
* to send a message and it should be getting all the vport
* config data out of the adapter but we need to be careful not
@@ -2215,7 +2217,7 @@ static int idpf_vport_manage_rss_lut(struct idpf_vport *vport)
memset(rss_data->rss_lut, 0, lut_size);
}
- return idpf_config_rss(vport);
+ return idpf_config_rss(vport, rss_data);
}
/**
diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
index 0043d8f68301..62c76e407923 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
@@ -4325,33 +4325,32 @@ void idpf_vport_intr_ena(struct idpf_vport *vport, struct idpf_q_vec_rsrc *rsrc)
/**
* idpf_config_rss - Send virtchnl messages to configure RSS
* @vport: virtual port
+ * @rss_data: pointer to RSS key and lut info
*
* Return 0 on success, negative on failure
*/
-int idpf_config_rss(struct idpf_vport *vport)
+int idpf_config_rss(struct idpf_vport *vport, struct idpf_rss_data *rss_data)
{
int err;
- err = idpf_send_get_set_rss_key_msg(vport, false);
+ err = idpf_send_get_set_rss_key_msg(vport, rss_data, false);
if (err)
return err;
- return idpf_send_get_set_rss_lut_msg(vport, false);
+ return idpf_send_get_set_rss_lut_msg(vport, rss_data, false);
}
/**
* idpf_fill_dflt_rss_lut - Fill the indirection table with the default values
* @vport: virtual port structure
+ * @rss_data: pointer to RSS key and lut info
*/
-static void idpf_fill_dflt_rss_lut(struct idpf_vport *vport)
+static void idpf_fill_dflt_rss_lut(struct idpf_vport *vport,
+ struct idpf_rss_data *rss_data)
{
u16 num_active_rxq = vport->dflt_qv_rsrc.num_rxq;
- struct idpf_adapter *adapter = vport->adapter;
- struct idpf_rss_data *rss_data;
int i;
- rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data;
-
for (i = 0; i < rss_data->rss_lut_size; i++) {
rss_data->rss_lut[i] = i % num_active_rxq;
rss_data->cached_lut[i] = rss_data->rss_lut[i];
@@ -4361,17 +4360,14 @@ static void idpf_fill_dflt_rss_lut(struct idpf_vport *vport)
/**
* idpf_init_rss - Allocate and initialize RSS resources
* @vport: virtual port
+ * @rss_data: pointer to RSS key and lut info
*
* Return 0 on success, negative on failure
*/
-int idpf_init_rss(struct idpf_vport *vport)
+int idpf_init_rss(struct idpf_vport *vport, struct idpf_rss_data *rss_data)
{
- struct idpf_adapter *adapter = vport->adapter;
- struct idpf_rss_data *rss_data;
u32 lut_size;
- rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data;
-
lut_size = rss_data->rss_lut_size * sizeof(u32);
rss_data->rss_lut = kzalloc(lut_size, GFP_KERNEL);
if (!rss_data->rss_lut)
@@ -4386,21 +4382,17 @@ int idpf_init_rss(struct idpf_vport *vport)
}
/* Fill the default RSS lut values */
- idpf_fill_dflt_rss_lut(vport);
+ idpf_fill_dflt_rss_lut(vport, rss_data);
- return idpf_config_rss(vport);
+ return idpf_config_rss(vport, rss_data);
}
/**
* idpf_deinit_rss - Release RSS resources
- * @vport: virtual port
+ * @rss_data: pointer to RSS key and lut info
*/
-void idpf_deinit_rss(struct idpf_vport *vport)
+void idpf_deinit_rss(struct idpf_rss_data *rss_data)
{
- struct idpf_adapter *adapter = vport->adapter;
- struct idpf_rss_data *rss_data;
-
- rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data;
kfree(rss_data->cached_lut);
rss_data->cached_lut = NULL;
kfree(rss_data->rss_lut);
diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.h b/drivers/net/ethernet/intel/idpf/idpf_txrx.h
index 436167974a86..2a413147707d 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.h
+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.h
@@ -1051,9 +1051,9 @@ int idpf_vport_intr_init(struct idpf_vport *vport,
struct idpf_q_vec_rsrc *rsrc);
void idpf_vport_intr_ena(struct idpf_vport *vport,
struct idpf_q_vec_rsrc *rsrc);
-int idpf_config_rss(struct idpf_vport *vport);
-int idpf_init_rss(struct idpf_vport *vport);
-void idpf_deinit_rss(struct idpf_vport *vport);
+int idpf_config_rss(struct idpf_vport *vport, struct idpf_rss_data *rss_data);
+int idpf_init_rss(struct idpf_vport *vport, struct idpf_rss_data *rss_data);
+void idpf_deinit_rss(struct idpf_rss_data *rss_data);
int idpf_rx_bufs_init_all(struct idpf_vport *vport,
struct idpf_q_vec_rsrc *rsrc);
void idpf_tx_buf_hw_update(struct idpf_tx_queue *tx_q, u32 val,
diff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
index 3b48a27df645..0f7c3e0527ac 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
@@ -2412,24 +2412,24 @@ int idpf_send_get_stats_msg(struct idpf_vport *vport)
}
/**
- * idpf_send_get_set_rss_lut_msg - Send virtchnl get or set rss lut message
+ * idpf_send_get_set_rss_lut_msg - Send virtchnl get or set RSS lut message
* @vport: virtual port data structure
- * @get: flag to set or get rss look up table
+ * @rss_data: pointer to RSS key and lut info
+ * @get: flag to set or get RSS look up table
*
* Returns 0 on success, negative on failure.
*/
-int idpf_send_get_set_rss_lut_msg(struct idpf_vport *vport, bool get)
+int idpf_send_get_set_rss_lut_msg(struct idpf_vport *vport,
+ struct idpf_rss_data *rss_data,
+ bool get)
{
struct virtchnl2_rss_lut *recv_rl __free(kfree) = NULL;
struct virtchnl2_rss_lut *rl __free(kfree) = NULL;
struct idpf_vc_xn_params xn_params = {};
- struct idpf_rss_data *rss_data;
int buf_size, lut_buf_size;
ssize_t reply_sz;
int i;
- rss_data =
- &vport->adapter->vport_config[vport->idx]->user_config.rss_data;
buf_size = struct_size(rl, lut, rss_data->rss_lut_size);
rl = kzalloc(buf_size, GFP_KERNEL);
if (!rl)
@@ -2487,24 +2487,24 @@ int idpf_send_get_set_rss_lut_msg(struct idpf_vport *vport, bool get)
}
/**
- * idpf_send_get_set_rss_key_msg - Send virtchnl get or set rss key message
+ * idpf_send_get_set_rss_key_msg - Send virtchnl get or set RSS key message
* @vport: virtual port data structure
- * @get: flag to set or get rss look up table
+ * @rss_data: pointer to RSS key and lut info
+ * @get: flag to set or get RSS look up table
*
* Returns 0 on success, negative on failure
*/
-int idpf_send_get_set_rss_key_msg(struct idpf_vport *vport, bool get)
+int idpf_send_get_set_rss_key_msg(struct idpf_vport *vport,
+ struct idpf_rss_data *rss_data,
+ bool get)
{
struct virtchnl2_rss_key *recv_rk __free(kfree) = NULL;
struct virtchnl2_rss_key *rk __free(kfree) = NULL;
struct idpf_vc_xn_params xn_params = {};
- struct idpf_rss_data *rss_data;
ssize_t reply_sz;
int i, buf_size;
u16 key_size;
- rss_data =
- &vport->adapter->vport_config[vport->idx]->user_config.rss_data;
buf_size = struct_size(rk, key_flex, rss_data->rss_key_size);
rk = kzalloc(buf_size, GFP_KERNEL);
if (!rk)
diff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.h b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.h
index 6deb42429896..0237c239d5e1 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.h
+++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.h
@@ -166,8 +166,12 @@ int idpf_send_get_rx_ptype_msg(struct idpf_vport *vport);
int idpf_send_ena_dis_loopback_msg(struct idpf_vport *vport);
int idpf_send_get_stats_msg(struct idpf_vport *vport);
int idpf_send_set_sriov_vfs_msg(struct idpf_adapter *adapter, u16 num_vfs);
-int idpf_send_get_set_rss_key_msg(struct idpf_vport *vport, bool get);
-int idpf_send_get_set_rss_lut_msg(struct idpf_vport *vport, bool get);
+int idpf_send_get_set_rss_key_msg(struct idpf_vport *vport,
+ struct idpf_rss_data *rss_data,
+ bool get);
+int idpf_send_get_set_rss_lut_msg(struct idpf_vport *vport,
+ struct idpf_rss_data *rss_data,
+ bool get);
void idpf_vc_xn_shutdown(struct idpf_vc_xn_manager *vcxn_mngr);
int idpf_idc_rdma_vc_send_sync(struct iidc_rdma_core_dev_info *cdev_info,
u8 *send_msg, u16 msg_size,
--
2.43.0
next prev parent reply other threads:[~2025-08-22 6:39 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-22 6:32 [Intel-wired-lan] [PATCH iwl-next v7 0/9] refactor IDPF resource access Pavan Kumar Linga
2025-08-22 6:32 ` [Intel-wired-lan] [PATCH net-next v7 1/9] idpf: introduce local idpf structure to store virtchnl queue chunks Pavan Kumar Linga
2025-08-22 9:23 ` Loktionov, Aleksandr
2025-08-22 10:08 ` Loktionov, Aleksandr
2025-09-04 22:31 ` Salin, Samuel
2025-08-22 6:32 ` [Intel-wired-lan] [PATCH net-next v7 2/9] idpf: use existing queue chunk info instead of preparing it Pavan Kumar Linga
2025-09-04 22:32 ` Salin, Samuel
2025-08-22 6:32 ` [Intel-wired-lan] [PATCH net-next v7 3/9] idpf: introduce idpf_q_vec_rsrc struct and move vector resources to it Pavan Kumar Linga
2025-09-04 22:33 ` Salin, Samuel
2025-08-22 6:32 ` [Intel-wired-lan] [PATCH net-next v7 4/9] idpf: move queue resources to idpf_q_vec_rsrc structure Pavan Kumar Linga
2025-09-04 22:33 ` Salin, Samuel
2025-08-22 6:32 ` [Intel-wired-lan] [PATCH net-next v7 5/9] idpf: reshuffle idpf_vport struct members to avoid holes Pavan Kumar Linga
2025-09-04 22:34 ` Salin, Samuel
2025-08-22 6:32 ` Pavan Kumar Linga [this message]
2025-09-04 22:35 ` [Intel-wired-lan] [PATCH net-next v7 6/9] idpf: add rss_data field to RSS function parameters Salin, Samuel
2025-08-22 6:32 ` [Intel-wired-lan] [PATCH net-next v7 7/9] idpf: generalize send virtchnl message API Pavan Kumar Linga
2025-09-04 22:35 ` Salin, Samuel
2025-08-22 6:32 ` [Intel-wired-lan] [PATCH net-next v7 8/9] idpf: avoid calling get_rx_ptypes for each vport Pavan Kumar Linga
2025-09-04 22:35 ` Salin, Samuel
2025-08-22 6:32 ` [Intel-wired-lan] [PATCH net-next v7 9/9] idpf: generalize mailbox API Pavan Kumar Linga
2025-09-04 22:36 ` Salin, Samuel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250822063215.3911-7-pavan.kumar.linga@intel.com \
--to=pavan.kumar.linga@intel.com \
--cc=anton.nadezhdin@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=madhu.chittim@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.