mirror of https://gitee.com/openkylin/linux.git
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
John W. Linville says: ==================== Here is another handful of late-breaking fixes intended for the 3.8 stream... Hopefully the will still make it! :-) There are three mac80211 fixes pulled from Johannes: "Here are three fixes still for the 3.8 stream, the fix from Cong Ding for the bad sizeof (Stephen Hemminger had pointed it out before but I'd promptly forgotten), a mac80211 managed-mode channel context usage fix where a downgrade would never stop until reaching non-HT and a bug in the channel determination that could cause invalid channels like HT40+ on channel 11 to be used." Also included is a mwl8k fix that avoids an oops when using mwl8k devices that only support the 5 GHz band. Please let me know if there are problems! ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
37d51101ec
|
@ -318,20 +318,20 @@ struct mwl8k_sta {
|
|||
#define MWL8K_STA(_sta) ((struct mwl8k_sta *)&((_sta)->drv_priv))
|
||||
|
||||
static const struct ieee80211_channel mwl8k_channels_24[] = {
|
||||
{ .center_freq = 2412, .hw_value = 1, },
|
||||
{ .center_freq = 2417, .hw_value = 2, },
|
||||
{ .center_freq = 2422, .hw_value = 3, },
|
||||
{ .center_freq = 2427, .hw_value = 4, },
|
||||
{ .center_freq = 2432, .hw_value = 5, },
|
||||
{ .center_freq = 2437, .hw_value = 6, },
|
||||
{ .center_freq = 2442, .hw_value = 7, },
|
||||
{ .center_freq = 2447, .hw_value = 8, },
|
||||
{ .center_freq = 2452, .hw_value = 9, },
|
||||
{ .center_freq = 2457, .hw_value = 10, },
|
||||
{ .center_freq = 2462, .hw_value = 11, },
|
||||
{ .center_freq = 2467, .hw_value = 12, },
|
||||
{ .center_freq = 2472, .hw_value = 13, },
|
||||
{ .center_freq = 2484, .hw_value = 14, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2412, .hw_value = 1, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2417, .hw_value = 2, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2422, .hw_value = 3, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2427, .hw_value = 4, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2432, .hw_value = 5, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2437, .hw_value = 6, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2442, .hw_value = 7, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2447, .hw_value = 8, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2452, .hw_value = 9, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2457, .hw_value = 10, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2462, .hw_value = 11, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2467, .hw_value = 12, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2472, .hw_value = 13, },
|
||||
{ .band = IEEE80211_BAND_2GHZ, .center_freq = 2484, .hw_value = 14, },
|
||||
};
|
||||
|
||||
static const struct ieee80211_rate mwl8k_rates_24[] = {
|
||||
|
@ -352,10 +352,10 @@ static const struct ieee80211_rate mwl8k_rates_24[] = {
|
|||
};
|
||||
|
||||
static const struct ieee80211_channel mwl8k_channels_50[] = {
|
||||
{ .center_freq = 5180, .hw_value = 36, },
|
||||
{ .center_freq = 5200, .hw_value = 40, },
|
||||
{ .center_freq = 5220, .hw_value = 44, },
|
||||
{ .center_freq = 5240, .hw_value = 48, },
|
||||
{ .band = IEEE80211_BAND_5GHZ, .center_freq = 5180, .hw_value = 36, },
|
||||
{ .band = IEEE80211_BAND_5GHZ, .center_freq = 5200, .hw_value = 40, },
|
||||
{ .band = IEEE80211_BAND_5GHZ, .center_freq = 5220, .hw_value = 44, },
|
||||
{ .band = IEEE80211_BAND_5GHZ, .center_freq = 5240, .hw_value = 48, },
|
||||
};
|
||||
|
||||
static const struct ieee80211_rate mwl8k_rates_50[] = {
|
||||
|
|
|
@ -2004,7 +2004,8 @@ static int ieee80211_set_mcast_rate(struct wiphy *wiphy, struct net_device *dev,
|
|||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
|
||||
memcpy(sdata->vif.bss_conf.mcast_rate, rate, sizeof(rate));
|
||||
memcpy(sdata->vif.bss_conf.mcast_rate, rate,
|
||||
sizeof(int) * IEEE80211_NUM_BANDS);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -3400,6 +3400,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
|
|||
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
while (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef,
|
||||
IEEE80211_CHAN_DISABLED)) {
|
||||
if (WARN_ON(chandef->width == NL80211_CHAN_WIDTH_20_NOHT)) {
|
||||
|
@ -3408,14 +3409,13 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
|
|||
goto out;
|
||||
}
|
||||
|
||||
ret = chandef_downgrade(chandef);
|
||||
ret |= chandef_downgrade(chandef);
|
||||
}
|
||||
|
||||
if (chandef->width != vht_chandef.width)
|
||||
sdata_info(sdata,
|
||||
"local regulatory prevented using AP HT/VHT configuration, downgraded\n");
|
||||
"capabilities/regulatory prevented using AP HT/VHT configuration, downgraded\n");
|
||||
|
||||
out:
|
||||
WARN_ON_ONCE(!cfg80211_chandef_valid(chandef));
|
||||
return ret;
|
||||
}
|
||||
|
@ -3529,8 +3529,11 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
|
|||
*/
|
||||
ret = ieee80211_vif_use_channel(sdata, &chandef,
|
||||
IEEE80211_CHANCTX_SHARED);
|
||||
while (ret && chandef.width != NL80211_CHAN_WIDTH_20_NOHT)
|
||||
while (ret && chandef.width != NL80211_CHAN_WIDTH_20_NOHT) {
|
||||
ifmgd->flags |= chandef_downgrade(&chandef);
|
||||
ret = ieee80211_vif_use_channel(sdata, &chandef,
|
||||
IEEE80211_CHANCTX_SHARED);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue