mac80211: clean up mesh RX path a bit more
authorJohannes Berg <johannes@sipsolutions.net>
Mon, 25 Feb 2008 15:24:38 +0000 (16:24 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 6 Mar 2008 20:30:46 +0000 (15:30 -0500)
Moves another ifdef into the sta_info header file in favour of
compiling more code even w/o CONFIG_MAC80211_MESH.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/rx.c
net/mac80211/sta_info.h

index d0018fc40b095c29ae590e5eadc3b631f98dee95..1ff1301ca3df6b09f546db25dfcf5972aa8538d4 100644 (file)
@@ -391,13 +391,14 @@ ieee80211_rx_h_passive_scan(struct ieee80211_txrx_data *rx)
        return RX_CONTINUE;
 }
 
-#ifdef CONFIG_MAC80211_MESH
-#define msh_h_get(h, l) ((struct ieee80211s_hdr *) ((u8 *)h + l))
 static ieee80211_rx_result
 ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx)
 {
        int hdrlen = ieee80211_get_hdrlen(rx->fc);
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) rx->skb->data;
+
+#define msh_h_get(h, l) ((struct ieee80211s_hdr *) ((u8 *)h + l))
+
        if ((rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) {
                if (!((rx->fc & IEEE80211_FCTL_FROMDS) &&
                      (rx->fc & IEEE80211_FCTL_TODS)))
@@ -410,8 +411,9 @@ ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx)
         * establisment frame, beacon or probe, drop the frame.
         */
 
-       if (!rx->sta || rx->sta->plink_state != ESTAB) {
+       if (!rx->sta || sta_plink_state(rx->sta) != ESTAB) {
                struct ieee80211_mgmt *mgmt;
+
                if ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT)
                        return RX_DROP_MONITOR;
 
@@ -434,17 +436,10 @@ ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx)
                    is_broadcast_ether_addr(hdr->addr1) &&
                    mesh_rmc_check(hdr->addr4, msh_h_get(hdr, hdrlen), rx->dev))
                return RX_DROP_MONITOR;
-       else
-               return RX_CONTINUE;
-}
 #undef msh_h_get
-#else
-static inline ieee80211_rx_result
-ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx)
-{
+
        return RX_CONTINUE;
 }
-#endif
 
 
 static ieee80211_rx_result
index 4ad500373d5a7cbed5b9c8eac9b60f5f8c045682..4d0840b8c58ecb5d259afba10d448e848b082608 100644 (file)
@@ -235,6 +235,14 @@ struct sta_info {
 #endif
 };
 
+static inline enum plink_state sta_plink_state(struct sta_info *sta)
+{
+#ifdef CONFIG_MAC80211_MESH
+       return sta->plink_state;
+#endif
+       return LISTEN;
+}
+
 
 /* Maximum number of concurrently registered stations */
 #define MAX_STA_COUNT 2007