Updated the if-else block with an optimised inverse operator. Thanks for your suggestion Stephen.
On Fri, Aug 2, 2024 at 10:36 AM Tathagat Priyadarshi <tathagat.d...@gmail.com> wrote: > > The EOP and csum bit was not set for all the packets in mbuf chain > causing packet transmission stalls for packets split across > mbuf in chain. > > Fixes: 4022f99 ("net/gve: support basic Tx data path for DQO") > Cc: sta...@dpdk.org > > Signed-off-by: Tathagat Priyadarshi <tathagat.d...@gmail.com> > Signed-off-by: Varun Lakkur Ambaji Rao <varun...@gmail.com> > > Acked-by: Joshua Washington <joshw...@google.com> > --- > drivers/net/gve/gve_tx_dqo.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c > index a65e6aa..bbaf46d 100644 > --- a/drivers/net/gve/gve_tx_dqo.c > +++ b/drivers/net/gve/gve_tx_dqo.c > @@ -89,6 +89,7 @@ > uint16_t sw_id; > uint64_t bytes; > uint16_t first_sw_id; > + uint8_t csum; > > sw_ring = txq->sw_ring; > txr = txq->tx_ring; > @@ -114,6 +115,9 @@ > ol_flags = tx_pkt->ol_flags; > nb_used = tx_pkt->nb_segs; > first_sw_id = sw_id; > + > + csum = !!(ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO); > + > do { > if (sw_ring[sw_id] != NULL) > PMD_DRV_LOG(DEBUG, "Overwriting an entry in > sw_ring"); > @@ -126,6 +130,8 @@ > txd->pkt.dtype = GVE_TX_PKT_DESC_DTYPE_DQO; > txd->pkt.compl_tag = rte_cpu_to_le_16(first_sw_id); > txd->pkt.buf_size = RTE_MIN(tx_pkt->data_len, > GVE_TX_MAX_BUF_SIZE_DQO); > + txd->pkt.end_of_packet = 0; > + txd->pkt.checksum_offload_enable = csum; > > /* size of desc_ring and sw_ring could be different */ > tx_id = (tx_id + 1) & mask; > @@ -138,9 +144,6 @@ > /* fill the last descriptor with End of Packet (EOP) bit */ > txd->pkt.end_of_packet = 1; > > - if (ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO) > - txd->pkt.checksum_offload_enable = 1; > - > txq->nb_free -= nb_used; > txq->nb_used += nb_used; > } > -- > 1.8.3.1 >