staging: brcm80211: remove filtering of received frames
authorArend van Spriel <arend@broadcom.com>
Tue, 4 Oct 2011 21:18:49 +0000 (23:18 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 5 Oct 2011 20:39:00 +0000 (13:39 -0700)
In the receive path of the brcmsmac driver probe request frames and
frames with invalid mac address fields are dropped. This is only
fine for STA mode. Anticipating coming AP and monitor mode functionality
this is unwanted behavior.

Reported-by: Johannes Berg <johannes@sipsolutions.net>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Roland Vossen <rvossen@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/brcm80211/brcmsmac/main.c

index efc6682fcbe489943b97777f0efd3734048b2a08..39b91d6b763196e37e4d51cb99670c2ea879ca68 100644 (file)
@@ -8238,29 +8238,8 @@ void brcms_c_recv(struct brcms_c_info *wlc, struct sk_buff *p)
        if (len < D11_PHY_HDR_LEN + sizeof(h->frame_control))
                goto toss;
 
+       /* not supporting A-MSDU */
        is_amsdu = rxh->RxStatus2 & RXS_AMSDU_MASK;
-
-       /* explicitly test bad src address to avoid sending bad deauth */
-       if (!is_amsdu) {
-               /* CTS and ACK CTL frames are w/o a2 */
-
-               if (ieee80211_is_data(h->frame_control) ||
-                   ieee80211_is_mgmt(h->frame_control)) {
-                       if ((is_zero_ether_addr(h->addr2) ||
-                            is_multicast_ether_addr(h->addr2))) {
-                               wiphy_err(wlc->wiphy, "wl%d: %s: dropping a "
-                                         "frame with invalid src mac address,"
-                                         " a2: %pM\n",
-                                        wlc->pub->unit, __func__, h->addr2);
-                               goto toss;
-                       }
-               }
-       }
-
-       /* due to sheer numbers, toss out probe reqs for now */
-       if (ieee80211_is_probe_req(h->frame_control))
-               goto toss;
-
        if (is_amsdu)
                goto toss;