kernel: fix mtk dsa tag padding
The padding intended to avoid corrupted non-zero padding payload was accidentally adding too many padding bytes, tripping up some setups. Fix this by using eth_skb_pad instead. Fixes #11942. Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
23b46b1c61
commit
9307c27539
3 changed files with 7 additions and 9 deletions
|
@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/net/dsa/tag_mtk.c
|
--- a/net/dsa/tag_mtk.c
|
||||||
+++ b/net/dsa/tag_mtk.c
|
+++ b/net/dsa/tag_mtk.c
|
||||||
@@ -25,6 +25,14 @@ static struct sk_buff *mtk_tag_xmit(stru
|
@@ -25,6 +25,13 @@ static struct sk_buff *mtk_tag_xmit(stru
|
||||||
u8 xmit_tpid;
|
u8 xmit_tpid;
|
||||||
u8 *mtk_tag;
|
u8 *mtk_tag;
|
||||||
|
|
||||||
|
@ -21,8 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
+ * corrupted. With tags enabled, we need to make sure that packets are
|
+ * corrupted. With tags enabled, we need to make sure that packets are
|
||||||
+ * at least 68 bytes (including FCS and tag).
|
+ * at least 68 bytes (including FCS and tag).
|
||||||
+ */
|
+ */
|
||||||
+ if (__skb_put_padto(skb, ETH_ZLEN + MTK_HDR_LEN, false))
|
+ eth_skb_pad(skb);
|
||||||
+ return NULL;
|
|
||||||
+
|
+
|
||||||
/* Build the special tag after the MAC Source Address. If VLAN header
|
/* Build the special tag after the MAC Source Address. If VLAN header
|
||||||
* is present, it's required that VLAN header and special tag is
|
* is present, it's required that VLAN header and special tag is
|
||||||
|
|
|
@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/net/dsa/tag_mtk.c
|
--- a/net/dsa/tag_mtk.c
|
||||||
+++ b/net/dsa/tag_mtk.c
|
+++ b/net/dsa/tag_mtk.c
|
||||||
@@ -25,6 +25,14 @@ static struct sk_buff *mtk_tag_xmit(stru
|
@@ -25,6 +25,13 @@ static struct sk_buff *mtk_tag_xmit(stru
|
||||||
u8 xmit_tpid;
|
u8 xmit_tpid;
|
||||||
u8 *mtk_tag;
|
u8 *mtk_tag;
|
||||||
|
|
||||||
|
@ -21,8 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
+ * corrupted. With tags enabled, we need to make sure that packets are
|
+ * corrupted. With tags enabled, we need to make sure that packets are
|
||||||
+ * at least 68 bytes (including FCS and tag).
|
+ * at least 68 bytes (including FCS and tag).
|
||||||
+ */
|
+ */
|
||||||
+ if (__skb_put_padto(skb, ETH_ZLEN + MTK_HDR_LEN, false))
|
+ eth_skb_pad(skb);
|
||||||
+ return NULL;
|
|
||||||
+
|
+
|
||||||
/* Build the special tag after the MAC Source Address. If VLAN header
|
/* Build the special tag after the MAC Source Address. If VLAN header
|
||||||
* is present, it's required that VLAN header and special tag is
|
* is present, it's required that VLAN header and special tag is
|
||||||
|
|
|
@ -9,9 +9,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/net/dsa/tag_mtk.c
|
--- a/net/dsa/tag_mtk.c
|
||||||
+++ b/net/dsa/tag_mtk.c
|
+++ b/net/dsa/tag_mtk.c
|
||||||
@@ -33,6 +33,8 @@ static struct sk_buff *mtk_tag_xmit(stru
|
@@ -32,6 +32,8 @@ static struct sk_buff *mtk_tag_xmit(stru
|
||||||
if (__skb_put_padto(skb, ETH_ZLEN + MTK_HDR_LEN, false))
|
*/
|
||||||
return NULL;
|
eth_skb_pad(skb);
|
||||||
|
|
||||||
+ skb_set_queue_mapping(skb, dp->index);
|
+ skb_set_queue_mapping(skb, dp->index);
|
||||||
+
|
+
|
||||||
|
|
Loading…
Reference in a new issue