mac80211: brcmsmac: add ap mode support
[openwrt.git] / package / mac80211 / patches / 861-brcmsmac-add-interface-type-to-brcms_bss_cfg.patch
1 --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
2 +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
3 @@ -367,9 +367,10 @@ brcms_ops_add_interface(struct ieee80211
4         }
5  
6         spin_lock_bh(&wl->lock);
7 -       memcpy(wl->pub->cur_etheraddr, vif->addr, sizeof(vif->addr));
8         wl->mute_tx = false;
9         brcms_c_mute(wl->wlc, false);
10 +       if (vif->type == NL80211_IFTYPE_STATION)
11 +               brcms_c_start_station(wl->wlc, vif->addr);
12         spin_unlock_bh(&wl->lock);
13  
14         return 0;
15 --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
16 +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
17 @@ -2165,6 +2165,12 @@ void brcms_b_switch_macfreq(struct brcms
18         }
19  }
20  
21 +void brcms_c_start_station(struct brcms_c_info *wlc, u8 *addr)
22 +{
23 +       memcpy(wlc->pub->cur_etheraddr, addr, sizeof(wlc->pub->cur_etheraddr));
24 +       wlc->bsscfg->type = BRCMS_TYPE_STATION;
25 +}
26 +
27  /* Initialize GPIOs that are controlled by D11 core */
28  static void brcms_c_gpio_init(struct brcms_c_info *wlc)
29  {
30 --- a/drivers/net/wireless/brcm80211/brcmsmac/main.h
31 +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.h
32 @@ -576,10 +576,17 @@ struct antsel_info {
33         struct brcms_antselcfg antcfg_cur; /* current antenna config (auto) */
34  };
35  
36 +enum brcms_bss_type {
37 +       BRCMS_TYPE_STATION,
38 +       BRCMS_TYPE_AP,
39 +       BRCMS_TYPE_ADHOC,
40 +};
41 +
42  /*
43   * BSS configuration state
44   *
45   * wlc: wlc to which this bsscfg belongs to.
46 + * type: interface type
47   * up: is this configuration up operational
48   * enable: is this configuration enabled
49   * associated: is BSS in ASSOCIATED state
50 @@ -599,6 +606,7 @@ struct antsel_info {
51   */
52  struct brcms_bss_cfg {
53         struct brcms_c_info *wlc;
54 +       enum brcms_bss_type type;
55         bool up;
56         bool enable;
57         bool associated;
58 --- a/drivers/net/wireless/brcm80211/brcmsmac/pub.h
59 +++ b/drivers/net/wireless/brcm80211/brcmsmac/pub.h
60 @@ -333,5 +333,6 @@ extern int brcms_c_get_tx_power(struct b
61  extern bool brcms_c_check_radio_disabled(struct brcms_c_info *wlc);
62  extern void brcms_c_mute(struct brcms_c_info *wlc, bool on);
63  extern bool brcms_c_tx_flush_completed(struct brcms_c_info *wlc);
64 +extern void brcms_c_start_station(struct brcms_c_info *wlc, u8 *addr);
65  
66  #endif                         /* _BRCM_PUB_H_ */