DPDK-dev Archive on lore.kernel.org
 help / color / Atom feed
* [dpdk-dev] [PATCH] net: adjust layer 2 length on soft VLAN insertion
@ 2019-06-16 10:10 Andrew Rybchenko
  2019-06-24 13:46 ` [dpdk-dev] [PATCH v2] " Andrew Rybchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew Rybchenko @ 2019-06-16 10:10 UTC (permalink / raw)
  To: Olivier Matz; +Cc: dev, Dilshod Urazov, stephen, stable

From: Dilshod Urazov <Dilshod.Urazov@oktetlabs.ru>

Layer 2 length must be updated after the prepend to mbuf to keep
the length right to be used by other Tx offloads.

If the packet has tunnel encapsulation, outer_l2_len should be
updated. Otherwise l2_len should be updated.

Fixes: c974021a5949 ("ether: add soft vlan encap/decap")
Cc: stephen@networkplumber.org
Cc: stable@dpdk.org

Signed-off-by: Dilshod Urazov <Dilshod.Urazov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
The fix is required for net/virtio which supports both VLAN
insertion (using the function) and Tx checksum offloads.

Condition to decide which layer 2 length to update is chosen in accordance
with [1], but could be ((*m)->ol_flags & PKT_TX_TUNNEL_MASK) != 0.

[1] https://patches.dpdk.org/patch/52721/

 lib/librte_net/rte_ether.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h
index 7be9b4890..194570019 100644
--- a/lib/librte_net/rte_ether.h
+++ b/lib/librte_net/rte_ether.h
@@ -417,6 +417,11 @@ static inline int rte_vlan_insert(struct rte_mbuf **m)
 
 	(*m)->ol_flags &= ~(PKT_RX_VLAN_STRIPPED | PKT_TX_VLAN);
 
+	if ((*m)->outer_l2_len != 0)
+		(*m)->outer_l2_len += sizeof(struct rte_vlan_hdr);
+	else
+		(*m)->l2_len += sizeof(struct rte_vlan_hdr);
+
 	return 0;
 }
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [dpdk-dev] [PATCH v2] net: adjust layer 2 length on soft VLAN insertion
  2019-06-16 10:10 [dpdk-dev] [PATCH] net: adjust layer 2 length on soft VLAN insertion Andrew Rybchenko
@ 2019-06-24 13:46 ` " Andrew Rybchenko
  2019-07-05 14:51   ` Olivier Matz
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew Rybchenko @ 2019-06-24 13:46 UTC (permalink / raw)
  To: Olivier Matz; +Cc: dev, Dilshod Urazov, stephen, stable

From: Dilshod Urazov <Dilshod.Urazov@oktetlabs.ru>

Layer 2 length must be updated after the prepend to mbuf to keep
the length right to be used by other Tx offloads.

If the packet has tunnel encapsulation, outer_l2_len should be
updated. Otherwise l2_len should be updated.

Fixes: c974021a5949 ("ether: add soft vlan encap/decap")
Cc: stephen@networkplumber.org
Cc: stable@dpdk.org

Signed-off-by: Dilshod Urazov <Dilshod.Urazov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
The fix is required for net/virtio which supports both VLAN
insertion (using the function) and Tx checksum offloads.

 lib/librte_net/rte_ether.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h
index 7be9b4890..961ed9361 100644
--- a/lib/librte_net/rte_ether.h
+++ b/lib/librte_net/rte_ether.h
@@ -417,6 +417,11 @@ static inline int rte_vlan_insert(struct rte_mbuf **m)
 
 	(*m)->ol_flags &= ~(PKT_RX_VLAN_STRIPPED | PKT_TX_VLAN);
 
+	if ((*m)->ol_flags & PKT_TX_TUNNEL_MASK)
+		(*m)->outer_l2_len += sizeof(struct rte_vlan_hdr);
+	else
+		(*m)->l2_len += sizeof(struct rte_vlan_hdr);
+
 	return 0;
 }
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH v2] net: adjust layer 2 length on soft VLAN insertion
  2019-06-24 13:46 ` [dpdk-dev] [PATCH v2] " Andrew Rybchenko
@ 2019-07-05 14:51   ` Olivier Matz
  2019-07-16 15:32     ` Ferruh Yigit
  0 siblings, 1 reply; 4+ messages in thread
From: Olivier Matz @ 2019-07-05 14:51 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: dev, Dilshod Urazov, stephen, stable

On Mon, Jun 24, 2019 at 02:46:02PM +0100, Andrew Rybchenko wrote:
> From: Dilshod Urazov <Dilshod.Urazov@oktetlabs.ru>
> 
> Layer 2 length must be updated after the prepend to mbuf to keep
> the length right to be used by other Tx offloads.
> 
> If the packet has tunnel encapsulation, outer_l2_len should be
> updated. Otherwise l2_len should be updated.
> 
> Fixes: c974021a5949 ("ether: add soft vlan encap/decap")
> Cc: stephen@networkplumber.org
> Cc: stable@dpdk.org
> 
> Signed-off-by: Dilshod Urazov <Dilshod.Urazov@oktetlabs.ru>
> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>

Acked-by: Olivier Matz <olivier.matz@6wind.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH v2] net: adjust layer 2 length on soft VLAN insertion
  2019-07-05 14:51   ` Olivier Matz
@ 2019-07-16 15:32     ` Ferruh Yigit
  0 siblings, 0 replies; 4+ messages in thread
From: Ferruh Yigit @ 2019-07-16 15:32 UTC (permalink / raw)
  To: Olivier Matz, Andrew Rybchenko; +Cc: dev, Dilshod Urazov, stephen, stable

On 7/5/2019 3:51 PM, Olivier Matz wrote:
> On Mon, Jun 24, 2019 at 02:46:02PM +0100, Andrew Rybchenko wrote:
>> From: Dilshod Urazov <Dilshod.Urazov@oktetlabs.ru>
>>
>> Layer 2 length must be updated after the prepend to mbuf to keep
>> the length right to be used by other Tx offloads.
>>
>> If the packet has tunnel encapsulation, outer_l2_len should be
>> updated. Otherwise l2_len should be updated.
>>
>> Fixes: c974021a5949 ("ether: add soft vlan encap/decap")
>> Cc: stephen@networkplumber.org
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Dilshod Urazov <Dilshod.Urazov@oktetlabs.ru>
>> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
> 
> Acked-by: Olivier Matz <olivier.matz@6wind.com>
> 

Applied to dpdk-next-net/master, thanks.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-16 10:10 [dpdk-dev] [PATCH] net: adjust layer 2 length on soft VLAN insertion Andrew Rybchenko
2019-06-24 13:46 ` [dpdk-dev] [PATCH v2] " Andrew Rybchenko
2019-07-05 14:51   ` Olivier Matz
2019-07-16 15:32     ` Ferruh Yigit

DPDK-dev Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dpdk-dev/0 dpdk-dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dpdk-dev dpdk-dev/ https://lore.kernel.org/dpdk-dev \
		dev@dpdk.org dpdk-dev@archiver.kernel.org
	public-inbox-index dpdk-dev


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox