]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
mac80211: don't drop mesh peering frames from unknown STA
authorMarco Porsch <marco.porsch@etit.tu-chemnitz.de>
Wed, 5 Dec 2012 23:04:26 +0000 (15:04 -0800)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 6 Dec 2012 12:58:43 +0000 (13:58 +0100)
Previously, mesh peering frames from a STA without a station
entry were being dropped.

Mesh Peering Open and other frames (WLAN_CATEGORY_SELF_PROTECTED)
are valid mesh peering frames even if received from a yet unknown
station; the STA entry will be created in mesh_peer_init later.

The problem didn't occur previously since both STAs receive each
other's beacons which created the STA entry. However, this causes
an unnecessary delay and beacons might not be received if either
node is in PS mode.

Signed-off-by: Marco Porsch <marco.porsch@etit.tu-chemnitz.de>
[reword commit log a bit]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rx.c

index e4ee3274899433a8c8d91898ee0430aa03bf5d56..580704eba8b8495e0bdbf2268dfdc197b9983797 100644 (file)
@@ -2333,7 +2333,8 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
        if (len < IEEE80211_MIN_ACTION_SIZE)
                return RX_DROP_UNUSABLE;
 
-       if (!rx->sta && mgmt->u.action.category != WLAN_CATEGORY_PUBLIC)
+       if (!rx->sta && mgmt->u.action.category != WLAN_CATEGORY_PUBLIC &&
+           mgmt->u.action.category != WLAN_CATEGORY_SELF_PROTECTED)
                return RX_DROP_UNUSABLE;
 
        if (!(status->rx_flags & IEEE80211_RX_RA_MATCH))