dpaa_eth: refactor frag count checking
Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
81084b3547
commit
056a01ba94
@ -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;
|
||||
* make sure we don't feed FMan with more fragments than it supports.
|
||||
*/
|
||||
if (nonlinear &&
|
||||
likely(skb_shinfo(skb)->nr_frags < DPAA_SGT_MAX_ENTRIES)) {
|
||||
if (unlikely(nonlinear &&
|
||||
(skb_shinfo(skb)->nr_frags >= DPAA_SGT_MAX_ENTRIES))) {
|
||||
/* If the egress skb contains more fragments than we support
|
||||
* we have no choice but to linearize it ourselves.
|
||||
*/
|
||||
if (__skb_linearize(skb))
|
||||
goto enomem;
|
||||
|
||||
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 {
|
||||
/* If the egress skb contains more fragments than we support
|
||||
* we have no choice but to linearize it ourselves.
|
||||
*/
|
||||
if (unlikely(nonlinear) && __skb_linearize(skb))
|
||||
goto enomem;
|
||||
|
||||
/* Finally, create a contig FD from this skb */
|
||||
/* Create a contig FD from this skb */
|
||||
err = skb_to_contig_fd(priv, skb, &fd, &offset);
|
||||
}
|
||||
if (unlikely(err < 0))
|
||||
|
Loading…
Reference in New Issue
Block a user