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

Commit 2ea25513 authored by David S. Miller's avatar David S. Miller
Browse files

net: Create xmit_one() helper for dev_hard_start_xmit()



Hopefully making the code a bit easier to read and digest.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 10b3ad8c
Loading
Loading
Loading
Loading
+19 −16
Original line number Diff line number Diff line
@@ -2599,11 +2599,27 @@ netdev_features_t netif_skb_features(struct sk_buff *skb)
}
EXPORT_SYMBOL(netif_skb_features);

static int xmit_one(struct sk_buff *skb, struct net_device *dev,
		    struct netdev_queue *txq)
{
	unsigned int len;
	int rc;

	if (!list_empty(&ptype_all))
		dev_queue_xmit_nit(skb, dev);

	len = skb->len;
	trace_net_dev_start_xmit(skb, dev);
	rc = netdev_start_xmit(skb, dev, txq);
	trace_net_dev_xmit(skb, rc, dev, len);

	return rc;
}

int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
			struct netdev_queue *txq)
{
	int rc = NETDEV_TX_OK;
	unsigned int skb_len;

	if (likely(!skb->next)) {
		netdev_features_t features;
@@ -2661,14 +2677,7 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
			}
		}

		if (!list_empty(&ptype_all))
			dev_queue_xmit_nit(skb, dev);

		skb_len = skb->len;
		trace_net_dev_start_xmit(skb, dev);
		rc = netdev_start_xmit(skb, dev, txq);
		trace_net_dev_xmit(skb, rc, dev, skb_len);
		return rc;
		return xmit_one(skb, dev, txq);
	}

gso:
@@ -2678,13 +2687,7 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
		skb->next = nskb->next;
		nskb->next = NULL;

		if (!list_empty(&ptype_all))
			dev_queue_xmit_nit(nskb, dev);

		skb_len = nskb->len;
		trace_net_dev_start_xmit(nskb, dev);
		rc = netdev_start_xmit(nskb, dev, txq);
		trace_net_dev_xmit(nskb, rc, dev, skb_len);
		rc = xmit_one(nskb, dev, txq);
		if (unlikely(rc != NETDEV_TX_OK)) {
			if (rc & ~NETDEV_TX_MASK)
				goto out_kfree_gso_skb;