* [PATCH] llc: avoid skb_clone() if there is only one handler
@ 2011-02-22 11:55 Changli Gao
2011-02-28 20:29 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Changli Gao @ 2011-02-22 11:55 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo; +Cc: David S. Miller, netdev, Changli Gao
Signed-off-by: Changli Gao <xiaosuo@gmail.com>
---
net/llc/llc_input.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/net/llc/llc_input.c b/net/llc/llc_input.c
index f996874..058f1e9 100644
--- a/net/llc/llc_input.c
+++ b/net/llc/llc_input.c
@@ -181,25 +181,26 @@ int llc_rcv(struct sk_buff *skb, struct net_device *dev,
* LLC functionality
*/
rcv = rcu_dereference(sap->rcv_func);
- if (rcv) {
- struct sk_buff *cskb = skb_clone(skb, GFP_ATOMIC);
- if (cskb)
- rcv(cskb, dev, pt, orig_dev);
- }
dest = llc_pdu_type(skb);
- if (unlikely(!dest || !llc_type_handlers[dest - 1]))
- goto drop_put;
- llc_type_handlers[dest - 1](sap, skb);
-out_put:
+ if (unlikely(!dest || !llc_type_handlers[dest - 1])) {
+ if (rcv)
+ rcv(skb, dev, pt, orig_dev);
+ else
+ kfree_skb(skb);
+ } else {
+ if (rcv) {
+ struct sk_buff *cskb = skb_clone(skb, GFP_ATOMIC);
+ if (cskb)
+ rcv(cskb, dev, pt, orig_dev);
+ }
+ llc_type_handlers[dest - 1](sap, skb);
+ }
llc_sap_put(sap);
out:
return 0;
drop:
kfree_skb(skb);
goto out;
-drop_put:
- kfree_skb(skb);
- goto out_put;
handle_station:
if (!llc_station_handler)
goto drop;
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] llc: avoid skb_clone() if there is only one handler
2011-02-22 11:55 [PATCH] llc: avoid skb_clone() if there is only one handler Changli Gao
@ 2011-02-28 20:29 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2011-02-28 20:29 UTC (permalink / raw)
To: xiaosuo; +Cc: acme, netdev
From: Changli Gao <xiaosuo@gmail.com>
Date: Tue, 22 Feb 2011 19:55:18 +0800
> Signed-off-by: Changli Gao <xiaosuo@gmail.com>
Applied to net-next-2.6, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-02-28 20:28 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-22 11:55 [PATCH] llc: avoid skb_clone() if there is only one handler Changli Gao
2011-02-28 20:29 ` 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).