From: Johannes Berg <johannes.b...@intel.com>

Instead of having to list all the hw flags in many places, just
list the macro to generate everything in a new include file and
include it in the proper places.

Unfortunately this breaks docbook processing since that doesn't
pre-process the file. It also doesn't generate the necessary
Kconfig items.

Signed-off-by: Johannes Berg <johannes.b...@intel.com>
---
 include/net/mac80211-hwflags.h | 33 ++++++++++++++++++++
 include/net/mac80211.h         | 37 ++---------------------
 net/mac80211/debugfs.c         | 47 +++--------------------------
 net/mac80211/hwflags.c         | 68 +++---------------------------------------
 net/mac80211/hwflags.h         | 47 +++++------------------------
 5 files changed, 52 insertions(+), 180 deletions(-)
 create mode 100644 include/net/mac80211-hwflags.h

diff --git a/include/net/mac80211-hwflags.h b/include/net/mac80211-hwflags.h
new file mode 100644
index 000000000000..c0450391088c
--- /dev/null
+++ b/include/net/mac80211-hwflags.h
@@ -0,0 +1,33 @@
+/* this file intentionally has no include guard */
+DEFINE_HWFLAG(HAS_RATE_CONTROL)
+DEFINE_HWFLAG(RX_INCLUDES_FCS)
+DEFINE_HWFLAG(HOST_BROADCAST_PS_BUFFERING)
+DEFINE_HWFLAG(SIGNAL_UNSPEC)
+DEFINE_HWFLAG(SIGNAL_DBM)
+DEFINE_HWFLAG(NEED_DTIM_BEFORE_ASSOC)
+DEFINE_HWFLAG(SPECTRUM_MGMT)
+DEFINE_HWFLAG(AMPDU_AGGREGATION)
+DEFINE_HWFLAG(SUPPORTS_PS)
+DEFINE_HWFLAG(PS_NULLFUNC_STACK)
+DEFINE_HWFLAG(SUPPORTS_DYNAMIC_PS)
+DEFINE_HWFLAG(MFP_CAPABLE)
+DEFINE_HWFLAG(WANT_MONITOR_VIF)
+DEFINE_HWFLAG(NO_AUTO_VIF)
+DEFINE_HWFLAG(SW_CRYPTO_CONTROL)
+DEFINE_HWFLAG(SUPPORT_FAST_XMIT)
+DEFINE_HWFLAG(REPORTS_TX_ACK_STATUS)
+DEFINE_HWFLAG(CONNECTION_MONITOR)
+DEFINE_HWFLAG(QUEUE_CONTROL)
+DEFINE_HWFLAG(SUPPORTS_PER_STA_GTK)
+DEFINE_HWFLAG(AP_LINK_PS)
+DEFINE_HWFLAG(TX_AMPDU_SETUP_IN_HW)
+DEFINE_HWFLAG(SUPPORTS_RC_TABLE)
+DEFINE_HWFLAG(P2P_DEV_ADDR_FOR_INTF)
+DEFINE_HWFLAG(TIMING_BEACON_ONLY)
+DEFINE_HWFLAG(SUPPORTS_HT_CCK_RATES)
+DEFINE_HWFLAG(CHANCTX_STA_CSA)
+DEFINE_HWFLAG(SUPPORTS_CLONED_SKBS)
+DEFINE_HWFLAG(SINGLE_SCAN_ON_ALL_BANDS)
+DEFINE_HWFLAG(TDLS_WIDER_BW)
+DEFINE_HWFLAG(SUPPORTS_AMSDU_IN_AMPDU)
+DEFINE_HWFLAG(BEACON_TX_STATUS)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index db98eb5673c2..a08d66b39bcf 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1904,40 +1904,9 @@ struct ieee80211_txq {
  * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
  */
 enum ieee80211_hw_flags {
-       IEEE80211_HW_HAS_RATE_CONTROL,
-       IEEE80211_HW_RX_INCLUDES_FCS,
-       IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING,
-       IEEE80211_HW_SIGNAL_UNSPEC,
-       IEEE80211_HW_SIGNAL_DBM,
-       IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC,
-       IEEE80211_HW_SPECTRUM_MGMT,
-       IEEE80211_HW_AMPDU_AGGREGATION,
-       IEEE80211_HW_SUPPORTS_PS,
-       IEEE80211_HW_PS_NULLFUNC_STACK,
-       IEEE80211_HW_SUPPORTS_DYNAMIC_PS,
-       IEEE80211_HW_MFP_CAPABLE,
-       IEEE80211_HW_WANT_MONITOR_VIF,
-       IEEE80211_HW_NO_AUTO_VIF,
-       IEEE80211_HW_SW_CRYPTO_CONTROL,
-       IEEE80211_HW_SUPPORT_FAST_XMIT,
-       IEEE80211_HW_REPORTS_TX_ACK_STATUS,
-       IEEE80211_HW_CONNECTION_MONITOR,
-       IEEE80211_HW_QUEUE_CONTROL,
-       IEEE80211_HW_SUPPORTS_PER_STA_GTK,
-       IEEE80211_HW_AP_LINK_PS,
-       IEEE80211_HW_TX_AMPDU_SETUP_IN_HW,
-       IEEE80211_HW_SUPPORTS_RC_TABLE,
-       IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF,
-       IEEE80211_HW_TIMING_BEACON_ONLY,
-       IEEE80211_HW_SUPPORTS_HT_CCK_RATES,
-       IEEE80211_HW_CHANCTX_STA_CSA,
-       IEEE80211_HW_SUPPORTS_CLONED_SKBS,
-       IEEE80211_HW_SINGLE_SCAN_ON_ALL_BANDS,
-       IEEE80211_HW_TDLS_WIDER_BW,
-       IEEE80211_HW_SUPPORTS_AMSDU_IN_AMPDU,
-       IEEE80211_HW_BEACON_TX_STATUS,
-
-       /* keep last, obviously */
+#define DEFINE_HWFLAG(_flg) IEEE80211_HW_##_flg,
+#include <net/mac80211-hwflags.h>
+#undef DEFINE_HWFLAG
        NUM_IEEE80211_HW_FLAGS
 };
 
diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c
index 4d2aaebd4f97..dc0eca604be1 100644
--- a/net/mac80211/debugfs.c
+++ b/net/mac80211/debugfs.c
@@ -91,44 +91,10 @@ static const struct file_operations reset_ops = {
 };
 #endif
 
-static const char *hw_flag_names[NUM_IEEE80211_HW_FLAGS + 1] = {
-#define FLAG(F)        [IEEE80211_HW_##F] = #F
-       FLAG(HAS_RATE_CONTROL),
-       FLAG(RX_INCLUDES_FCS),
-       FLAG(HOST_BROADCAST_PS_BUFFERING),
-       FLAG(SIGNAL_UNSPEC),
-       FLAG(SIGNAL_DBM),
-       FLAG(NEED_DTIM_BEFORE_ASSOC),
-       FLAG(SPECTRUM_MGMT),
-       FLAG(AMPDU_AGGREGATION),
-       FLAG(SUPPORTS_PS),
-       FLAG(PS_NULLFUNC_STACK),
-       FLAG(SUPPORTS_DYNAMIC_PS),
-       FLAG(MFP_CAPABLE),
-       FLAG(WANT_MONITOR_VIF),
-       FLAG(NO_AUTO_VIF),
-       FLAG(SW_CRYPTO_CONTROL),
-       FLAG(SUPPORT_FAST_XMIT),
-       FLAG(REPORTS_TX_ACK_STATUS),
-       FLAG(CONNECTION_MONITOR),
-       FLAG(QUEUE_CONTROL),
-       FLAG(SUPPORTS_PER_STA_GTK),
-       FLAG(AP_LINK_PS),
-       FLAG(TX_AMPDU_SETUP_IN_HW),
-       FLAG(SUPPORTS_RC_TABLE),
-       FLAG(P2P_DEV_ADDR_FOR_INTF),
-       FLAG(TIMING_BEACON_ONLY),
-       FLAG(SUPPORTS_HT_CCK_RATES),
-       FLAG(CHANCTX_STA_CSA),
-       FLAG(SUPPORTS_CLONED_SKBS),
-       FLAG(SINGLE_SCAN_ON_ALL_BANDS),
-       FLAG(TDLS_WIDER_BW),
-       FLAG(SUPPORTS_AMSDU_IN_AMPDU),
-       FLAG(BEACON_TX_STATUS),
-
-       /* keep last for the build bug below */
-       (void *)0x1
-#undef FLAG
+static const char *hw_flag_names[NUM_IEEE80211_HW_FLAGS] = {
+#define DEFINE_HWFLAG(_flg)    [IEEE80211_HW_##_flg] = #_flg,
+#include <net/mac80211-hwflags.h>
+#undef DEFINE_HWFLAG
 };
 
 static ssize_t hwflags_read(struct file *file, char __user *user_buf,
@@ -144,11 +110,6 @@ static ssize_t hwflags_read(struct file *file, char __user 
*user_buf,
        if (!buf)
                return -ENOMEM;
 
-       /* fail compilation if somebody adds or removes
-        * a flag without updating the name array above
-        */
-       BUILD_BUG_ON(hw_flag_names[NUM_IEEE80211_HW_FLAGS] != (void *)0x1);
-
        for (i = 0; i < NUM_IEEE80211_HW_FLAGS; i++) {
                if (test_bit(i, local->hw.flags))
                        pos += scnprintf(pos, end - pos, "%s\n",
diff --git a/net/mac80211/hwflags.c b/net/mac80211/hwflags.c
index eca0e3ee6818..ef4fc0d0f517 100644
--- a/net/mac80211/hwflags.c
+++ b/net/mac80211/hwflags.c
@@ -14,70 +14,10 @@ struct static_key_false 
hwflags_keys[NUM_IEEE80211_HW_FLAGS] = {
 };
 
 static s8 hwflags_defstate[] = {
-       [IEEE80211_HW_HAS_RATE_CONTROL] =
-               HWFLAGS_DEFSTATE_HAS_RATE_CONTROL,
-       [IEEE80211_HW_RX_INCLUDES_FCS] =
-               HWFLAGS_DEFSTATE_RX_INCLUDES_FCS,
-       [IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING] =
-               HWFLAGS_DEFSTATE_HOST_BROADCAST_PS_BUFFERING,
-       [IEEE80211_HW_SIGNAL_UNSPEC] =
-               HWFLAGS_DEFSTATE_SIGNAL_UNSPEC,
-       [IEEE80211_HW_SIGNAL_DBM] =
-               HWFLAGS_DEFSTATE_SIGNAL_DBM,
-       [IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC] =
-               HWFLAGS_DEFSTATE_NEED_DTIM_BEFORE_ASSOC,
-       [IEEE80211_HW_SPECTRUM_MGMT] =
-               HWFLAGS_DEFSTATE_SPECTRUM_MGMT,
-       [IEEE80211_HW_AMPDU_AGGREGATION] =
-               HWFLAGS_DEFSTATE_AMPDU_AGGREGATION,
-       [IEEE80211_HW_SUPPORTS_PS] =
-               HWFLAGS_DEFSTATE_SUPPORTS_PS,
-       [IEEE80211_HW_PS_NULLFUNC_STACK] =
-               HWFLAGS_DEFSTATE_PS_NULLFUNC_STACK,
-       [IEEE80211_HW_SUPPORTS_DYNAMIC_PS] =
-               HWFLAGS_DEFSTATE_SUPPORTS_DYNAMIC_PS,
-       [IEEE80211_HW_MFP_CAPABLE] =
-               HWFLAGS_DEFSTATE_MFP_CAPABLE,
-       [IEEE80211_HW_WANT_MONITOR_VIF] =
-               HWFLAGS_DEFSTATE_WANT_MONITOR_VIF,
-       [IEEE80211_HW_NO_AUTO_VIF] =
-               HWFLAGS_DEFSTATE_NO_AUTO_VIF,
-       [IEEE80211_HW_SW_CRYPTO_CONTROL] =
-               HWFLAGS_DEFSTATE_SW_CRYPTO_CONTROL,
-       [IEEE80211_HW_SUPPORT_FAST_XMIT] =
-               HWFLAGS_DEFSTATE_SUPPORT_FAST_XMIT,
-       [IEEE80211_HW_REPORTS_TX_ACK_STATUS] =
-               HWFLAGS_DEFSTATE_REPORTS_TX_ACK_STATUS,
-       [IEEE80211_HW_CONNECTION_MONITOR] =
-               HWFLAGS_DEFSTATE_CONNECTION_MONITOR,
-       [IEEE80211_HW_QUEUE_CONTROL] =
-               HWFLAGS_DEFSTATE_QUEUE_CONTROL,
-       [IEEE80211_HW_SUPPORTS_PER_STA_GTK] =
-               HWFLAGS_DEFSTATE_SUPPORTS_PER_STA_GTK,
-       [IEEE80211_HW_AP_LINK_PS] =
-               HWFLAGS_DEFSTATE_AP_LINK_PS,
-       [IEEE80211_HW_TX_AMPDU_SETUP_IN_HW] =
-               HWFLAGS_DEFSTATE_TX_AMPDU_SETUP_IN_HW,
-       [IEEE80211_HW_SUPPORTS_RC_TABLE] =
-               HWFLAGS_DEFSTATE_SUPPORTS_RC_TABLE,
-       [IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF] =
-               HWFLAGS_DEFSTATE_P2P_DEV_ADDR_FOR_INTF,
-       [IEEE80211_HW_TIMING_BEACON_ONLY] =
-               HWFLAGS_DEFSTATE_TIMING_BEACON_ONLY,
-       [IEEE80211_HW_SUPPORTS_HT_CCK_RATES] =
-               HWFLAGS_DEFSTATE_SUPPORTS_HT_CCK_RATES,
-       [IEEE80211_HW_CHANCTX_STA_CSA] =
-               HWFLAGS_DEFSTATE_CHANCTX_STA_CSA,
-       [IEEE80211_HW_SUPPORTS_CLONED_SKBS] =
-               HWFLAGS_DEFSTATE_SUPPORTS_CLONED_SKBS,
-       [IEEE80211_HW_SINGLE_SCAN_ON_ALL_BANDS] =
-               HWFLAGS_DEFSTATE_SINGLE_SCAN_ON_ALL_BANDS,
-       [IEEE80211_HW_TDLS_WIDER_BW] =
-               HWFLAGS_DEFSTATE_TDLS_WIDER_BW,
-       [IEEE80211_HW_SUPPORTS_AMSDU_IN_AMPDU] =
-               HWFLAGS_DEFSTATE_SUPPORTS_AMSDU_IN_AMPDU,
-       [IEEE80211_HW_BEACON_TX_STATUS] =
-               HWFLAGS_DEFSTATE_BEACON_TX_STATUS,
+#define DEFINE_HWFLAG(_flg)    \
+       [IEEE80211_HW_##_flg] = HWFLAGS_DEFSTATE_##_flg,
+#include <net/mac80211-hwflags.h>
+#undef DEFINE_HWFLAG
 };
 
 void ieee80211_hw_mod_flag(struct ieee80211_hw *hw,
diff --git a/net/mac80211/hwflags.h b/net/mac80211/hwflags.h
index 06f0a9f64fe6..82bf89658cb7 100644
--- a/net/mac80211/hwflags.h
+++ b/net/mac80211/hwflags.h
@@ -13,46 +13,15 @@
 extern struct static_key_false hwflags_keys[NUM_IEEE80211_HW_FLAGS];
 
 #ifdef CONFIG_JUMP_LABEL
-#define _HWFLAGS_DEFSTATE(_name, _on, _off)                            \
-       HWFLAGS_DEFSTATE_##_name = -1 + ((_on) ^ (_off)) * (1 + _on)
-#define HWFLAGS_DEFSTATE(_name)                                                
\
-       _HWFLAGS_DEFSTATE(_name,                                        \
-                         IS_ENABLED(CONFIG_MAC80211_HW_##_name##_ON),  \
-                         IS_ENABLED(CONFIG_MAC80211_HW_##_name##_OFF))
-
 enum hwflags_defstates {
-HWFLAGS_DEFSTATE(HAS_RATE_CONTROL),
-HWFLAGS_DEFSTATE(RX_INCLUDES_FCS),
-HWFLAGS_DEFSTATE(HOST_BROADCAST_PS_BUFFERING),
-HWFLAGS_DEFSTATE(SIGNAL_UNSPEC),
-HWFLAGS_DEFSTATE(SIGNAL_DBM),
-HWFLAGS_DEFSTATE(NEED_DTIM_BEFORE_ASSOC),
-HWFLAGS_DEFSTATE(SPECTRUM_MGMT),
-HWFLAGS_DEFSTATE(AMPDU_AGGREGATION),
-HWFLAGS_DEFSTATE(SUPPORTS_PS),
-HWFLAGS_DEFSTATE(PS_NULLFUNC_STACK),
-HWFLAGS_DEFSTATE(SUPPORTS_DYNAMIC_PS),
-HWFLAGS_DEFSTATE(MFP_CAPABLE),
-HWFLAGS_DEFSTATE(WANT_MONITOR_VIF),
-HWFLAGS_DEFSTATE(NO_AUTO_VIF),
-HWFLAGS_DEFSTATE(SW_CRYPTO_CONTROL),
-HWFLAGS_DEFSTATE(SUPPORT_FAST_XMIT),
-HWFLAGS_DEFSTATE(REPORTS_TX_ACK_STATUS),
-HWFLAGS_DEFSTATE(CONNECTION_MONITOR),
-HWFLAGS_DEFSTATE(QUEUE_CONTROL),
-HWFLAGS_DEFSTATE(SUPPORTS_PER_STA_GTK),
-HWFLAGS_DEFSTATE(AP_LINK_PS),
-HWFLAGS_DEFSTATE(TX_AMPDU_SETUP_IN_HW),
-HWFLAGS_DEFSTATE(SUPPORTS_RC_TABLE),
-HWFLAGS_DEFSTATE(P2P_DEV_ADDR_FOR_INTF),
-HWFLAGS_DEFSTATE(TIMING_BEACON_ONLY),
-HWFLAGS_DEFSTATE(SUPPORTS_HT_CCK_RATES),
-HWFLAGS_DEFSTATE(CHANCTX_STA_CSA),
-HWFLAGS_DEFSTATE(SUPPORTS_CLONED_SKBS),
-HWFLAGS_DEFSTATE(SINGLE_SCAN_ON_ALL_BANDS),
-HWFLAGS_DEFSTATE(TDLS_WIDER_BW),
-HWFLAGS_DEFSTATE(SUPPORTS_AMSDU_IN_AMPDU),
-HWFLAGS_DEFSTATE(BEACON_TX_STATUS),
+#define __DEFINE_HWFLAG(_flg, _on, _off)                               \
+       HWFLAGS_DEFSTATE_##_flg = -1 + ((_on) ^ (_off)) * (1 + _on),
+#define DEFINE_HWFLAG(_flg)                                            \
+       __DEFINE_HWFLAG(_flg,                                           \
+                       IS_ENABLED(CONFIG_MAC80211_HW_##_flg##_ON),     \
+                       IS_ENABLED(CONFIG_MAC80211_HW_##_flg##_OFF))
+#include <net/mac80211-hwflags.h>
+#undef DEFINE_HWFLAG
 };
 
 bool _____optimisation_missing(void);
-- 
2.6.2

--
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

Reply via email to