kernel: fix ethernet regression on mt7986
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
		| @@ -70,14 +70,14 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|   |   | ||||||
| -	if (mtk_tx_map(skb, dev, tx_num, ring, gso) < 0) | -	if (mtk_tx_map(skb, dev, tx_num, ring, gso) < 0) | ||||||
| -		goto drop; | -		goto drop; | ||||||
| +	if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) | +	skb_list_walk_safe(skb, skb, next) { | ||||||
| +		skb_list_walk_safe(skb, skb, next) { | +		if ((!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2) && | ||||||
| +			if ((mtk_skb_has_small_frag(skb) && skb_linearize(skb)) || | +		     mtk_skb_has_small_frag(skb) && skb_linearize(skb)) || | ||||||
| +			    mtk_tx_map(skb, dev, tx_num, ring, gso) < 0) { | +		    mtk_tx_map(skb, dev, tx_num, ring, gso) < 0) { | ||||||
| +				stats->tx_dropped++; | +				stats->tx_dropped++; | ||||||
| +				dev_kfree_skb_any(skb); | +				dev_kfree_skb_any(skb); | ||||||
| +			} |  | ||||||
| +		} | +		} | ||||||
|  | +	} | ||||||
|   |   | ||||||
|  	if (unlikely(atomic_read(&ring->free_count) <= ring->thresh)) |  	if (unlikely(atomic_read(&ring->free_count) <= ring->thresh)) | ||||||
|  		netif_tx_stop_all_queues(dev); |  		netif_tx_stop_all_queues(dev); | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c | --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c | ||||||
| +++ b/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); |  	mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP); | ||||||
|   |   | ||||||
|  	if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { |  	if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau