mirror of https://gitee.com/openkylin/linux.git
A few patches have accumulated, among them the fix for Linus's
four-way-handshake problem. The others are various small fixes for problems all over, nothing really stands out. -----BEGIN PGP SIGNATURE----- iQIcBAABCAAGBQJU8HQ5AAoJEDBSmw7B7bqrGeUQAK7O/UliGPxPNSMs1Mmb+Fj/ GT51sGhZLYXUj2nMMFTTPuhR5qXdgSsBaonitNQaAmJtMtmO6R21rcd74NDB29i7 1xHgtdxJDyDYh6zWUX6+IETV/eRHuS7vlfiiBY/PHAymAQZVa1doC5nN0yCfPHkd XanD4HRXEZppiw+OVh3VkgvxQZkhqmExQDdYZYWGVm8b3cspqa0l/e9WpLrU/Z19 15liupuhINcDAl5KAsR0oaBy/vUsETA6+H9K4fzZG6bemlaD5T+nkNqjlEPbw806 sMxiWZ7jrI1n5v2KiNHkKTJakzHsz08zb9nooA9swusSImflr8BUm3lNz+IVsqtL zBvtMEiGwNlGkSLdHieICBktXw7/Lw2VUSKgWlRj1LZSXfd3kISXrwdR46NOr93e cBzaGn7H8YrVM2Sl/EraRimYL9womICPr6+flE+YAeRnZzsAFrBd9qegc2N3LTt+ NtTqS/JbGAKyOS84JCge+1omGOKPIuQGBOtEIy1U0zlxibZzEzCulrKSeGjQ8o3Q dfrMYEwpicK4ADh7wxeslD6QlgkcQ/Ft7agkP+ps4m5ngFXo3swup+hxNMDoyyi3 BYiOGDum6SBzrOK8bN4hv3jEHK7e3fo68NeLhJ34Ap4K7jY9kOi8sk7WY8NerZBI 19oVt0+0yyzKVlaI7IQE =H3+7 -----END PGP SIGNATURE----- Merge tag 'mac80211-for-davem-2015-02-27' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211 Johannes Berg says: ==================== A few patches have accumulated, among them the fix for Linus's four-way-handshake problem. The others are various small fixes for problems all over, nothing really stands out. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
32034e0580
|
@ -946,7 +946,8 @@ static void mac80211_hwsim_tx_frame_nl(struct ieee80211_hw *hw,
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
genlmsg_end(skb, msg_head);
|
genlmsg_end(skb, msg_head);
|
||||||
genlmsg_unicast(&init_net, skb, dst_portid);
|
if (genlmsg_unicast(&init_net, skb, dst_portid))
|
||||||
|
goto err_free_txskb;
|
||||||
|
|
||||||
/* Enqueue the packet */
|
/* Enqueue the packet */
|
||||||
skb_queue_tail(&data->pending, my_skb);
|
skb_queue_tail(&data->pending, my_skb);
|
||||||
|
@ -955,6 +956,8 @@ static void mac80211_hwsim_tx_frame_nl(struct ieee80211_hw *hw,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
nla_put_failure:
|
nla_put_failure:
|
||||||
|
nlmsg_free(skb);
|
||||||
|
err_free_txskb:
|
||||||
printk(KERN_DEBUG "mac80211_hwsim: error occurred in %s\n", __func__);
|
printk(KERN_DEBUG "mac80211_hwsim: error occurred in %s\n", __func__);
|
||||||
ieee80211_free_txskb(hw, my_skb);
|
ieee80211_free_txskb(hw, my_skb);
|
||||||
data->tx_failed++;
|
data->tx_failed++;
|
||||||
|
|
|
@ -1508,6 +1508,8 @@ static void __ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata)
|
||||||
if (ieee80211_chanctx_refcount(local, ctx) == 0)
|
if (ieee80211_chanctx_refcount(local, ctx) == 0)
|
||||||
ieee80211_free_chanctx(local, ctx);
|
ieee80211_free_chanctx(local, ctx);
|
||||||
|
|
||||||
|
sdata->radar_required = false;
|
||||||
|
|
||||||
/* Unreserving may ready an in-place reservation. */
|
/* Unreserving may ready an in-place reservation. */
|
||||||
if (use_reserved_switch)
|
if (use_reserved_switch)
|
||||||
ieee80211_vif_use_reserved_switch(local);
|
ieee80211_vif_use_reserved_switch(local);
|
||||||
|
@ -1566,6 +1568,9 @@ int ieee80211_vif_use_channel(struct ieee80211_sub_if_data *sdata,
|
||||||
ieee80211_recalc_smps_chanctx(local, ctx);
|
ieee80211_recalc_smps_chanctx(local, ctx);
|
||||||
ieee80211_recalc_radar_chanctx(local, ctx);
|
ieee80211_recalc_radar_chanctx(local, ctx);
|
||||||
out:
|
out:
|
||||||
|
if (ret)
|
||||||
|
sdata->radar_required = false;
|
||||||
|
|
||||||
mutex_unlock(&local->chanctx_mtx);
|
mutex_unlock(&local->chanctx_mtx);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -373,7 +373,7 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,
|
||||||
rate++;
|
rate++;
|
||||||
mi->sample_deferred++;
|
mi->sample_deferred++;
|
||||||
} else {
|
} else {
|
||||||
if (!msr->sample_limit != 0)
|
if (!msr->sample_limit)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mi->sample_packets++;
|
mi->sample_packets++;
|
||||||
|
|
|
@ -566,6 +566,7 @@ ieee80211_tx_h_check_control_port_protocol(struct ieee80211_tx_data *tx)
|
||||||
if (tx->sdata->control_port_no_encrypt)
|
if (tx->sdata->control_port_no_encrypt)
|
||||||
info->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;
|
info->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;
|
||||||
info->control.flags |= IEEE80211_TX_CTRL_PORT_CTRL_PROTO;
|
info->control.flags |= IEEE80211_TX_CTRL_PORT_CTRL_PROTO;
|
||||||
|
info->flags |= IEEE80211_TX_CTL_USE_MINRATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TX_CONTINUE;
|
return TX_CONTINUE;
|
||||||
|
|
|
@ -1199,6 +1199,7 @@ static int __init cfg80211_init(void)
|
||||||
regulatory_exit();
|
regulatory_exit();
|
||||||
out_fail_reg:
|
out_fail_reg:
|
||||||
debugfs_remove(ieee80211_debugfs_dir);
|
debugfs_remove(ieee80211_debugfs_dir);
|
||||||
|
nl80211_exit();
|
||||||
out_fail_nl80211:
|
out_fail_nl80211:
|
||||||
unregister_netdevice_notifier(&cfg80211_netdev_notifier);
|
unregister_netdevice_notifier(&cfg80211_netdev_notifier);
|
||||||
out_fail_notifier:
|
out_fail_notifier:
|
||||||
|
|
|
@ -2654,10 +2654,6 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
|
|
||||||
if (!msg)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
err = parse_monitor_flags(type == NL80211_IFTYPE_MONITOR ?
|
err = parse_monitor_flags(type == NL80211_IFTYPE_MONITOR ?
|
||||||
info->attrs[NL80211_ATTR_MNTR_FLAGS] : NULL,
|
info->attrs[NL80211_ATTR_MNTR_FLAGS] : NULL,
|
||||||
&flags);
|
&flags);
|
||||||
|
@ -2666,6 +2662,10 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
|
||||||
!(rdev->wiphy.features & NL80211_FEATURE_ACTIVE_MONITOR))
|
!(rdev->wiphy.features & NL80211_FEATURE_ACTIVE_MONITOR))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
|
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
|
||||||
|
if (!msg)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
wdev = rdev_add_virtual_intf(rdev,
|
wdev = rdev_add_virtual_intf(rdev,
|
||||||
nla_data(info->attrs[NL80211_ATTR_IFNAME]),
|
nla_data(info->attrs[NL80211_ATTR_IFNAME]),
|
||||||
type, err ? NULL : &flags, ¶ms);
|
type, err ? NULL : &flags, ¶ms);
|
||||||
|
@ -12528,9 +12528,7 @@ static int cfg80211_net_detect_results(struct sk_buff *msg,
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < match->n_channels; j++) {
|
for (j = 0; j < match->n_channels; j++) {
|
||||||
if (nla_put_u32(msg,
|
if (nla_put_u32(msg, j, match->channels[j])) {
|
||||||
NL80211_ATTR_WIPHY_FREQ,
|
|
||||||
match->channels[j])) {
|
|
||||||
nla_nest_cancel(msg, nl_freqs);
|
nla_nest_cancel(msg, nl_freqs);
|
||||||
nla_nest_cancel(msg, nl_match);
|
nla_nest_cancel(msg, nl_match);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
@ -228,7 +228,7 @@ static DECLARE_DELAYED_WORK(reg_timeout, reg_timeout_work);
|
||||||
|
|
||||||
/* We keep a static world regulatory domain in case of the absence of CRDA */
|
/* We keep a static world regulatory domain in case of the absence of CRDA */
|
||||||
static const struct ieee80211_regdomain world_regdom = {
|
static const struct ieee80211_regdomain world_regdom = {
|
||||||
.n_reg_rules = 6,
|
.n_reg_rules = 8,
|
||||||
.alpha2 = "00",
|
.alpha2 = "00",
|
||||||
.reg_rules = {
|
.reg_rules = {
|
||||||
/* IEEE 802.11b/g, channels 1..11 */
|
/* IEEE 802.11b/g, channels 1..11 */
|
||||||
|
|
Loading…
Reference in New Issue