hc
2023-02-14 b625cdcd68479b3d540a915785b6d9809b52a2f8
kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c
....@@ -545,15 +545,15 @@
545545 static void dwmac_rk_rx_clean(struct stmmac_priv *priv,
546546 struct dwmac_rk_lb_priv *lb_priv)
547547 {
548
- if (likely(lb_priv->rx_skbuff_dma)) {
548
+ struct sk_buff *skb;
549
+
550
+ skb = lb_priv->rx_skbuff;
551
+
552
+ if (likely(lb_priv->rx_skbuff)) {
549553 dma_unmap_single(priv->device,
550554 lb_priv->rx_skbuff_dma,
551555 lb_priv->dma_buf_sz, DMA_FROM_DEVICE);
552
- lb_priv->rx_skbuff_dma = 0;
553
- }
554
-
555
- if (likely(lb_priv->rx_skbuff)) {
556
- dev_consume_skb_any(lb_priv->rx_skbuff);
556
+ dev_kfree_skb(skb);
557557 lb_priv->rx_skbuff = NULL;
558558 }
559559 }
....@@ -582,12 +582,7 @@
582582 }
583583
584584 frame_len -= ETH_FCS_LEN;
585
- prefetch(skb->data - NET_IP_ALIGN);
586585 skb_put(skb, frame_len);
587
- dma_unmap_single(priv->device,
588
- lb_priv->rx_skbuff_dma,
589
- lb_priv->dma_buf_sz,
590
- DMA_FROM_DEVICE);
591586
592587 return dwmac_rk_loopback_validate(priv, lb_priv, skb);
593588 }
....@@ -621,9 +616,10 @@
621616 static void dwmac_rk_tx_clean(struct stmmac_priv *priv,
622617 struct dwmac_rk_lb_priv *lb_priv)
623618 {
624
- struct sk_buff *skb = lb_priv->tx_skbuff;
619
+ struct sk_buff *skb;
625620 struct dma_desc *p;
626621
622
+ skb = lb_priv->tx_skbuff;
627623 p = lb_priv->dma_tx;
628624
629625 if (likely(lb_priv->tx_skbuff_dma)) {
....@@ -635,7 +631,7 @@
635631 }
636632
637633 if (likely(skb)) {
638
- dev_consume_skb_any(skb);
634
+ dev_kfree_skb(skb);
639635 lb_priv->tx_skbuff = NULL;
640636 }
641637
....@@ -659,10 +655,9 @@
659655 lb_priv->tx_skbuff = skb;
660656
661657 des = dma_map_single(priv->device, skb->data,
662
- nopaged_len, DMA_TO_DEVICE);
658
+ nopaged_len, DMA_TO_DEVICE);
663659 if (dma_mapping_error(priv->device, des))
664660 goto dma_map_err;
665
- lb_priv->tx_skbuff_dma = des;
666661
667662 stmmac_set_desc_addr(priv, desc, des);
668663 lb_priv->tx_skbuff_dma_len = nopaged_len;