diff options
Diffstat (limited to 'package/mac80211/patches/861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch')
-rw-r--r-- | package/mac80211/patches/861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/package/mac80211/patches/861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch b/package/mac80211/patches/861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch new file mode 100644 index 0000000000..21b1e0e4d7 --- /dev/null +++ b/package/mac80211/patches/861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch @@ -0,0 +1,66 @@ +--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c ++++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +@@ -367,9 +367,10 @@ brcms_ops_add_interface(struct ieee80211 + } + + spin_lock_bh(&wl->lock); +- memcpy(wl->pub->cur_etheraddr, vif->addr, sizeof(vif->addr)); + wl->mute_tx = false; + brcms_c_mute(wl->wlc, false); ++ if (vif->type == NL80211_IFTYPE_STATION) ++ brcms_c_start_station(wl->wlc, vif->addr); + spin_unlock_bh(&wl->lock); + + return 0; +--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c ++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c +@@ -2165,6 +2165,12 @@ void brcms_b_switch_macfreq(struct brcms + } + } + ++void brcms_c_start_station(struct brcms_c_info *wlc, u8 *addr) ++{ ++ memcpy(wlc->pub->cur_etheraddr, addr, sizeof(wlc->pub->cur_etheraddr)); ++ wlc->bsscfg->type = BRCMS_TYPE_STATION; ++} ++ + /* Initialize GPIOs that are controlled by D11 core */ + static void brcms_c_gpio_init(struct brcms_c_info *wlc) + { +--- a/drivers/net/wireless/brcm80211/brcmsmac/main.h ++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.h +@@ -576,10 +576,17 @@ struct antsel_info { + struct brcms_antselcfg antcfg_cur; /* current antenna config (auto) */ + }; + ++enum brcms_bss_type { ++ BRCMS_TYPE_STATION, ++ BRCMS_TYPE_AP, ++ BRCMS_TYPE_ADHOC, ++}; ++ + /* + * BSS configuration state + * + * wlc: wlc to which this bsscfg belongs to. ++ * type: interface type + * up: is this configuration up operational + * enable: is this configuration enabled + * associated: is BSS in ASSOCIATED state +@@ -599,6 +606,7 @@ struct antsel_info { + */ + struct brcms_bss_cfg { + struct brcms_c_info *wlc; ++ enum brcms_bss_type type; + bool up; + bool enable; + bool associated; +--- a/drivers/net/wireless/brcm80211/brcmsmac/pub.h ++++ b/drivers/net/wireless/brcm80211/brcmsmac/pub.h +@@ -333,5 +333,6 @@ extern int brcms_c_get_tx_power(struct b + extern bool brcms_c_check_radio_disabled(struct brcms_c_info *wlc); + extern void brcms_c_mute(struct brcms_c_info *wlc, bool on); + extern bool brcms_c_tx_flush_completed(struct brcms_c_info *wlc); ++extern void brcms_c_start_station(struct brcms_c_info *wlc, u8 *addr); + + #endif /* _BRCM_PUB_H_ */ |