Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e87474a6 authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller
Browse files

net: systemport: fix bcm_sysport_insert_tsb()



Similar to commit bc23333b ("net:
bcmgenet: fix bcmgenet_put_tx_csum()"), we need to return the skb
pointer in case we had to reallocate the SKB headroom.

Fixes: 80105bef ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3be07244
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -848,7 +848,8 @@ static irqreturn_t bcm_sysport_wol_isr(int irq, void *dev_id)
	return IRQ_HANDLED;
}

static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
static struct sk_buff *bcm_sysport_insert_tsb(struct sk_buff *skb,
					      struct net_device *dev)
{
	struct sk_buff *nskb;
	struct bcm_tsb *tsb;
@@ -864,7 +865,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
		if (!nskb) {
			dev->stats.tx_errors++;
			dev->stats.tx_dropped++;
			return -ENOMEM;
			return NULL;
		}
		skb = nskb;
	}
@@ -883,7 +884,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
			ip_proto = ipv6_hdr(skb)->nexthdr;
			break;
		default:
			return 0;
			return skb;
		}

		/* Get the checksum offset and the L4 (transport) offset */
@@ -902,7 +903,7 @@ static int bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev)
		tsb->l4_ptr_dest_map = csum_info;
	}

	return 0;
	return skb;
}

static netdev_tx_t bcm_sysport_xmit(struct sk_buff *skb,
@@ -936,8 +937,8 @@ static netdev_tx_t bcm_sysport_xmit(struct sk_buff *skb,

	/* Insert TSB and checksum infos */
	if (priv->tsb_en) {
		ret = bcm_sysport_insert_tsb(skb, dev);
		if (ret) {
		skb = bcm_sysport_insert_tsb(skb, dev);
		if (!skb) {
			ret = NETDEV_TX_OK;
			goto out;
		}