> -----Original Message----- > From: Maxime Coquelin <maxime.coque...@redhat.com> > Sent: Wednesday, November 30, 2022 11:56 PM > To: dev@dpdk.org; Xia, Chenbo <chenbo....@intel.com>; > david.march...@redhat.com; epere...@redhat.com > Cc: Maxime Coquelin <maxime.coque...@redhat.com> > Subject: [PATCH v1 04/21] net/virtio: remove port ID info from Rx queue > > The port ID information is duplicated in several places. > This patch removes it from the virtnet_rx struct as it can > be found in virtio_hw struct. > > Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com> > --- > drivers/net/virtio/virtio_ethdev.c | 1 - > drivers/net/virtio/virtio_rxtx.c | 25 ++++++++++--------------- > drivers/net/virtio/virtio_rxtx.h | 1 - > drivers/net/virtio/virtio_rxtx_packed.c | 3 +-- > drivers/net/virtio/virtio_rxtx_simple.c | 3 ++- > drivers/net/virtio/virtio_rxtx_simple.h | 5 +++-- > 6 files changed, 16 insertions(+), 22 deletions(-) > > diff --git a/drivers/net/virtio/virtio_ethdev.c > b/drivers/net/virtio/virtio_ethdev.c > index cead5f0884..1c68e5a283 100644 > --- a/drivers/net/virtio/virtio_ethdev.c > +++ b/drivers/net/virtio/virtio_ethdev.c > @@ -462,7 +462,6 @@ virtio_init_queue(struct rte_eth_dev *dev, uint16_t > queue_idx) > > vq->sw_ring = sw_ring; > rxvq = &vq->rxq; > - rxvq->port_id = dev->data->port_id; > rxvq->mz = mz; > rxvq->fake_mbuf = fake_mbuf; > } else if (queue_type == VTNET_TQ) { > diff --git a/drivers/net/virtio/virtio_rxtx.c > b/drivers/net/virtio/virtio_rxtx.c > index bd95e8ceb5..45c04aa3f8 100644 > --- a/drivers/net/virtio/virtio_rxtx.c > +++ b/drivers/net/virtio/virtio_rxtx.c > @@ -1024,7 +1024,7 @@ virtio_recv_pkts(void *rx_queue, struct rte_mbuf > **rx_pkts, uint16_t nb_pkts) > continue; > } > > - rxm->port = rxvq->port_id; > + rxm->port = hw->port_id; > rxm->data_off = RTE_PKTMBUF_HEADROOM; > rxm->ol_flags = 0; > rxm->vlan_tci = 0; > @@ -1066,8 +1066,7 @@ virtio_recv_pkts(void *rx_queue, struct rte_mbuf > **rx_pkts, uint16_t nb_pkts) > } > nb_enqueued += free_cnt; > } else { > - struct rte_eth_dev *dev = > - &rte_eth_devices[rxvq->port_id]; > + struct rte_eth_dev *dev = &rte_eth_devices[hw->port_id]; > dev->data->rx_mbuf_alloc_failed += free_cnt; > } > } > @@ -1127,7 +1126,7 @@ virtio_recv_pkts_packed(void *rx_queue, struct > rte_mbuf **rx_pkts, > continue; > } > > - rxm->port = rxvq->port_id; > + rxm->port = hw->port_id; > rxm->data_off = RTE_PKTMBUF_HEADROOM; > rxm->ol_flags = 0; > rxm->vlan_tci = 0; > @@ -1169,8 +1168,7 @@ virtio_recv_pkts_packed(void *rx_queue, struct > rte_mbuf **rx_pkts, > } > nb_enqueued += free_cnt; > } else { > - struct rte_eth_dev *dev = > - &rte_eth_devices[rxvq->port_id]; > + struct rte_eth_dev *dev = &rte_eth_devices[hw->port_id]; > dev->data->rx_mbuf_alloc_failed += free_cnt; > } > } > @@ -1258,7 +1256,7 @@ virtio_recv_pkts_inorder(void *rx_queue, > rxm->pkt_len = (uint32_t)(len[i] - hdr_size); > rxm->data_len = (uint16_t)(len[i] - hdr_size); > > - rxm->port = rxvq->port_id; > + rxm->port = hw->port_id; > > rx_pkts[nb_rx] = rxm; > prev = rxm; > @@ -1352,8 +1350,7 @@ virtio_recv_pkts_inorder(void *rx_queue, > } > nb_enqueued += free_cnt; > } else { > - struct rte_eth_dev *dev = > - &rte_eth_devices[rxvq->port_id]; > + struct rte_eth_dev *dev = &rte_eth_devices[hw->port_id]; > dev->data->rx_mbuf_alloc_failed += free_cnt; > } > } > @@ -1437,7 +1434,7 @@ virtio_recv_mergeable_pkts(void *rx_queue, > rxm->pkt_len = (uint32_t)(len[i] - hdr_size); > rxm->data_len = (uint16_t)(len[i] - hdr_size); > > - rxm->port = rxvq->port_id; > + rxm->port = hw->port_id; > > rx_pkts[nb_rx] = rxm; > prev = rxm; > @@ -1530,8 +1527,7 @@ virtio_recv_mergeable_pkts(void *rx_queue, > } > nb_enqueued += free_cnt; > } else { > - struct rte_eth_dev *dev = > - &rte_eth_devices[rxvq->port_id]; > + struct rte_eth_dev *dev = &rte_eth_devices[hw->port_id]; > dev->data->rx_mbuf_alloc_failed += free_cnt; > } > } > @@ -1610,7 +1606,7 @@ virtio_recv_mergeable_pkts_packed(void *rx_queue, > rxm->pkt_len = (uint32_t)(len[i] - hdr_size); > rxm->data_len = (uint16_t)(len[i] - hdr_size); > > - rxm->port = rxvq->port_id; > + rxm->port = hw->port_id; > rx_pkts[nb_rx] = rxm; > prev = rxm; > > @@ -1699,8 +1695,7 @@ virtio_recv_mergeable_pkts_packed(void *rx_queue, > } > nb_enqueued += free_cnt; > } else { > - struct rte_eth_dev *dev = > - &rte_eth_devices[rxvq->port_id]; > + struct rte_eth_dev *dev = &rte_eth_devices[hw->port_id]; > dev->data->rx_mbuf_alloc_failed += free_cnt; > } > } > diff --git a/drivers/net/virtio/virtio_rxtx.h > b/drivers/net/virtio/virtio_rxtx.h > index 226c722d64..97de9eb0a3 100644 > --- a/drivers/net/virtio/virtio_rxtx.h > +++ b/drivers/net/virtio/virtio_rxtx.h > @@ -24,7 +24,6 @@ struct virtnet_rx { > struct rte_mempool *mpool; /**< mempool for mbuf allocation */ > > uint16_t queue_id; /**< DPDK queue index. */ > - uint16_t port_id; /**< Device port identifier. */ > > /* Statistics */ > struct virtnet_stats stats; > diff --git a/drivers/net/virtio/virtio_rxtx_packed.c > b/drivers/net/virtio/virtio_rxtx_packed.c > index 45cf39df22..5f7d4903bc 100644 > --- a/drivers/net/virtio/virtio_rxtx_packed.c > +++ b/drivers/net/virtio/virtio_rxtx_packed.c > @@ -124,8 +124,7 @@ virtio_recv_pkts_packed_vec(void *rx_queue, > free_cnt); > nb_enqueued += free_cnt; > } else { > - struct rte_eth_dev *dev = > - &rte_eth_devices[rxvq->port_id]; > + struct rte_eth_dev *dev = &rte_eth_devices[hw->port_id]; > dev->data->rx_mbuf_alloc_failed += free_cnt; > } > } > diff --git a/drivers/net/virtio/virtio_rxtx_simple.c > b/drivers/net/virtio/virtio_rxtx_simple.c > index f248869a8f..438256970d 100644 > --- a/drivers/net/virtio/virtio_rxtx_simple.c > +++ b/drivers/net/virtio/virtio_rxtx_simple.c > @@ -30,12 +30,13 @@ > int __rte_cold > virtio_rxq_vec_setup(struct virtnet_rx *rxq) > { > + struct virtqueue *vq = virtnet_rxq_to_vq(rxq); > uintptr_t p; > struct rte_mbuf mb_def = { .buf_addr = 0 }; /* zeroed mbuf */ > > mb_def.nb_segs = 1; > mb_def.data_off = RTE_PKTMBUF_HEADROOM; > - mb_def.port = rxq->port_id; > + mb_def.port = vq->hw->port_id; > rte_mbuf_refcnt_set(&mb_def, 1); > > /* prevent compiler reordering: rearm_data covers previous fields */ > diff --git a/drivers/net/virtio/virtio_rxtx_simple.h > b/drivers/net/virtio/virtio_rxtx_simple.h > index d8f96e0434..8e235f4dbc 100644 > --- a/drivers/net/virtio/virtio_rxtx_simple.h > +++ b/drivers/net/virtio/virtio_rxtx_simple.h > @@ -32,8 +32,9 @@ virtio_rxq_rearm_vec(struct virtnet_rx *rxvq) > ret = rte_mempool_get_bulk(rxvq->mpool, (void **)sw_ring, > RTE_VIRTIO_VPMD_RX_REARM_THRESH); > if (unlikely(ret)) { > - rte_eth_devices[rxvq->port_id].data->rx_mbuf_alloc_failed += > - RTE_VIRTIO_VPMD_RX_REARM_THRESH; > + struct rte_eth_dev *dev = &rte_eth_devices[vq->hw->port_id]; > + > + dev->data->rx_mbuf_alloc_failed += > RTE_VIRTIO_VPMD_RX_REARM_THRESH; > return; > } > > -- > 2.38.1
Reviewed-by: Chenbo Xia <chenbo....@intel.com>