brcmsmac: add interface type to brcms_bss_cfg

This makes it possible to easily check in which mode the device is
currently running. This also adds a function to start station mode.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Hauke Mehrtens 2013-03-24 01:45:50 +01:00 committed by John W. Linville
parent 39b2d36c8a
commit 70268ce280
4 changed files with 17 additions and 1 deletions

View File

@ -365,9 +365,10 @@ brcms_ops_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
} }
spin_lock_bh(&wl->lock); spin_lock_bh(&wl->lock);
memcpy(wl->pub->cur_etheraddr, vif->addr, sizeof(vif->addr));
wl->mute_tx = false; wl->mute_tx = false;
brcms_c_mute(wl->wlc, 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); spin_unlock_bh(&wl->lock);
return 0; return 0;

View File

@ -2163,6 +2163,12 @@ void brcms_b_switch_macfreq(struct brcms_hardware *wlc_hw, u8 spurmode)
} }
} }
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 */ /* Initialize GPIOs that are controlled by D11 core */
static void brcms_c_gpio_init(struct brcms_c_info *wlc) static void brcms_c_gpio_init(struct brcms_c_info *wlc)
{ {

View File

@ -576,10 +576,17 @@ struct antsel_info {
struct brcms_antselcfg antcfg_cur; /* current antenna config (auto) */ 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 * BSS configuration state
* *
* wlc: wlc to which this bsscfg belongs to. * wlc: wlc to which this bsscfg belongs to.
* type: interface type
* up: is this configuration up operational * up: is this configuration up operational
* enable: is this configuration enabled * enable: is this configuration enabled
* associated: is BSS in ASSOCIATED state * associated: is BSS in ASSOCIATED state
@ -599,6 +606,7 @@ struct antsel_info {
*/ */
struct brcms_bss_cfg { struct brcms_bss_cfg {
struct brcms_c_info *wlc; struct brcms_c_info *wlc;
enum brcms_bss_type type;
bool up; bool up;
bool enable; bool enable;
bool associated; bool associated;

View File

@ -333,5 +333,6 @@ extern int brcms_c_get_tx_power(struct brcms_c_info *wlc);
extern bool brcms_c_check_radio_disabled(struct brcms_c_info *wlc); 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 void brcms_c_mute(struct brcms_c_info *wlc, bool on);
extern bool brcms_c_tx_flush_completed(struct brcms_c_info *wlc); 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_ */ #endif /* _BRCM_PUB_H_ */