Function ieee80211_change_chanctx() updates struct ieee80211_chanctx_conf's def and min_def members, in a somewhat mixed way. Since there are other members can be updated, this function's name is a bit inaccurate. Rename ieee80211_change_chanctx() to ieee80211_recalc_chanctx_def() and only update def member in this function. Add a wrapper function _ieee80211_recalc_chanctx_chantype() to do ieee80211_change_chanctx()'s work. Signed-off-by: Zhao, Gang <gamerh2o@xxxxxxxxx> --- net/mac80211/chan.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c index 42c6592..49fa37e 100644 --- a/net/mac80211/chan.c +++ b/net/mac80211/chan.c @@ -143,9 +143,10 @@ void ieee80211_recalc_chanctx_min_def(struct ieee80211_local *local, drv_change_chanctx(local, ctx, IEEE80211_CHANCTX_CHANGE_MIN_WIDTH); } -static void ieee80211_change_chanctx(struct ieee80211_local *local, - struct ieee80211_chanctx *ctx, - const struct cfg80211_chan_def *chandef) +static void +ieee80211_recalc_chanctx_def(struct ieee80211_local *local, + struct ieee80211_chanctx *ctx, + const struct cfg80211_chan_def *chandef) { if (cfg80211_chandef_identical(&ctx->conf.def, chandef)) return; @@ -154,7 +155,6 @@ static void ieee80211_change_chanctx(struct ieee80211_local *local, ctx->conf.def = *chandef; drv_change_chanctx(local, ctx, IEEE80211_CHANCTX_CHANGE_WIDTH); - ieee80211_recalc_chanctx_min_def(local, ctx); if (!local->use_chanctx) { local->_oper_chandef = *chandef; @@ -162,6 +162,15 @@ static void ieee80211_change_chanctx(struct ieee80211_local *local, } } +static void +_ieee80211_recalc_chanctx_chantype(struct ieee80211_local *local, + struct ieee80211_chanctx *ctx, + const struct cfg80211_chan_def *chandef) +{ + ieee80211_recalc_chanctx_def(local, ctx, chandef); + ieee80211_recalc_chanctx_min_def(local, ctx); +} + static struct ieee80211_chanctx * ieee80211_find_chanctx(struct ieee80211_local *local, const struct cfg80211_chan_def *chandef, @@ -184,7 +193,7 @@ ieee80211_find_chanctx(struct ieee80211_local *local, if (!compat) continue; - ieee80211_change_chanctx(local, ctx, compat); + _ieee80211_recalc_chanctx_chantype(local, ctx, compat); return ctx; } @@ -350,7 +359,7 @@ static void ieee80211_recalc_chanctx_chantype(struct ieee80211_local *local, if (WARN_ON_ONCE(!compat)) return; - ieee80211_change_chanctx(local, ctx, compat); + _ieee80211_recalc_chanctx_chantype(local, ctx, compat); } static void ieee80211_recalc_radar_chanctx(struct ieee80211_local *local, -- 1.8.5.3 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html