|
@@ -347,12 +347,18 @@ static irqreturn_t nfp_net_irq_exn(int irq, void *data)
|
|
|
/**
|
|
|
* 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);
|
|
|
}
|
|
@@ -360,12 +366,18 @@ static void nfp_net_tx_ring_init(struct nfp_net_tx_ring *tx_ring)
|
|
|
/**
|
|
|
* 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);
|
|
|
|
|
@@ -403,14 +415,10 @@ static void nfp_net_irqs_assign(struct net_device *netdev)
|
|
|
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);
|
|
|
}
|
|
|
}
|
|
|
|