From: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
To: intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org,
Michal Swiatkowski <michal.swiatkowski@linux.intel.com>,
Larysa Zaremba <larysa.zaremba@intel.com>,
Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Subject: [PATCH iwl-next v2 04/10] idpf: drop v_idx from q_vector structure
Date: Fri, 11 Sep 2026 14:49:15 +0200 [thread overview]
Message-ID: <20260911124921.2881348-5-michal.swiatkowski@linux.intel.com> (raw)
In-Reply-To: <20260911124921.2881348-1-michal.swiatkowski@linux.intel.com>
Storing another index related to irq in q_vector can be misleading. It
is only used when matching q_vectors with queues. It can be obtained
using 0-based software irq index.
Use irq.index (from q_vector) and get the hardware irq index
(q_vector->v_idx earlier) from irq_info structure.
Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
---
drivers/net/ethernet/intel/idpf/idpf.h | 2 +-
drivers/net/ethernet/intel/idpf/idpf_txrx.c | 4 +---
drivers/net/ethernet/intel/idpf/idpf_txrx.h | 5 +----
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c | 11 +++++++----
4 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/intel/idpf/idpf.h b/drivers/net/ethernet/intel/idpf/idpf.h
index 86e5bb30ecc6..785d551c795d 100644
--- a/drivers/net/ethernet/intel/idpf/idpf.h
+++ b/drivers/net/ethernet/intel/idpf/idpf.h
@@ -301,7 +301,7 @@ struct idpf_fsteer_fltr {
* @q_vectors: array of queue vectors
* @q_vector_idxs: starting index of queue vectors
* @num_q_vectors: number of IRQ vectors allocated
- * @noirq_v_idx: ID of the NOIRQ vector
+ * @noirq_v_idx: software IRQ index used to get hardware vector information
* @noirq_dyn_ctl_ena: value to write to the above to enable it
* @noirq_dyn_ctl: register to enable/disable the vector for NOIRQ queues
* @txq_grps: array of TX queue groups
diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
index c75fc1fc4f64..2a3dd04ebe23 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
@@ -4511,8 +4511,6 @@ static int idpf_vport_intr_init_vec_idx(struct idpf_vport *vport,
for (i = 0; i < rsrc->num_q_vectors; i++) {
struct idpf_q_vector *q_vector = &rsrc->q_vectors[i];
- q_vector->v_idx =
- adapter->irq_info.vectors[rsrc->q_vector_idxs[i]].idx;
q_vector->irq.index = rsrc->q_vector_idxs[i];
q_vector->irq.virq = pci_irq_vector(adapter->pdev,
q_vector->irq.index);
@@ -4520,7 +4518,7 @@ static int idpf_vport_intr_init_vec_idx(struct idpf_vport *vport,
return q_vector->irq.virq;
}
- rsrc->noirq_v_idx = adapter->irq_info.vectors[rsrc->q_vector_idxs[i]].idx;
+ rsrc->noirq_v_idx = rsrc->q_vector_idxs[i];
return 0;
}
diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.h b/drivers/net/ethernet/intel/idpf/idpf_txrx.h
index 57e61936ffda..9a2e3665277f 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.h
+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.h
@@ -377,7 +377,6 @@ struct idpf_intr_reg {
* @rx_itr_value: RX interrupt throttling rate
* @rx_intr_mode: Dynamic ITR or not
* @rx_itr_idx: RX ITR index
- * @v_idx: Vector index
* @irq: kernel and driver irq numbers
*/
struct idpf_q_vector {
@@ -418,15 +417,13 @@ struct idpf_q_vector {
__cacheline_group_end_aligned(read_write);
__cacheline_group_begin_aligned(cold);
- u16 v_idx;
-
struct msi_map irq;
__cacheline_group_end_aligned(cold);
};
libeth_cacheline_set_assert(struct idpf_q_vector, 136,
56 + sizeof(struct napi_struct) +
2 * sizeof(struct dim),
- 8 + sizeof(struct msi_map));
+ sizeof(struct msi_map));
struct idpf_rx_queue_stats {
u64_stats_t packets;
diff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
index 267ac9fa3846..90f3c40c7928 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
@@ -1848,12 +1848,14 @@ idpf_prep_map_unmap_queue_set_vector_msg(u32 vport_id, void *buf,
* idpf_send_map_unmap_queue_set_vector_msg - send virtchnl map or unmap
* queue set vector message
* @qs: set of the queues to map or unmap
+ * @info: interrupts info to map software index to firmware one
* @map: true for map and false for unmap
*
* Return: 0 on success, -errno on failure.
*/
static int
idpf_send_map_unmap_queue_set_vector_msg(const struct idpf_queue_set *qs,
+ const struct idpf_irq_info *info,
bool map)
{
struct virtchnl2_queue_vector *vqv __free(kfree) = NULL;
@@ -1893,7 +1895,7 @@ idpf_send_map_unmap_queue_set_vector_msg(const struct idpf_queue_set *qs,
vec = q->rxq->q_vector;
if (vec) {
- v_idx = vec->v_idx;
+ v_idx = vec->irq.index;
itr_idx = vec->rx_itr_idx;
} else {
v_idx = qs->qv_rsrc->noirq_v_idx;
@@ -1913,7 +1915,7 @@ idpf_send_map_unmap_queue_set_vector_msg(const struct idpf_queue_set *qs,
vec = q->txq->q_vector;
if (vec) {
- v_idx = vec->v_idx;
+ v_idx = vec->irq.index;
itr_idx = vec->tx_itr_idx;
} else {
v_idx = qs->qv_rsrc->noirq_v_idx;
@@ -1925,7 +1927,7 @@ idpf_send_map_unmap_queue_set_vector_msg(const struct idpf_queue_set *qs,
}
vqv[i].queue_id = cpu_to_le32(qid);
- vqv[i].vector_id = cpu_to_le16(v_idx);
+ vqv[i].vector_id = cpu_to_le16(info->vectors[v_idx].idx);
vqv[i].itr_idx = cpu_to_le32(itr_idx);
}
@@ -1989,7 +1991,8 @@ int idpf_send_map_unmap_queue_vector_msg(struct idpf_adapter *adapter,
if (k != num_q)
return -EINVAL;
- return idpf_send_map_unmap_queue_set_vector_msg(qs, map);
+ return idpf_send_map_unmap_queue_set_vector_msg(qs, &adapter->irq_info,
+ map);
}
/**
--
2.49.0
next prev parent reply other threads:[~2026-09-11 13:29 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-11 12:49 [PATCH iwl-next v2 00/10] Interrupts helper in libie Michal Swiatkowski
2026-09-11 12:49 ` [PATCH iwl-next v2 01/10] idpf: store HW vectors information Michal Swiatkowski
2026-09-11 12:49 ` [PATCH iwl-next v2 02/10] idpf: fill q_vector interrupt registers one by one Michal Swiatkowski
2026-09-11 12:49 ` [PATCH iwl-next v2 03/10] idpf: get rid of msix_entries array Michal Swiatkowski
2026-09-11 12:49 ` Michal Swiatkowski [this message]
2026-09-11 12:49 ` [PATCH iwl-next v2 05/10] libie, idpf: move irq code to libie Michal Swiatkowski
2026-09-11 12:49 ` [PATCH iwl-next v2 06/10] libie, idpf: move hardware irq info struct " Michal Swiatkowski
2026-09-11 12:49 ` [PATCH iwl-next v2 07/10] libie, idpf: move parsing alloc vectors command " Michal Swiatkowski
2026-09-11 12:49 ` [PATCH iwl-next v2 08/10] ice: use libie_irq for interrupts managing Michal Swiatkowski
2026-09-11 12:49 ` [PATCH iwl-next v2 09/10] ixd: support for getting lan memory regions Michal Swiatkowski
2026-10-08 15:32 ` R, Bharath
2026-09-11 12:49 ` [PATCH iwl-next v2 10/10] ixd: use interrupt for mailbox communication Michal Swiatkowski
2026-10-08 15:35 ` R, Bharath
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=20260911124921.2881348-5-michal.swiatkowski@linux.intel.com \
--to=michal.swiatkowski@linux.intel.com \
--cc=aleksandr.loktionov@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=larysa.zaremba@intel.com \
--cc=netdev@vger.kernel.org \
/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.