Re: [PATCH 1/3] mac80211: Deinline drv_switch_vif_chanctx()

2015-09-23 Thread Johannes Berg
On Wed, 2015-09-23 at 14:18 +0200, Denys Vlasenko wrote:
> 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.
> 
Thanks, all applied.

johannes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/3] mac80211: Deinline drv_switch_vif_chanctx()

2015-09-23 Thread Denys Vlasenko
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 
CC: Johannes Berg 
CC: John Linville 
CC: Michal Kazior 
CC: linux-wireless@vger.kernel.org
CC: linux-ker...@vger.kernel.org
---

Rediffed against mac80211-next

 net/mac80211/driver-ops.c | 53 +++
 net/mac80211/driver-ops.h | 51 ++---
 2 files changed, 55 insertions(+), 49 deletions(-)

diff --git a/net/mac80211/driver-ops.c b/net/mac80211/driver-ops.c
index b284e6e..54581ce 100644
--- a/net/mac80211/driver-ops.c
+++ b/net/mac80211/driver-ops.c
@@ -138,3 +138,56 @@ 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(>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;
+}
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 0baeefd..1cf1b4a 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -1002,58 +1002,11 @@ static inline void drv_unassign_vif_chanctx(struct 
ieee80211_local *local,
trace_drv_return_void(local);
 }
 
-static inline int
+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(>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 =
-