hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/ethernet/cadence/macb_main.c
....@@ -884,6 +884,10 @@
884884 }
885885 #endif
886886 addr |= MACB_BF(RX_WADDR, MACB_BFEXT(RX_WADDR, desc->addr));
887
+#ifdef CONFIG_MACB_USE_HWSTAMP
888
+ if (bp->hw_dma_cap & HW_DMA_CAP_PTP)
889
+ addr &= ~GEM_BIT(DMA_RXVALID);
890
+#endif
887891 return addr;
888892 }
889893
....@@ -1963,7 +1967,6 @@
19631967 bool cloned = skb_cloned(*skb) || skb_header_cloned(*skb) ||
19641968 skb_is_nonlinear(*skb);
19651969 int padlen = ETH_ZLEN - (*skb)->len;
1966
- int headroom = skb_headroom(*skb);
19671970 int tailroom = skb_tailroom(*skb);
19681971 struct sk_buff *nskb;
19691972 u32 fcs;
....@@ -1977,9 +1980,6 @@
19771980 /* FCS could be appeded to tailroom. */
19781981 if (tailroom >= ETH_FCS_LEN)
19791982 goto add_fcs;
1980
- /* FCS could be appeded by moving data to headroom. */
1981
- else if (!cloned && headroom + tailroom >= ETH_FCS_LEN)
1982
- padlen = 0;
19831983 /* No room for FCS, need to reallocate skb. */
19841984 else
19851985 padlen = ETH_FCS_LEN;
....@@ -1988,10 +1988,7 @@
19881988 padlen += ETH_FCS_LEN;
19891989 }
19901990
1991
- if (!cloned && headroom + tailroom >= padlen) {
1992
- (*skb)->data = memmove((*skb)->head, (*skb)->data, (*skb)->len);
1993
- skb_set_tail_pointer(*skb, (*skb)->len);
1994
- } else {
1991
+ if (cloned || tailroom < padlen) {
19951992 nskb = skb_copy_expand(*skb, 0, padlen, GFP_ATOMIC);
19961993 if (!nskb)
19971994 return -ENOMEM;