mac80211: fix suppressing probe responses in ad-hoc mode
authorFelix Fietkau <nbd@openwrt.org>
Thu, 24 Mar 2011 18:46:18 +0000 (19:46 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 4 Apr 2011 20:19:59 +0000 (16:19 -0400)
The commit "mac80211: reply to directed probes in IBSS" changed ad-hoc
specific code to respond to unicast probe requests, even if
drv_tx_last_beacon returns false, however due to confusion over the
meaning of the IEEE80211_RX_RA_MATCH flag, it also unconditionally
enabled responding to multicast probe requests.
Fix this by explicitly checking for a multicast destination address
instead.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/ibss.c

index 3e81af1fce58177da28120b47111283c443fad99..14883966374e76347d5b84e13cc9844526fb6543 100644 (file)
@@ -661,7 +661,6 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
 static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
                                        struct sk_buff *req)
 {
-       struct ieee80211_rx_status *rx_status = IEEE80211_SKB_RXCB(req);
        struct ieee80211_mgmt *mgmt = (void *)req->data;
        struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
        struct ieee80211_local *local = sdata->local;
@@ -685,7 +684,7 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
               mgmt->bssid, tx_last_beacon);
 #endif /* CONFIG_MAC80211_IBSS_DEBUG */
 
-       if (!tx_last_beacon && !(rx_status->rx_flags & IEEE80211_RX_RA_MATCH))
+       if (!tx_last_beacon && is_multicast_ether_addr(mgmt->da))
                return;
 
        if (memcmp(mgmt->bssid, ifibss->bssid, ETH_ALEN) != 0 &&