mac80211: adjust reserved chan_ctx when assigned to vif
authorAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Wed, 6 May 2015 15:30:50 +0000 (18:30 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 7 May 2015 12:24:52 +0000 (14:24 +0200)
When a vif starts using a reserved channel context (during CSA, for example)
the required chandef was recalculated, however it was never applied.
This could result in using chanctx with narrower width than actually
required. Fix this by calling ieee80211_change_chanctx with the recalculated
chandef. This both changes the chanctx's width and recalcs min_def.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Reviewed-by: Luciano Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/chan.c

index 7e9b62475400c2a7669a6fe94eea118503bbea84..f01c18a3160e11d72dae9e2a0939530ec805f6a5 100644 (file)
@@ -1010,6 +1010,8 @@ ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata)
        if (WARN_ON(!chandef))
                return -EINVAL;
 
+       ieee80211_change_chanctx(local, new_ctx, chandef);
+
        vif_chsw[0].vif = &sdata->vif;
        vif_chsw[0].old_ctx = &old_ctx->conf;
        vif_chsw[0].new_ctx = &new_ctx->conf;
@@ -1083,6 +1085,8 @@ ieee80211_vif_use_reserved_assign(struct ieee80211_sub_if_data *sdata)
        if (WARN_ON(!chandef))
                return -EINVAL;
 
+       ieee80211_change_chanctx(local, new_ctx, chandef);
+
        list_del(&sdata->reserved_chanctx_list);
        sdata->reserved_chanctx = NULL;