* [PATCH v2] net/gve : Update EOP bit in txd rte_mbuf chain
[not found] <1722443901-2400194-1-git-send-email-tathagat.dpdk@gmail.com>
@ 2024-08-01 11:31 ` Tathagat Priyadarshi
2024-08-01 17:27 ` [PATCH v3] net/gve : Update EOP & csum " Tathagat Priyadarshi
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Tathagat Priyadarshi @ 2024-08-01 11:31 UTC (permalink / raw)
To: dev; +Cc: Tathagat Priyadarshi, stable, Varun Lakkur Ambaji Rao
The EOP 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: stable@dpdk.org
Signed-off-by: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
Signed-off-by: Varun Lakkur Ambaji Rao <varun.la@gmail.com>
---
drivers/net/gve/gve_tx_dqo.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index a65e6aa..579b8d6 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -126,6 +126,7 @@
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;
/* size of desc_ring and sw_ring could be different */
tx_id = (tx_id + 1) & mask;
--
1.8.3.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3] net/gve : Update EOP & csum bit in txd rte_mbuf chain
[not found] <1722443901-2400194-1-git-send-email-tathagat.dpdk@gmail.com>
2024-08-01 11:31 ` [PATCH v2] net/gve : Update EOP bit in txd rte_mbuf chain Tathagat Priyadarshi
@ 2024-08-01 17:27 ` Tathagat Priyadarshi
2024-08-01 18:54 ` Stephen Hemminger
2024-08-01 17:48 ` [PATCH v4] " Tathagat Priyadarshi
2024-08-02 5:08 ` [PATCH v5] " Tathagat Priyadarshi
3 siblings, 1 reply; 8+ messages in thread
From: Tathagat Priyadarshi @ 2024-08-01 17:27 UTC (permalink / raw)
To: dev; +Cc: Tathagat Priyadarshi, stable, Varun Lakkur Ambaji Rao
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: stable@dpdk.org
Signed-off-by: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
Signed-off-by: Varun Lakkur Ambaji Rao <varun.la@gmail.com>
---
drivers/net/gve/gve_tx_dqo.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index a65e6aa..91db037 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,12 @@
ol_flags = tx_pkt->ol_flags;
nb_used = tx_pkt->nb_segs;
first_sw_id = sw_id;
+
+ if (ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO)
+ csum = 1;
+ else
+ cusm = 0;
+
do {
if (sw_ring[sw_id] != NULL)
PMD_DRV_LOG(DEBUG, "Overwriting an entry in sw_ring");
@@ -126,6 +133,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 +147,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
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3] net/gve : Update EOP & csum bit in txd rte_mbuf chain
2024-08-01 17:27 ` [PATCH v3] net/gve : Update EOP & csum " Tathagat Priyadarshi
@ 2024-08-01 18:54 ` Stephen Hemminger
2024-08-01 18:58 ` Tathagat Priyadarshi
0 siblings, 1 reply; 8+ messages in thread
From: Stephen Hemminger @ 2024-08-01 18:54 UTC (permalink / raw)
To: Tathagat Priyadarshi; +Cc: dev, stable, Varun Lakkur Ambaji Rao
On Thu, 1 Aug 2024 17:27:53 +0000
Tathagat Priyadarshi <tathagat.dpdk@gmail.com> wrote:
> + if (ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO)
> + csum = 1;
> + else
> + cusm = 0;
> +
Obvious typo, did you do a final test build?
Could also use logical inverse operator instead of if() which will
generate better code sometimes.
csum = !!(ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO);
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3] net/gve : Update EOP & csum bit in txd rte_mbuf chain
2024-08-01 18:54 ` Stephen Hemminger
@ 2024-08-01 18:58 ` Tathagat Priyadarshi
0 siblings, 0 replies; 8+ messages in thread
From: Tathagat Priyadarshi @ 2024-08-01 18:58 UTC (permalink / raw)
To: stephen; +Cc: Varun Lakkur Ambaji Rao, dev, stable
[-- Attachment #1: Type: text/plain, Size: 736 bytes --]
Thanks for your suggestion Stephen, I have already updated the patch with
v4 & fixed the typo. Will consider your suggestion in the next version of
the patch.
On Fri, 2 Aug 2024 at 00:24, Stephen Hemminger <stephen@networkplumber.org>
wrote:
> On Thu, 1 Aug 2024 17:27:53 +0000
> Tathagat Priyadarshi <tathagat.dpdk@gmail.com> wrote:
>
> > + if (ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO)
> > + csum = 1;
> > + else
> > + cusm = 0;
> > +
>
> Obvious typo, did you do a final test build?
>
> Could also use logical inverse operator instead of if() which will
> generate better code sometimes.
>
> csum = !!(ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO);
>
>
[-- Attachment #2: Type: text/html, Size: 1291 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v4] net/gve : Update EOP & csum bit in txd rte_mbuf chain
[not found] <1722443901-2400194-1-git-send-email-tathagat.dpdk@gmail.com>
2024-08-01 11:31 ` [PATCH v2] net/gve : Update EOP bit in txd rte_mbuf chain Tathagat Priyadarshi
2024-08-01 17:27 ` [PATCH v3] net/gve : Update EOP & csum " Tathagat Priyadarshi
@ 2024-08-01 17:48 ` Tathagat Priyadarshi
2024-08-02 5:08 ` [PATCH v5] " Tathagat Priyadarshi
3 siblings, 0 replies; 8+ messages in thread
From: Tathagat Priyadarshi @ 2024-08-01 17:48 UTC (permalink / raw)
To: dev; +Cc: Tathagat Priyadarshi, stable, Varun Lakkur Ambaji Rao
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: stable@dpdk.org
Signed-off-by: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
Signed-off-by: Varun Lakkur Ambaji Rao <varun.la@gmail.com>
---
drivers/net/gve/gve_tx_dqo.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index a65e6aa..1374e1a 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,12 @@
ol_flags = tx_pkt->ol_flags;
nb_used = tx_pkt->nb_segs;
first_sw_id = sw_id;
+
+ if (ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO)
+ csum = 1;
+ else
+ csum = 0;
+
do {
if (sw_ring[sw_id] != NULL)
PMD_DRV_LOG(DEBUG, "Overwriting an entry in sw_ring");
@@ -126,6 +133,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 +147,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
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5] net/gve : Update EOP & csum bit in txd rte_mbuf chain
[not found] <1722443901-2400194-1-git-send-email-tathagat.dpdk@gmail.com>
` (2 preceding siblings ...)
2024-08-01 17:48 ` [PATCH v4] " Tathagat Priyadarshi
@ 2024-08-02 5:08 ` Tathagat Priyadarshi
2024-08-02 5:10 ` Tathagat Priyadarshi
2024-08-07 9:39 ` Ferruh Yigit
3 siblings, 2 replies; 8+ messages in thread
From: Tathagat Priyadarshi @ 2024-08-02 5:08 UTC (permalink / raw)
To: stephen, dev; +Cc: Tathagat Priyadarshi, stable, Varun Lakkur Ambaji Rao
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: stable@dpdk.org
Signed-off-by: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
Signed-off-by: Varun Lakkur Ambaji Rao <varun.la@gmail.com>
Acked-by: Joshua Washington <joshwash@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
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5] net/gve : Update EOP & csum bit in txd rte_mbuf chain
2024-08-02 5:08 ` [PATCH v5] " Tathagat Priyadarshi
@ 2024-08-02 5:10 ` Tathagat Priyadarshi
2024-08-07 9:39 ` Ferruh Yigit
1 sibling, 0 replies; 8+ messages in thread
From: Tathagat Priyadarshi @ 2024-08-02 5:10 UTC (permalink / raw)
To: stephen, dev; +Cc: stable, Varun Lakkur Ambaji Rao, Joshua Washington
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.dpdk@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: stable@dpdk.org
>
> Signed-off-by: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
> Signed-off-by: Varun Lakkur Ambaji Rao <varun.la@gmail.com>
>
> Acked-by: Joshua Washington <joshwash@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
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5] net/gve : Update EOP & csum bit in txd rte_mbuf chain
2024-08-02 5:08 ` [PATCH v5] " Tathagat Priyadarshi
2024-08-02 5:10 ` Tathagat Priyadarshi
@ 2024-08-07 9:39 ` Ferruh Yigit
1 sibling, 0 replies; 8+ messages in thread
From: Ferruh Yigit @ 2024-08-07 9:39 UTC (permalink / raw)
To: Tathagat Priyadarshi, stephen, dev; +Cc: stable, Varun Lakkur Ambaji Rao
On 8/2/2024 6:08 AM, Tathagat Priyadarshi 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: stable@dpdk.org
>
> Signed-off-by: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
> Signed-off-by: Varun Lakkur Ambaji Rao <varun.la@gmail.com>
>
> Acked-by: Joshua Washington <joshwash@google.com>
>
Updated commit log slightly, please check the merged version.
Applied to dpdk-next-net/main, thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread