net: rename dsa_realloc_skb to skb_ensure_writable_head_tail
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>
This commit is contained in:
committed by
David S. Miller
parent
c2b2ee3625
commit
90abde49ea
@ -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);
|
||||
|
Reference in New Issue
Block a user