From e20d22c8954109413684496cdbf3f76db9a38792 Mon Sep 17 00:00:00 2001 From: "Luis R. Rodriguez" Date: Tue, 4 Aug 2009 16:01:53 -0700 Subject: [PATCH] We ensure disable mac80211 mesh by relabelling it 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 --- compat/patches/09-disable-mesh.patch | 214 +++++++++++++++++++++++++++ config.mk | 2 +- 2 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 compat/patches/09-disable-mesh.patch diff --git a/compat/patches/09-disable-mesh.patch b/compat/patches/09-disable-mesh.patch new file mode 100644 index 000000000000..be1d01a6e668 --- /dev/null +++ b/compat/patches/09-disable-mesh.patch @@ -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) { diff --git a/config.mk b/config.mk index 68ef43fc9e92..aeee7c164e85 100644 --- 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 -- 2.30.2