We ensure disable mac80211 mesh by relabelling it
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Tue, 4 Aug 2009 23:01:53 +0000 (16:01 -0700)
committerLuis R. Rodriguez <lrodriguez@atheros.com>
Tue, 4 Aug 2009 23:01:53 +0000 (16:01 -0700)
Mesh is currently busted.

If your kernel has an option enabled we cannot
simply disable it for two reasons:

* kconfig magic
* autoconf

We cannot disable CONFIG_MAC80211_MESH by
using undef on linux/compat_autoconf.h,
and even if it goes after linux/autoconf.h.

Even if you solve that you still need a way
to unset it from the kconfig somehow.

Mesh is currently busted and disabled so even
if your kernel *does* enable it we want to disable
it for you. We do this by relabelling the mesh
kconfig option.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
compat/patches/09-disable-mesh.patch [new file with mode: 0644]
config.mk

diff --git a/compat/patches/09-disable-mesh.patch b/compat/patches/09-disable-mesh.patch
new file mode 100644 (file)
index 0000000..be1d01a
--- /dev/null
@@ -0,0 +1,214 @@
+If your kernel has an option enabled we cannot
+simply disable it for two reasons:
+
+* kconfig magic
+* autoconf
+
+We cannot disable CONFIG_MAC80211_MESH by
+using undef on linux/compat_autoconf.h,
+and even if it goes after linux/autoconf.h.
+
+Even if you solve that you still need a way
+to unset it from the kconfig somehow.
+
+Mesh is currently busted and disabled so even
+if your kernel *does* enable it we want to disable
+it for you. We do this by relabelling the mesh
+kconfig option.
+
+--- a/net/mac80211/Makefile    2009-08-04 15:46:36.454027243 -0700
++++ b/net/mac80211/Makefile    2009-08-04 15:50:01.627056156 -0700
+@@ -32,7 +32,7 @@
+       debugfs_netdev.o \
+       debugfs_key.o
+-mac80211-$(CONFIG_MAC80211_MESH) += \
++mac80211-$(CONFIG_COMPAT_MAC80211_MESH) += \
+       mesh.o \
+       mesh_pathtbl.o \
+       mesh_plink.o \
+--- a/net/mac80211/cfg.c       2009-08-04 15:47:03.442030609 -0700
++++ b/net/mac80211/cfg.c       2009-08-04 15:47:08.386032081 -0700
+@@ -24,7 +24,7 @@ static bool nl80211_type_check(enum nl80
+       case NL80211_IFTYPE_ADHOC:
+       case NL80211_IFTYPE_STATION:
+       case NL80211_IFTYPE_MONITOR:
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       case NL80211_IFTYPE_MESH_POINT:
+ #endif
+       case NL80211_IFTYPE_AP:
+@@ -359,7 +359,7 @@ static void sta_set_sinfo(struct sta_inf
+               sinfo->txrate.mcs = sta->last_tx_rate.idx;
+       if (ieee80211_vif_is_mesh(&sdata->vif)) {
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+               sinfo->filled |= STATION_INFO_LLID |
+                                STATION_INFO_PLID |
+                                STATION_INFO_PLINK_STATE;
+@@ -822,7 +822,7 @@ static int ieee80211_change_station(stru
+       return 0;
+ }
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+ static int ieee80211_add_mpath(struct wiphy *wiphy, struct net_device *dev,
+                                u8 *dst, u8 *next_hop)
+ {
+@@ -1378,7 +1378,7 @@ struct cfg80211_ops mac80211_config_ops 
+       .change_station = ieee80211_change_station,
+       .get_station = ieee80211_get_station,
+       .dump_station = ieee80211_dump_station,
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       .add_mpath = ieee80211_add_mpath,
+       .del_mpath = ieee80211_del_mpath,
+       .change_mpath = ieee80211_change_mpath,
+--- a/net/mac80211/debugfs_netdev.c    2009-08-04 15:47:21.554036613 -0700
++++ b/net/mac80211/debugfs_netdev.c    2009-08-04 15:47:27.874035797 -0700
+@@ -114,7 +114,7 @@ __IEEE80211_IF_FILE(num_buffered_multica
+ /* WDS attributes */
+ IEEE80211_IF_FILE(peer, u.wds.remote_addr, MAC);
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+ /* Mesh stats attributes */
+ IEEE80211_IF_FILE(fwded_frames, u.mesh.mshstats.fwded_frames, DEC);
+ IEEE80211_IF_FILE(dropped_frames_ttl, u.mesh.mshstats.dropped_frames_ttl, DEC);
+@@ -196,7 +196,7 @@ static void add_monitor_files(struct iee
+ {
+ }
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+ #define MESHSTATS_ADD(name)\
+       sdata->mesh_stats.name = debugfs_create_file(#name, 0400,\
+               sdata->mesh_stats_dir, sdata, &name##_ops);
+@@ -242,7 +242,7 @@ static void add_files(struct ieee80211_s
+       switch (sdata->vif.type) {
+       case NL80211_IFTYPE_MESH_POINT:
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+               add_mesh_stats(sdata);
+               add_mesh_config(sdata);
+ #endif
+@@ -318,7 +318,7 @@ static void del_monitor_files(struct iee
+ {
+ }
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+ #define MESHSTATS_DEL(name)                   \
+       do {                                            \
+               debugfs_remove(sdata->mesh_stats.name); \
+@@ -368,7 +368,7 @@ static void del_files(struct ieee80211_s
+       switch (sdata->vif.type) {
+       case NL80211_IFTYPE_MESH_POINT:
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+               del_mesh_stats(sdata);
+               del_mesh_config(sdata);
+ #endif
+--- a/net/mac80211/mesh.h      2009-08-04 15:48:36.102026931 -0700
++++ b/net/mac80211/mesh.h      2009-08-04 15:48:40.947057508 -0700
+@@ -265,7 +265,7 @@ void mesh_path_discard_frame(struct sk_b
+ void mesh_path_quiesce(struct ieee80211_sub_if_data *sdata);
+ void mesh_path_restart(struct ieee80211_sub_if_data *sdata);
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+ extern int mesh_allocated;
+ static inline int mesh_plink_free_count(struct ieee80211_sub_if_data *sdata)
+--- a/net/mac80211/rx.c        2009-08-04 15:47:33.135063113 -0700
++++ b/net/mac80211/rx.c        2009-08-04 15:47:37.322038053 -0700
+@@ -1472,7 +1472,7 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx
+       return RX_QUEUED;
+ }
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+ static ieee80211_rx_result
+ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
+ {
+@@ -1978,7 +1978,7 @@ static void ieee80211_invoke_rx_handlers
+       /* must be after MMIC verify so header is counted in MPDU mic */
+       CALL_RXH(ieee80211_rx_h_remove_qos_control)
+       CALL_RXH(ieee80211_rx_h_amsdu)
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       if (ieee80211_vif_is_mesh(&sdata->vif))
+               CALL_RXH(ieee80211_rx_h_mesh_fwding);
+ #endif
+--- a/net/mac80211/sta_info.c  2009-08-04 15:47:47.506045594 -0700
++++ b/net/mac80211/sta_info.c  2009-08-04 15:47:54.850030225 -0700
+@@ -174,7 +174,7 @@ void sta_info_destroy(struct sta_info *s
+       rate_control_remove_sta_debugfs(sta);
+       ieee80211_sta_debugfs_remove(sta);
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       if (ieee80211_vif_is_mesh(&sta->sdata->vif))
+               mesh_plink_deactivate(sta);
+ #endif
+@@ -190,7 +190,7 @@ void sta_info_destroy(struct sta_info *s
+        */
+       ieee80211_key_todo();
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       if (ieee80211_vif_is_mesh(&sta->sdata->vif))
+               del_timer_sync(&sta->plink_timer);
+ #endif
+@@ -310,7 +310,7 @@ struct sta_info *sta_info_alloc(struct i
+              wiphy_name(local->hw.wiphy), sta->sta.addr);
+ #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       sta->plink_state = PLINK_LISTEN;
+       init_timer(&sta->plink_timer);
+ #endif
+@@ -498,7 +498,7 @@ static void __sta_info_unlink(struct sta
+       if (ieee80211_vif_is_mesh(&sdata->vif)) {
+               mesh_accept_plinks_update(sdata);
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+               del_timer(&(*sta)->plink_timer);
+ #endif
+       }
+--- a/net/mac80211/sta_info.h  2009-08-04 15:48:50.398019224 -0700
++++ b/net/mac80211/sta_info.h  2009-08-04 15:48:55.891063867 -0700
+@@ -282,7 +282,7 @@ struct sta_info {
+       struct sta_ampdu_mlme ampdu_mlme;
+       u8 timer_to_tid[STA_TID_NUM];
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       /*
+        * Mesh peer link attributes
+        * TODO: move to a sub-structure that is referenced with pointer?
+@@ -333,7 +333,7 @@ struct sta_info {
+ static inline enum plink_state sta_plink_state(struct sta_info *sta)
+ {
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       return sta->plink_state;
+ #endif
+       return PLINK_LISTEN;
+--- a/net/mac80211/tx.c        2009-08-04 15:48:06.970029978 -0700
++++ b/net/mac80211/tx.c        2009-08-04 15:48:12.506009905 -0700
+@@ -1615,7 +1615,7 @@ int ieee80211_subif_start_xmit(struct sk
+               memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN);
+               hdrlen = 30;
+               break;
+-#ifdef CONFIG_MAC80211_MESH
++#ifdef CONFIG_COMPAT_MAC80211_MESH
+       case NL80211_IFTYPE_MESH_POINT:
+               fc |= cpu_to_le16(IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS);
+               if (!sdata->u.mesh.mshcfg.dot11MeshTTL) {
index 68ef43fc9e925406e57e620c62ccbba82d304717..aeee7c164e85401ef7b9a47fe2f8f985cbd7c1ad 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -100,7 +100,7 @@ CONFIG_MAC80211_LEDS=y
 
 # enable mesh networking too
 # Mesh is currently busted on wireless-testing
-#CONFIG_MAC80211_MESH=y
+#CONFIG_COMPAT_MAC80211_MESH=n
 
 CONFIG_CFG80211=m
 CONFIG_CFG80211_DEFAULT_PS=y