]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: rename dsa_realloc_skb to skb_ensure_writable_head_tail
authorRadu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com>
Tue, 19 Dec 2023 14:53:25 +0000 (16:53 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 Dec 2023 13:08:09 +0000 (13:08 +0000)
Rename dsa_realloc_skb to skb_ensure_writable_head_tail and move it to
skbuff.c to use it as helper.

Signed-off-by: Radu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
net/core/skbuff.c
net/dsa/user.c

index 50e92c8471dc7152f0cb7205ef7f69fafcba14ce..a5ae952454c890c4aa95aadf2f3bc79ff782279a 100644 (file)
@@ -4007,6 +4007,7 @@ struct sk_buff *skb_segment_list(struct sk_buff *skb, netdev_features_t features
                                 unsigned int offset);
 struct sk_buff *skb_vlan_untag(struct sk_buff *skb);
 int skb_ensure_writable(struct sk_buff *skb, unsigned int write_len);
+int skb_ensure_writable_head_tail(struct sk_buff *skb, struct net_device *dev);
 int __skb_vlan_pop(struct sk_buff *skb, u16 *vlan_tci);
 int skb_vlan_pop(struct sk_buff *skb);
 int skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci);
index ce5687ddb7684ae315651beab82a8c84e45885f2..12d22c0b8551f34d18fabe5ae83cc4f1d878430d 100644 (file)
@@ -5995,6 +5995,31 @@ int skb_ensure_writable(struct sk_buff *skb, unsigned int write_len)
 }
 EXPORT_SYMBOL(skb_ensure_writable);
 
+int skb_ensure_writable_head_tail(struct sk_buff *skb, struct net_device *dev)
+{
+       int needed_headroom = dev->needed_headroom;
+       int needed_tailroom = dev->needed_tailroom;
+
+       /* For tail taggers, we need to pad short frames ourselves, to ensure
+        * that the tail tag does not fail at its role of being at the end of
+        * the packet, once the conduit interface pads the frame. Account for
+        * that pad length here, and pad later.
+        */
+       if (unlikely(needed_tailroom && skb->len < ETH_ZLEN))
+               needed_tailroom += ETH_ZLEN - skb->len;
+       /* skb_headroom() returns unsigned int... */
+       needed_headroom = max_t(int, needed_headroom - skb_headroom(skb), 0);
+       needed_tailroom = max_t(int, needed_tailroom - skb_tailroom(skb), 0);
+
+       if (likely(!needed_headroom && !needed_tailroom && !skb_cloned(skb)))
+               /* No reallocation needed, yay! */
+               return 0;
+
+       return pskb_expand_head(skb, needed_headroom, needed_tailroom,
+                               GFP_ATOMIC);
+}
+EXPORT_SYMBOL(skb_ensure_writable_head_tail);
+
 /* remove VLAN header from packet and update csum accordingly.
  * expects a non skb_vlan_tag_present skb with a vlan tag payload
  */
index d438884a4eb0e5472fab222ee5548814711cb137..b738a466e2dccb9dce8226a1b3c047ba93414b8c 100644 (file)
@@ -920,30 +920,6 @@ netdev_tx_t dsa_enqueue_skb(struct sk_buff *skb, struct net_device *dev)
 }
 EXPORT_SYMBOL_GPL(dsa_enqueue_skb);
 
-static int dsa_realloc_skb(struct sk_buff *skb, struct net_device *dev)
-{
-       int needed_headroom = dev->needed_headroom;
-       int needed_tailroom = dev->needed_tailroom;
-
-       /* For tail taggers, we need to pad short frames ourselves, to ensure
-        * that the tail tag does not fail at its role of being at the end of
-        * the packet, once the conduit interface pads the frame. Account for
-        * that pad length here, and pad later.
-        */
-       if (unlikely(needed_tailroom && skb->len < ETH_ZLEN))
-               needed_tailroom += ETH_ZLEN - skb->len;
-       /* skb_headroom() returns unsigned int... */
-       needed_headroom = max_t(int, needed_headroom - skb_headroom(skb), 0);
-       needed_tailroom = max_t(int, needed_tailroom - skb_tailroom(skb), 0);
-
-       if (likely(!needed_headroom && !needed_tailroom && !skb_cloned(skb)))
-               /* No reallocation needed, yay! */
-               return 0;
-
-       return pskb_expand_head(skb, needed_headroom, needed_tailroom,
-                               GFP_ATOMIC);
-}
-
 static netdev_tx_t dsa_user_xmit(struct sk_buff *skb, struct net_device *dev)
 {
        struct dsa_user_priv *p = netdev_priv(dev);
@@ -956,13 +932,14 @@ static netdev_tx_t dsa_user_xmit(struct sk_buff *skb, struct net_device *dev)
        /* Handle tx timestamp if any */
        dsa_skb_tx_timestamp(p, skb);
 
-       if (dsa_realloc_skb(skb, dev)) {
+       if (skb_ensure_writable_head_tail(skb, dev)) {
                dev_kfree_skb_any(skb);
                return NETDEV_TX_OK;
        }
 
        /* needed_tailroom should still be 'warm' in the cache line from
-        * dsa_realloc_skb(), which has also ensured that padding is safe.
+        * skb_ensure_writable_head_tail(), which has also ensured that
+        * padding is safe.
         */
        if (dev->needed_tailroom)
                eth_skb_pad(skb);