kernel: fix ethernet regression on mt7986
authorFelix Fietkau <nbd@nbd.name>
Wed, 28 Dec 2022 19:06:04 +0000 (20:06 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 28 Dec 2022 19:06:12 +0000 (20:06 +0100)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
target/linux/generic/pending-5.15/732-10-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
target/linux/generic/pending-5.15/732-12-net-ethernet-mtk_eth_soc-drop-packets-to-WDMA-if-the.patch

index 86ce481c2ee8383cad9827dfa4299cb24000695f..f19128d809e8dca4b48746659a007bb3922f1d14 100644 (file)
@@ -70,14 +70,14 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 -      if (mtk_tx_map(skb, dev, tx_num, ring, gso) < 0)
 -              goto drop;
-+      if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2))
-+              skb_list_walk_safe(skb, skb, next) {
-+                      if ((mtk_skb_has_small_frag(skb) && skb_linearize(skb)) ||
-+                          mtk_tx_map(skb, dev, tx_num, ring, gso) < 0) {
++      skb_list_walk_safe(skb, skb, next) {
++              if ((!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2) &&
++                   mtk_skb_has_small_frag(skb) && skb_linearize(skb)) ||
++                  mtk_tx_map(skb, dev, tx_num, ring, gso) < 0) {
 +                              stats->tx_dropped++;
 +                              dev_kfree_skb_any(skb);
-+                      }
 +              }
++      }
  
        if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
                netif_tx_stop_all_queues(dev);
index 6568e890d2e2732c53cdbba3fd759f084b1b4d48..416dfb6cf703720b597c2451afc1f5b2ffb8c7fe 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3531,9 +3531,12 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -3533,9 +3533,12 @@ static int mtk_hw_init(struct mtk_eth *e
        mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
  
        if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {