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: Johannes Berg <johannes@sipsolutions.net> Cc: Luis Carlos Cobo <luisca@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
c1edd987a4
commit
d6d1a5a709
|
@ -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)
|
||||||
* 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)
|
||||||
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 {
|
||||||
#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
|
||||||
|
|
Loading…
Reference in New Issue