Commit 056a01ba authored by Madalin Bucur's avatar Madalin Bucur Committed by David S. Miller

dpaa_eth: refactor frag count checking

Signed-off-by: default avatarMadalin Bucur <madalin.bucur@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 81084b35
...@@ -2055,19 +2055,23 @@ static int dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev) ...@@ -2055,19 +2055,23 @@ static int dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
/* MAX_SKB_FRAGS is equal or larger than our dpaa_SGT_MAX_ENTRIES; /* MAX_SKB_FRAGS is equal or larger than our dpaa_SGT_MAX_ENTRIES;
* make sure we don't feed FMan with more fragments than it supports. * make sure we don't feed FMan with more fragments than it supports.
*/ */
if (nonlinear && if (unlikely(nonlinear &&
likely(skb_shinfo(skb)->nr_frags < DPAA_SGT_MAX_ENTRIES)) { (skb_shinfo(skb)->nr_frags >= DPAA_SGT_MAX_ENTRIES))) {
/* Just create a S/G fd based on the skb */
err = skb_to_sg_fd(priv, skb, &fd);
percpu_priv->tx_frag_skbuffs++;
} else {
/* If the egress skb contains more fragments than we support /* If the egress skb contains more fragments than we support
* we have no choice but to linearize it ourselves. * we have no choice but to linearize it ourselves.
*/ */
if (unlikely(nonlinear) && __skb_linearize(skb)) if (__skb_linearize(skb))
goto enomem; goto enomem;
/* Finally, create a contig FD from this skb */ nonlinear = skb_is_nonlinear(skb);
}
if (nonlinear) {
/* Just create a S/G fd based on the skb */
err = skb_to_sg_fd(priv, skb, &fd);
percpu_priv->tx_frag_skbuffs++;
} else {
/* Create a contig FD from this skb */
err = skb_to_contig_fd(priv, skb, &fd, &offset); err = skb_to_contig_fd(priv, skb, &fd, &offset);
} }
if (unlikely(err < 0)) if (unlikely(err < 0))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment