mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-18 16:40:29 +00:00
kernel: fix corrupted padding on small packets with mt753x dsa
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
b5f25d43b7
commit
203ffc4ca7
@ -0,0 +1,29 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 6 May 2022 21:38:42 +0200
|
||||
Subject: [PATCH] net: dsa: tag_mtk: add padding for tx packets
|
||||
|
||||
Padding for transmitted packets needs to account for the special tag.
|
||||
With not enough padding, garbage bytes are inserted by the switch at the
|
||||
end of small packets.
|
||||
|
||||
Fixes: 5cd8985a1909 ("net-next: dsa: add Mediatek tag RX/TX handler")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/dsa/tag_mtk.c
|
||||
+++ b/net/dsa/tag_mtk.c
|
||||
@@ -25,6 +25,14 @@ static struct sk_buff *mtk_tag_xmit(stru
|
||||
u8 xmit_tpid;
|
||||
u8 *mtk_tag;
|
||||
|
||||
+ /* The Ethernet switch we are interfaced with needs packets to be at
|
||||
+ * least 64 bytes (including FCS) otherwise their padding might be
|
||||
+ * corrupted. With tags enabled, we need to make sure that packets are
|
||||
+ * at least 68 bytes (including FCS and tag).
|
||||
+ */
|
||||
+ if (__skb_put_padto(skb, ETH_ZLEN + MTK_HDR_LEN, false))
|
||||
+ return NULL;
|
||||
+
|
||||
/* Build the special tag after the MAC Source Address. If VLAN header
|
||||
* is present, it's required that VLAN header and special tag is
|
||||
* being combined. Only in this way we can allow the switch can parse
|
@ -0,0 +1,29 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 6 May 2022 21:38:42 +0200
|
||||
Subject: [PATCH] net: dsa: tag_mtk: add padding for tx packets
|
||||
|
||||
Padding for transmitted packets needs to account for the special tag.
|
||||
With not enough padding, garbage bytes are inserted by the switch at the
|
||||
end of small packets.
|
||||
|
||||
Fixes: 5cd8985a1909 ("net-next: dsa: add Mediatek tag RX/TX handler")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/dsa/tag_mtk.c
|
||||
+++ b/net/dsa/tag_mtk.c
|
||||
@@ -25,6 +25,14 @@ static struct sk_buff *mtk_tag_xmit(stru
|
||||
u8 xmit_tpid;
|
||||
u8 *mtk_tag;
|
||||
|
||||
+ /* The Ethernet switch we are interfaced with needs packets to be at
|
||||
+ * least 64 bytes (including FCS) otherwise their padding might be
|
||||
+ * corrupted. With tags enabled, we need to make sure that packets are
|
||||
+ * at least 68 bytes (including FCS and tag).
|
||||
+ */
|
||||
+ if (__skb_put_padto(skb, ETH_ZLEN + MTK_HDR_LEN, false))
|
||||
+ return NULL;
|
||||
+
|
||||
/* Build the special tag after the MAC Source Address. If VLAN header
|
||||
* is present, it's required that VLAN header and special tag is
|
||||
* being combined. Only in this way we can allow the switch can parse
|
Loading…
x
Reference in New Issue
Block a user