diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2013-02-24 01:11:20 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2013-02-24 01:11:20 +0000 |
commit | 2754907a13a9b7c38e0b9fabdb642a6a8155e4fa (patch) | |
tree | 6301437f883017f4f67618e61cee05d195b339cb /package/mac80211/patches/870-brcmsmac-react-on-changing-SSID.patch | |
parent | 414a2631b64b0b0bfab0c1bf1fdff985b63e1ff0 (diff) | |
download | mtk-20170518-2754907a13a9b7c38e0b9fabdb642a6a8155e4fa.zip mtk-20170518-2754907a13a9b7c38e0b9fabdb642a6a8155e4fa.tar.gz mtk-20170518-2754907a13a9b7c38e0b9fabdb642a6a8155e4fa.tar.bz2 |
mac80211: brcmsmac: add ap mode support
This does not work very well. I did not got this running in 5GHz mode and it was not very fast.
SVN-Revision: 35763
Diffstat (limited to 'package/mac80211/patches/870-brcmsmac-react-on-changing-SSID.patch')
-rw-r--r-- | package/mac80211/patches/870-brcmsmac-react-on-changing-SSID.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/package/mac80211/patches/870-brcmsmac-react-on-changing-SSID.patch b/package/mac80211/patches/870-brcmsmac-react-on-changing-SSID.patch new file mode 100644 index 0000000..34969ad --- /dev/null +++ b/package/mac80211/patches/870-brcmsmac-react-on-changing-SSID.patch @@ -0,0 +1,43 @@ +--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c ++++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +@@ -523,6 +523,12 @@ brcms_ops_bss_info_changed(struct ieee80 + brcms_c_set_addrmatch(wl->wlc, RCM_BSSID_OFFSET, info->bssid); + spin_unlock_bh(&wl->lock); + } ++ if (changed & BSS_CHANGED_SSID) { ++ /* BSSID changed, for whatever reason (IBSS and managed mode) */ ++ spin_lock_bh(&wl->lock); ++ brcms_c_set_ssid(wl->wlc, info->ssid, info->ssid_len); ++ spin_unlock_bh(&wl->lock); ++ } + if (changed & BSS_CHANGED_BEACON) { + /* Beacon data changed, retrieve new beacon (beaconing modes) */ + struct sk_buff *beacon; +--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c ++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c +@@ -3785,6 +3785,15 @@ static void brcms_c_set_bssid(struct brc + brcms_c_set_addrmatch(bsscfg->wlc, RCM_BSSID_OFFSET, bsscfg->BSSID); + } + ++void brcms_c_set_ssid(struct brcms_c_info *wlc, u8 *ssid, size_t ssid_len) ++{ ++ u8 len = min_t(u8, sizeof(wlc->bsscfg->SSID), ssid_len); ++ memset(wlc->bsscfg->SSID, 0, sizeof(wlc->bsscfg->SSID)); ++ ++ memcpy(wlc->bsscfg->SSID, ssid, len); ++ wlc->bsscfg->SSID_len = len; ++} ++ + static void brcms_b_set_shortslot(struct brcms_hardware *wlc_hw, bool shortslot) + { + wlc_hw->shortslot = shortslot; +--- a/drivers/net/wireless/brcm80211/brcmsmac/pub.h ++++ b/drivers/net/wireless/brcm80211/brcmsmac/pub.h +@@ -336,5 +336,7 @@ extern void brcms_c_update_beacon(struct + extern void brcms_c_set_new_beacon(struct brcms_c_info *wlc, + struct sk_buff *beacon, u16 tim_offset, + u16 dtim_period); ++extern void brcms_c_set_ssid(struct brcms_c_info *wlc, u8 *ssid, ++ size_t ssid_len); + + #endif /* _BRCM_PUB_H_ */ |