procd: fix wrap around bug in logread time handling code
[openwrt/svn-archive/archive.git] / package / mac80211 / patches / 870-brcmsmac-react-on-changing-SSID.patch
1 --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
2 +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
3 @@ -523,6 +523,12 @@ brcms_ops_bss_info_changed(struct ieee80
4 brcms_c_set_addrmatch(wl->wlc, RCM_BSSID_OFFSET, info->bssid);
5 spin_unlock_bh(&wl->lock);
6 }
7 + if (changed & BSS_CHANGED_SSID) {
8 + /* BSSID changed, for whatever reason (IBSS and managed mode) */
9 + spin_lock_bh(&wl->lock);
10 + brcms_c_set_ssid(wl->wlc, info->ssid, info->ssid_len);
11 + spin_unlock_bh(&wl->lock);
12 + }
13 if (changed & BSS_CHANGED_BEACON) {
14 /* Beacon data changed, retrieve new beacon (beaconing modes) */
15 struct sk_buff *beacon;
16 --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
17 +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
18 @@ -3785,6 +3785,15 @@ static void brcms_c_set_bssid(struct brc
19 brcms_c_set_addrmatch(bsscfg->wlc, RCM_BSSID_OFFSET, bsscfg->BSSID);
20 }
21
22 +void brcms_c_set_ssid(struct brcms_c_info *wlc, u8 *ssid, size_t ssid_len)
23 +{
24 + u8 len = min_t(u8, sizeof(wlc->bsscfg->SSID), ssid_len);
25 + memset(wlc->bsscfg->SSID, 0, sizeof(wlc->bsscfg->SSID));
26 +
27 + memcpy(wlc->bsscfg->SSID, ssid, len);
28 + wlc->bsscfg->SSID_len = len;
29 +}
30 +
31 static void brcms_b_set_shortslot(struct brcms_hardware *wlc_hw, bool shortslot)
32 {
33 wlc_hw->shortslot = shortslot;
34 --- a/drivers/net/wireless/brcm80211/brcmsmac/pub.h
35 +++ b/drivers/net/wireless/brcm80211/brcmsmac/pub.h
36 @@ -336,5 +336,7 @@ extern void brcms_c_update_beacon(struct
37 extern void brcms_c_set_new_beacon(struct brcms_c_info *wlc,
38 struct sk_buff *beacon, u16 tim_offset,
39 u16 dtim_period);
40 +extern void brcms_c_set_ssid(struct brcms_c_info *wlc, u8 *ssid,
41 + size_t ssid_len);
42
43 #endif /* _BRCM_PUB_H_ */