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);
|
trace_drv_return_int(local, ret);
|
||||||
return 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);
|
trace_drv_return_void(local);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int
|
int drv_switch_vif_chanctx(struct ieee80211_local *local,
|
||||||
drv_switch_vif_chanctx(struct ieee80211_local *local,
|
struct ieee80211_vif_chanctx_switch *vifs,
|
||||||
struct ieee80211_vif_chanctx_switch *vifs,
|
int n_vifs, enum ieee80211_chanctx_switch_mode mode);
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int drv_start_ap(struct ieee80211_local *local,
|
static inline int drv_start_ap(struct ieee80211_local *local,
|
||||||
struct ieee80211_sub_if_data *sdata)
|
struct ieee80211_sub_if_data *sdata)
|
||||||
|
|
Loading…
Reference in New Issue