BSSID shouldn't be common for all interfaces.

Signed-off-by: Jiri Benc <[EMAIL PROTECTED]>

Index: dscape/net/d80211/ieee80211.c
===================================================================
--- dscape.orig/net/d80211/ieee80211.c  2006-03-06 14:10:07.000000000 +0100
+++ dscape/net/d80211/ieee80211.c       2006-03-06 14:10:15.000000000 +0100
@@ -2063,7 +2063,7 @@ ieee80211_rx_h_data(struct ieee80211_txr
                memcpy(src, hdr->addr2, ETH_ALEN);
 
                if (sdata->type != IEEE80211_SUB_IF_TYPE_IBSS ||
-                   memcmp(hdr->addr3, local->bssid, ETH_ALEN) != 0) {
+                   memcmp(hdr->addr3, sdata->u.sta.bssid, ETH_ALEN) != 0) {
                        if (net_ratelimit()) {
                                printk(KERN_DEBUG "%s: dropped IBSS frame (DA="
                                       MACSTR " SA=" MACSTR " BSSID=" MACSTR
@@ -2803,7 +2803,7 @@ ieee80211_rx_h_sta_process(struct ieee80
         * other STAs are using different BSSID. */
        if (rx->sdata->type == IEEE80211_SUB_IF_TYPE_IBSS) {
                u8 *bssid = ieee80211_get_bssid(hdr, rx->skb->len);
-               if (memcmp(bssid, rx->local->bssid, ETH_ALEN) == 0)
+               if (memcmp(bssid, rx->sdata->u.sta.bssid, ETH_ALEN) == 0)
                        sta->last_rx = jiffies;
        } else
        if (!MULTICAST_ADDR(hdr->addr1) ||
Index: dscape/net/d80211/ieee80211_i.h
===================================================================
--- dscape.orig/net/d80211/ieee80211_i.h        2006-03-06 14:10:01.000000000 
+0100
+++ dscape/net/d80211/ieee80211_i.h     2006-03-06 14:10:15.000000000 +0100
@@ -433,7 +433,6 @@ struct ieee80211_local {
         u32 stat_time;
         struct timer_list stat_timer;
 
-       u8 bssid[ETH_ALEN]; /* BSSID for STA modes (Adhoc/Managed) */
         struct timer_list rate_limit_timer;
         u32 rate_limit;
         u32 rate_limit_burst;
Index: dscape/net/d80211/ieee80211_sta.c
===================================================================
--- dscape.orig/net/d80211/ieee80211_sta.c      2006-03-06 14:10:07.000000000 
+0100
+++ dscape/net/d80211/ieee80211_sta.c   2006-03-06 14:10:15.000000000 +0100
@@ -1365,7 +1365,7 @@ static void ieee80211_rx_bss_info(struct
                ((u64) pos[1] << 8) | ((u64) pos[0]);
 
        if (sdata->type == IEEE80211_SUB_IF_TYPE_IBSS && beacon &&
-           memcmp(mgmt->bssid, local->bssid, ETH_ALEN) == 0) {
+           memcmp(mgmt->bssid, sdata->u.sta.bssid, ETH_ALEN) == 0) {
 #ifdef IEEE80211_IBSS_DEBUG
                static unsigned long last_tsf_debug = 0;
                u64 tsf;
@@ -1389,7 +1389,7 @@ static void ieee80211_rx_bss_info(struct
                invalid = 1;
 
        if (sdata->type == IEEE80211_SUB_IF_TYPE_IBSS && elems.supp_rates &&
-           memcmp(mgmt->bssid, local->bssid, ETH_ALEN) == 0 &&
+           memcmp(mgmt->bssid, sdata->u.sta.bssid, ETH_ALEN) == 0 &&
            (sta = sta_info_get(local, mgmt->sa))) {
                struct ieee80211_rate *rates;
                size_t num_rates;
@@ -1990,7 +1990,6 @@ static int ieee80211_sta_join_ibss(struc
                local->hw->reset_tsf(local->mdev);
        }
        memcpy(ifsta->bssid, bss->bssid, ETH_ALEN);
-       memcpy(local->bssid, bss->bssid, ETH_ALEN);
        memcpy(local->conf.client_bssid, bss->bssid, ETH_ALEN);
 
        local->conf.beacon_int = bss->beacon_int >= 10 ? bss->beacon_int : 10;
@@ -2344,7 +2343,6 @@ int ieee80211_sta_get_ssid(struct net_de
 
 int ieee80211_sta_set_bssid(struct net_device *dev, u8 *bssid)
 {
-       struct ieee80211_local *local = dev->priv;
        struct ieee80211_sub_if_data *sdata;
        struct ieee80211_if_sta *ifsta;
 
@@ -2352,8 +2350,6 @@ int ieee80211_sta_set_bssid(struct net_d
        ifsta = &sdata->u.sta;
 
        memcpy(ifsta->bssid, bssid, ETH_ALEN);
-       if (sdata->type == IEEE80211_SUB_IF_TYPE_IBSS)
-               memcpy(local->bssid, bssid, ETH_ALEN);
 
        if (memcmp(bssid, "\x00\x00\x00\x00\x00\x00", ETH_ALEN) == 0)
                ifsta->bssid_set = 0;
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to