/**
  * nfp_net_tx_ring_init() - Fill in the boilerplate for a TX ring
  * @tx_ring:  TX ring structure
+ * @r_vec:    IRQ vector servicing this ring
+ * @idx:      Ring index
  */
-static void nfp_net_tx_ring_init(struct nfp_net_tx_ring *tx_ring)
+static void
+nfp_net_tx_ring_init(struct nfp_net_tx_ring *tx_ring,
+                    struct nfp_net_r_vector *r_vec, unsigned int idx)
 {
-       struct nfp_net_r_vector *r_vec = tx_ring->r_vec;
        struct nfp_net *nn = r_vec->nfp_net;
 
+       tx_ring->idx = idx;
+       tx_ring->r_vec = r_vec;
+
        tx_ring->qcidx = tx_ring->idx * nn->stride_tx;
        tx_ring->qcp_q = nn->tx_bar + NFP_QCP_QUEUE_OFF(tx_ring->qcidx);
 }
 /**
  * nfp_net_rx_ring_init() - Fill in the boilerplate for a RX ring
  * @rx_ring:  RX ring structure
+ * @r_vec:    IRQ vector servicing this ring
+ * @idx:      Ring index
  */
-static void nfp_net_rx_ring_init(struct nfp_net_rx_ring *rx_ring)
+static void
+nfp_net_rx_ring_init(struct nfp_net_rx_ring *rx_ring,
+                    struct nfp_net_r_vector *r_vec, unsigned int idx)
 {
-       struct nfp_net_r_vector *r_vec = rx_ring->r_vec;
        struct nfp_net *nn = r_vec->nfp_net;
 
+       rx_ring->idx = idx;
+       rx_ring->r_vec = r_vec;
+
        rx_ring->fl_qcidx = rx_ring->idx * nn->stride_rx;
        rx_ring->rx_qcidx = rx_ring->fl_qcidx + (nn->stride_rx - 1);
 
                cpumask_set_cpu(r, &r_vec->affinity_mask);
 
                r_vec->tx_ring = &nn->tx_rings[r];
-               nn->tx_rings[r].idx = r;
-               nn->tx_rings[r].r_vec = r_vec;
-               nfp_net_tx_ring_init(r_vec->tx_ring);
+               nfp_net_tx_ring_init(r_vec->tx_ring, r_vec, r);
 
                r_vec->rx_ring = &nn->rx_rings[r];
-               nn->rx_rings[r].idx = r;
-               nn->rx_rings[r].r_vec = r_vec;
-               nfp_net_rx_ring_init(r_vec->rx_ring);
+               nfp_net_rx_ring_init(r_vec->rx_ring, r_vec, r);
        }
 }