From patchwork Mon Sep 20 06:42:37 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Greear X-Patchwork-Id: 194232 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id o8K6gf2F023980 for ; Mon, 20 Sep 2010 06:42:41 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751814Ab0ITGmj (ORCPT ); Mon, 20 Sep 2010 02:42:39 -0400 Received: from mail.candelatech.com ([208.74.158.172]:49164 "EHLO ns3.lanforge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751370Ab0ITGmj (ORCPT ); Mon, 20 Sep 2010 02:42:39 -0400 Received: from [71.117.12.23] (pool-71-117-12-23.sttlwa.dsl-w.verizon.net [71.117.12.23]) (authenticated bits=0) by ns3.lanforge.com (8.14.2/8.14.2) with ESMTP id o8K6gcPU017283 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sun, 19 Sep 2010 23:42:38 -0700 Message-ID: <4C97025D.9050006@candelatech.com> Date: Sun, 19 Sep 2010 23:42:37 -0700 From: Ben Greear Organization: Candela Technologies User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100907 Fedora/3.1.3-1.fc13 Thunderbird/3.1.3 MIME-Version: 1.0 To: "linux-wireless@vger.kernel.org" Subject: __ieee80211_rx_handle_packet problem with multiple vifs. Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Mon, 20 Sep 2010 06:42:41 +0000 (UTC) diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index ac205a3..521b086 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -2657,8 +2657,19 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, if (status->flag & RX_FLAG_MMIC_ERROR) { if (rx.flags & IEEE80211_RX_RA_MATCH) ieee80211_rx_michael_mic_report(hdr, &rx); - } else - prev = rx.sdata; + } else { + if (prev) { + skb_new = skb_copy(skb, GFP_ATOMIC); + if (!skb_new) { + if (net_ratelimit()) + wiphy_debug(local->hw.wiphy, + "failed to copy data frame for %s\n + prev->name); + } else + ieee80211_invoke_rx_handlers(prev, &rx, skb_new); + } + prev = sta->sdata; + } } } }