mac80211: Deinline drv_switch_vif_chanctx()
With this .config: http://busybox.net/~vda/kernel_config_ALLYES_Os, after deinlining the function size is 821 bytes and there are 2 callsites, reducing code size by about 800 bytes. Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com> CC: Johannes Berg <johannes.berg@intel.com> CC: John Linville <linville@tuxdriver.com> CC: Michal Kazior <michal.kazior@tieto.com> CC: linux-wireless@vger.kernel.org CC: linux-kernel@vger.kernel.org [adjust code-style a bit] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
0e5c371aa0
commit
42677ed33a
@ -138,3 +138,54 @@ int drv_conf_tx(struct ieee80211_local *local,
|
||||
trace_drv_return_int(local, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int drv_switch_vif_chanctx(struct ieee80211_local *local,
|
||||
struct ieee80211_vif_chanctx_switch *vifs,
|
||||
int n_vifs, enum ieee80211_chanctx_switch_mode mode)
|
||||
{
|
||||
int ret = 0;
|
||||
int i;
|
||||
|
||||
if (!local->ops->switch_vif_chanctx)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
for (i = 0; i < n_vifs; i++) {
|
||||
struct ieee80211_chanctx *new_ctx =
|
||||
container_of(vifs[i].new_ctx,
|
||||
struct ieee80211_chanctx,
|
||||
conf);
|
||||
struct ieee80211_chanctx *old_ctx =
|
||||
container_of(vifs[i].old_ctx,
|
||||
struct ieee80211_chanctx,
|
||||
conf);
|
||||
|
||||
WARN_ON_ONCE(!old_ctx->driver_present);
|
||||
WARN_ON_ONCE((mode == CHANCTX_SWMODE_SWAP_CONTEXTS &&
|
||||
new_ctx->driver_present) ||
|
||||
(mode == CHANCTX_SWMODE_REASSIGN_VIF &&
|
||||
!new_ctx->driver_present));
|
||||
}
|
||||
|
||||
trace_drv_switch_vif_chanctx(local, vifs, n_vifs, mode);
|
||||
ret = local->ops->switch_vif_chanctx(&local->hw,
|
||||
vifs, n_vifs, mode);
|
||||
trace_drv_return_int(local, ret);
|
||||
|
||||
if (!ret && mode == CHANCTX_SWMODE_SWAP_CONTEXTS) {
|
||||
for (i = 0; i < n_vifs; i++) {
|
||||
struct ieee80211_chanctx *new_ctx =
|
||||
container_of(vifs[i].new_ctx,
|
||||
struct ieee80211_chanctx,
|
||||
conf);
|
||||
struct ieee80211_chanctx *old_ctx =
|
||||
container_of(vifs[i].old_ctx,
|
||||
struct ieee80211_chanctx,
|
||||
conf);
|
||||
|
||||
new_ctx->driver_present = true;
|
||||
old_ctx->driver_present = false;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -1002,58 +1002,9 @@ static inline void drv_unassign_vif_chanctx(struct ieee80211_local *local,
|
||||
trace_drv_return_void(local);
|
||||
}
|
||||
|
||||
static inline int
|
||||
drv_switch_vif_chanctx(struct ieee80211_local *local,
|
||||
struct ieee80211_vif_chanctx_switch *vifs,
|
||||
int n_vifs,
|
||||
enum ieee80211_chanctx_switch_mode mode)
|
||||
{
|
||||
int ret = 0;
|
||||
int i;
|
||||
|
||||
if (!local->ops->switch_vif_chanctx)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
for (i = 0; i < n_vifs; i++) {
|
||||
struct ieee80211_chanctx *new_ctx =
|
||||
container_of(vifs[i].new_ctx,
|
||||
struct ieee80211_chanctx,
|
||||
conf);
|
||||
struct ieee80211_chanctx *old_ctx =
|
||||
container_of(vifs[i].old_ctx,
|
||||
struct ieee80211_chanctx,
|
||||
conf);
|
||||
|
||||
WARN_ON_ONCE(!old_ctx->driver_present);
|
||||
WARN_ON_ONCE((mode == CHANCTX_SWMODE_SWAP_CONTEXTS &&
|
||||
new_ctx->driver_present) ||
|
||||
(mode == CHANCTX_SWMODE_REASSIGN_VIF &&
|
||||
!new_ctx->driver_present));
|
||||
}
|
||||
|
||||
trace_drv_switch_vif_chanctx(local, vifs, n_vifs, mode);
|
||||
ret = local->ops->switch_vif_chanctx(&local->hw,
|
||||
vifs, n_vifs, mode);
|
||||
trace_drv_return_int(local, ret);
|
||||
|
||||
if (!ret && mode == CHANCTX_SWMODE_SWAP_CONTEXTS) {
|
||||
for (i = 0; i < n_vifs; i++) {
|
||||
struct ieee80211_chanctx *new_ctx =
|
||||
container_of(vifs[i].new_ctx,
|
||||
struct ieee80211_chanctx,
|
||||
conf);
|
||||
struct ieee80211_chanctx *old_ctx =
|
||||
container_of(vifs[i].old_ctx,
|
||||
struct ieee80211_chanctx,
|
||||
conf);
|
||||
|
||||
new_ctx->driver_present = true;
|
||||
old_ctx->driver_present = false;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
int drv_switch_vif_chanctx(struct ieee80211_local *local,
|
||||
struct ieee80211_vif_chanctx_switch *vifs,
|
||||
int n_vifs, enum ieee80211_chanctx_switch_mode mode);
|
||||
|
||||
static inline int drv_start_ap(struct ieee80211_local *local,
|
||||
struct ieee80211_sub_if_data *sdata)
|
||||
|
Loading…
Reference in New Issue
Block a user