From 785ca93999778bf58c4b5be94f5da59a0c6a8d95 Mon Sep 17 00:00:00 2001 From: mentor Date: Sat, 7 Jun 2008 03:24:30 +0000 Subject: [PATCH] In the RX path, the SKB needs to be copied if padding needs to be removed. Doing so causes correct operation of monitor mode interfaces to be restored, but is somewhat inefficient. Will tidy up the code in following revisions. git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3711 0192ed92-7a03-0410-a25b-9323aeb14dbd --- ath/if_ath.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ath/if_ath.c b/ath/if_ath.c index ee2786d..3364f29 100644 --- a/ath/if_ath.c +++ b/ath/if_ath.c @@ -6370,7 +6370,7 @@ ath_capture(struct net_device *dev, const struct ath_buf *bf, /* Never copy the SKB, as it is ours on the RX side, and this is the * last process on the TX side and we only modify our own headers. */ - tskb = ath_skb_removepad(skb, 0 /* Copy SKB */); + tskb = ath_skb_removepad(skb, !tx /* Copy SKB */); if (tskb == NULL) { DPRINTF(sc, ATH_DEBUG_ANY, "Dropping; ath_skb_removepad failed!\n"); @@ -6378,6 +6378,8 @@ ath_capture(struct net_device *dev, const struct ath_buf *bf, } ieee80211_input_monitor(ic, tskb, bf, tx, tsf, sc); + if (tskb != skb) + ieee80211_dev_kfree_skb(&tskb); } /*