|
@@ -2103,9 +2103,10 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q,
|
|
|
static inline int skb_needs_linearize(struct sk_buff *skb,
|
|
|
struct net_device *dev)
|
|
|
{
|
|
|
- return (skb_has_frags(skb) && !(dev->features & NETIF_F_FRAGLIST)) ||
|
|
|
- (skb_shinfo(skb)->nr_frags && (!(dev->features & NETIF_F_SG) ||
|
|
|
- illegal_highdma(dev, skb)));
|
|
|
+ return skb_is_nonlinear(skb) &&
|
|
|
+ ((skb_has_frags(skb) && !(dev->features & NETIF_F_FRAGLIST)) ||
|
|
|
+ (skb_shinfo(skb)->nr_frags && (!(dev->features & NETIF_F_SG) ||
|
|
|
+ illegal_highdma(dev, skb))));
|
|
|
}
|
|
|
|
|
|
/**
|