diff options
| author | Mark Brown <broonie@kernel.org> | 2020-12-28 17:20:00 +0300 | 
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2020-12-28 17:20:00 +0300 | 
| commit | 2ae6f64ce1ce304b502461fdfe0b96c8171ae2cc (patch) | |
| tree | 88e987c447daf2c29e2d4c15e58d1029b0cc78c2 /drivers/net/ethernet/freescale/gianfar.c | |
| parent | 3b66e4a8e58a85af3212c7117d7a29c9ef6679a2 (diff) | |
| parent | 5c8fe583cce542aa0b84adc939ce85293de36e5e (diff) | |
| download | linux-2ae6f64ce1ce304b502461fdfe0b96c8171ae2cc.tar.xz | |
Merge tag 'v5.11-rc1' into regulator-5.11
Linux 5.11-rc1
Diffstat (limited to 'drivers/net/ethernet/freescale/gianfar.c')
| -rw-r--r-- | drivers/net/ethernet/freescale/gianfar.c | 14 | 
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c index 41dd3d0f3452..d391a45cebb6 100644 --- a/drivers/net/ethernet/freescale/gianfar.c +++ b/drivers/net/ethernet/freescale/gianfar.c @@ -1829,20 +1829,12 @@ static netdev_tx_t gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)  		fcb_len = GMAC_FCB_LEN + GMAC_TXPAL_LEN;  	/* make space for additional header when fcb is needed */ -	if (fcb_len && unlikely(skb_headroom(skb) < fcb_len)) { -		struct sk_buff *skb_new; - -		skb_new = skb_realloc_headroom(skb, fcb_len); -		if (!skb_new) { +	if (fcb_len) { +		if (unlikely(skb_cow_head(skb, fcb_len))) {  			dev->stats.tx_errors++;  			dev_kfree_skb_any(skb);  			return NETDEV_TX_OK;  		} - -		if (skb->sk) -			skb_set_owner_w(skb_new, skb->sk); -		dev_consume_skb_any(skb); -		skb = skb_new;  	}  	/* total number of fragments in the SKB */ @@ -3380,7 +3372,7 @@ static int gfar_probe(struct platform_device *ofdev)  	if (dev->features & NETIF_F_IP_CSUM ||  	    priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER) -		dev->needed_headroom = GMAC_FCB_LEN; +		dev->needed_headroom = GMAC_FCB_LEN + GMAC_TXPAL_LEN;  	/* Initializing some of the rx/tx queue level parameters */  	for (i = 0; i < priv->num_tx_queues; i++) {  | 
