* net: [PATCH] Optimize non-gso test checks
@ 2010-01-20 12:30 Krishna Kumar
2010-01-21 9:26 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Krishna Kumar @ 2010-01-20 12:30 UTC (permalink / raw)
To: davem; +Cc: netdev, Krishna Kumar
From: Krishna Kumar <krkumar2@in.ibm.com>
Avoid checking twice whether skb needs to be linearized, if one
skb_linearize was already done.
Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
---
net/core/dev.c | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff -ruNp org/net/core/dev.c new/net/core/dev.c
--- org/net/core/dev.c 2010-01-18 14:53:02.000000000 +0530
+++ new/net/core/dev.c 2010-01-20 17:58:33.000000000 +0530
@@ -1982,6 +1982,21 @@ static inline int __dev_xmit_skb(struct
return rc;
}
+/*
+ * Returns true if either:
+ * 1. skb has frag_list and the device doesn't support FRAGLIST, or
+ * 2. skb is fragmented and the device does not support SG, or if
+ * at least one of fragments is in highmem and device does not
+ * support DMA from it.
+ */
+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)));
+}
+
/**
* dev_queue_xmit - transmit a buffer
* @skb: buffer to transmit
@@ -2018,18 +2033,8 @@ int dev_queue_xmit(struct sk_buff *skb)
if (netif_needs_gso(dev, skb))
goto gso;
- if (skb_has_frags(skb) &&
- !(dev->features & NETIF_F_FRAGLIST) &&
- __skb_linearize(skb))
- goto out_kfree_skb;
-
- /* Fragmented skb is linearized if device does not support SG,
- * or if at least one of fragments is in highmem and device
- * does not support DMA from it.
- */
- if (skb_shinfo(skb)->nr_frags &&
- (!(dev->features & NETIF_F_SG) || illegal_highdma(dev, skb)) &&
- __skb_linearize(skb))
+ /* Convert a paged skb to linear, if required */
+ if (skb_needs_linearize(skb, dev) && __skb_linearize(skb))
goto out_kfree_skb;
/* If packet is not checksummed and device does not support
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: net: [PATCH] Optimize non-gso test checks
2010-01-20 12:30 net: [PATCH] Optimize non-gso test checks Krishna Kumar
@ 2010-01-21 9:26 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2010-01-21 9:26 UTC (permalink / raw)
To: krkumar2; +Cc: netdev
From: Krishna Kumar <krkumar2@in.ibm.com>
Date: Wed, 20 Jan 2010 18:00:33 +0530
> From: Krishna Kumar <krkumar2@in.ibm.com>
>
> Avoid checking twice whether skb needs to be linearized, if one
> skb_linearize was already done.
>
> Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Applied to net-next-2.6, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-01-21 9:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-20 12:30 net: [PATCH] Optimize non-gso test checks Krishna Kumar
2010-01-21 9:26 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).