aboutsummaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch
diff options
context:
space:
mode:
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.patch66
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 0000000..21b1e0e
--- /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_ */