diff options
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/mlme.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 7b4d4d46843b..c9f7c13d2e7e 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -747,6 +747,10 @@ static void ieee80211_send_assoc(struct net_device *dev, | |||
747 | * b-only mode) */ | 747 | * b-only mode) */ |
748 | rates_len = ieee80211_compatible_rates(bss, sband, &rates); | 748 | rates_len = ieee80211_compatible_rates(bss, sband, &rates); |
749 | 749 | ||
750 | if ((bss->capability & WLAN_CAPABILITY_SPECTRUM_MGMT) && | ||
751 | (local->hw.flags & IEEE80211_HW_SPECTRUM_MGMT)) | ||
752 | capab |= WLAN_CAPABILITY_SPECTRUM_MGMT; | ||
753 | |||
750 | ieee80211_rx_bss_put(dev, bss); | 754 | ieee80211_rx_bss_put(dev, bss); |
751 | } else { | 755 | } else { |
752 | rates = ~0; | 756 | rates = ~0; |
@@ -814,6 +818,26 @@ static void ieee80211_send_assoc(struct net_device *dev, | |||
814 | } | 818 | } |
815 | } | 819 | } |
816 | 820 | ||
821 | if (capab & WLAN_CAPABILITY_SPECTRUM_MGMT) { | ||
822 | /* 1. power capabilities */ | ||
823 | pos = skb_put(skb, 4); | ||
824 | *pos++ = WLAN_EID_PWR_CAPABILITY; | ||
825 | *pos++ = 2; | ||
826 | *pos++ = 0; /* min tx power */ | ||
827 | *pos++ = local->hw.conf.channel->max_power; /* max tx power */ | ||
828 | |||
829 | /* 2. supported channels */ | ||
830 | /* TODO: get this in reg domain format */ | ||
831 | pos = skb_put(skb, 2 * sband->n_channels + 2); | ||
832 | *pos++ = WLAN_EID_SUPPORTED_CHANNELS; | ||
833 | *pos++ = 2 * sband->n_channels; | ||
834 | for (i = 0; i < sband->n_channels; i++) { | ||
835 | *pos++ = ieee80211_frequency_to_channel( | ||
836 | sband->channels[i].center_freq); | ||
837 | *pos++ = 1; /* one channel in the subband*/ | ||
838 | } | ||
839 | } | ||
840 | |||
817 | if (ifsta->extra_ie) { | 841 | if (ifsta->extra_ie) { |
818 | pos = skb_put(skb, ifsta->extra_ie_len); | 842 | pos = skb_put(skb, ifsta->extra_ie_len); |
819 | memcpy(pos, ifsta->extra_ie, ifsta->extra_ie_len); | 843 | memcpy(pos, ifsta->extra_ie, ifsta->extra_ie_len); |