kernel: fix mtk dsa tag padding
authorFelix Fietkau <nbd@nbd.name>
Thu, 2 Mar 2023 11:58:16 +0000 (12:58 +0100)
committerFelix Fietkau <nbd@nbd.name>
Thu, 2 Mar 2023 11:59:53 +0000 (12:59 +0100)
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>
target/linux/generic/pending-5.10/705-net-dsa-tag_mtk-add-padding-for-tx-packets.patch
target/linux/generic/pending-5.15/705-net-dsa-tag_mtk-add-padding-for-tx-packets.patch
target/linux/generic/pending-5.15/732-05-net-dsa-tag_mtk-assign-per-port-queues.patch

index e27ac3595f52ad1bb7f988901a558b0e22c058a8..4f3af6c6b0ecc47f6a71da0426f4226478f4cda6 100644 (file)
@@ -12,7 +12,7 @@ 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
+@@ -25,6 +25,13 @@ static struct sk_buff *mtk_tag_xmit(stru
        u8 xmit_tpid;
        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
 +       * at least 68 bytes (including FCS and tag).
 +       */
-+      if (__skb_put_padto(skb, ETH_ZLEN + MTK_HDR_LEN, false))
-+              return NULL;
++      eth_skb_pad(skb);
 +
        /* Build the special tag after the MAC Source Address. If VLAN header
         * is present, it's required that VLAN header and special tag is
index e27ac3595f52ad1bb7f988901a558b0e22c058a8..4f3af6c6b0ecc47f6a71da0426f4226478f4cda6 100644 (file)
@@ -12,7 +12,7 @@ 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
+@@ -25,6 +25,13 @@ static struct sk_buff *mtk_tag_xmit(stru
        u8 xmit_tpid;
        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
 +       * at least 68 bytes (including FCS and tag).
 +       */
-+      if (__skb_put_padto(skb, ETH_ZLEN + MTK_HDR_LEN, false))
-+              return NULL;
++      eth_skb_pad(skb);
 +
        /* Build the special tag after the MAC Source Address. If VLAN header
         * is present, it's required that VLAN header and special tag is
index 7739366ade3ced0c15210f1a4fcb82123fbe02f2..e8c9631819e4fa29496298263d9cb096bc80e96a 100644 (file)
@@ -9,9 +9,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/dsa/tag_mtk.c
 +++ b/net/dsa/tag_mtk.c
-@@ -33,6 +33,8 @@ static struct sk_buff *mtk_tag_xmit(stru
-       if (__skb_put_padto(skb, ETH_ZLEN + MTK_HDR_LEN, false))
-               return NULL;
+@@ -32,6 +32,8 @@ static struct sk_buff *mtk_tag_xmit(stru
+        */
+       eth_skb_pad(skb);
  
 +      skb_set_queue_mapping(skb, dp->index);
 +