From 60ba17b69f9bc3c752555b64e8d6aff9eb263d56 Mon Sep 17 00:00:00 2001 From: hauke Date: Sun, 24 Feb 2013 01:11:20 +0000 Subject: 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. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35763 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...msmac-add-interface-type-to-brcms_bss_cfg.patch | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 package/mac80211/patches/861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch (limited to 'package/mac80211/patches/861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch') 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 000000000..21b1e0e4d --- /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_ */ -- cgit v1.2.3