Commit d6d1a5a7 authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville

mac80211: clean up mesh RX path a bit more

Moves another ifdef into the sta_info header file in favour of
compiling more code even w/o CONFIG_MAC80211_MESH.
Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Cc: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent c1edd987
...@@ -391,13 +391,14 @@ ieee80211_rx_h_passive_scan(struct ieee80211_txrx_data *rx) ...@@ -391,13 +391,14 @@ ieee80211_rx_h_passive_scan(struct ieee80211_txrx_data *rx)
return RX_CONTINUE; return RX_CONTINUE;
} }
#ifdef CONFIG_MAC80211_MESH
#define msh_h_get(h, l) ((struct ieee80211s_hdr *) ((u8 *)h + l))
static ieee80211_rx_result static ieee80211_rx_result
ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx) ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx)
{ {
int hdrlen = ieee80211_get_hdrlen(rx->fc); int hdrlen = ieee80211_get_hdrlen(rx->fc);
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) rx->skb->data; 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_FTYPE) == IEEE80211_FTYPE_DATA) {
if (!((rx->fc & IEEE80211_FCTL_FROMDS) && if (!((rx->fc & IEEE80211_FCTL_FROMDS) &&
(rx->fc & IEEE80211_FCTL_TODS))) (rx->fc & IEEE80211_FCTL_TODS)))
...@@ -410,8 +411,9 @@ ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx) ...@@ -410,8 +411,9 @@ ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx)
* establisment frame, beacon or probe, drop the frame. * 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; struct ieee80211_mgmt *mgmt;
if ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT) if ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT)
return RX_DROP_MONITOR; return RX_DROP_MONITOR;
...@@ -434,17 +436,10 @@ ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx) ...@@ -434,17 +436,10 @@ ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx)
is_broadcast_ether_addr(hdr->addr1) && is_broadcast_ether_addr(hdr->addr1) &&
mesh_rmc_check(hdr->addr4, msh_h_get(hdr, hdrlen), rx->dev)) mesh_rmc_check(hdr->addr4, msh_h_get(hdr, hdrlen), rx->dev))
return RX_DROP_MONITOR; return RX_DROP_MONITOR;
else
return RX_CONTINUE;
}
#undef msh_h_get #undef msh_h_get
#else
static inline ieee80211_rx_result
ieee80211_rx_mesh_check(struct ieee80211_txrx_data *rx)
{
return RX_CONTINUE; return RX_CONTINUE;
} }
#endif
static ieee80211_rx_result static ieee80211_rx_result
......
...@@ -235,6 +235,14 @@ struct sta_info { ...@@ -235,6 +235,14 @@ struct sta_info {
#endif #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 */ /* Maximum number of concurrently registered stations */
#define MAX_STA_COUNT 2007 #define MAX_STA_COUNT 2007
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment