From 4dae193d7862f8cd9fed5bdab39b18982a7bb347 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Sat, 23 Feb 2008 15:17:07 +0100 Subject: [PATCH] --- yaml --- r: 90060 b: refs/heads/master c: 6032f934c818e5c3435c9f17274fe1983f53c6b4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/net/mac80211.h | 1 + trunk/net/mac80211/ieee80211.c | 1 + trunk/net/mac80211/ieee80211_iface.c | 1 + trunk/net/mac80211/rx.c | 10 ++++++++++ trunk/net/mac80211/util.c | 1 + 6 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 9279f247ea5d..e087efb890a1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2ec600d672e74488f8d1acf67a0a2baed222564c +refs/heads/master: 6032f934c818e5c3435c9f17274fe1983f53c6b4 diff --git a/trunk/include/net/mac80211.h b/trunk/include/net/mac80211.h index 7a80c3981237..934cc25f757a 100644 --- a/trunk/include/net/mac80211.h +++ b/trunk/include/net/mac80211.h @@ -443,6 +443,7 @@ enum ieee80211_if_types { IEEE80211_IF_TYPE_AP, IEEE80211_IF_TYPE_STA, IEEE80211_IF_TYPE_IBSS, + IEEE80211_IF_TYPE_MESH_POINT, IEEE80211_IF_TYPE_MNTR, IEEE80211_IF_TYPE_WDS, IEEE80211_IF_TYPE_VLAN, diff --git a/trunk/net/mac80211/ieee80211.c b/trunk/net/mac80211/ieee80211.c index 2133c9fd27a4..1ddb8e1b6ab6 100644 --- a/trunk/net/mac80211/ieee80211.c +++ b/trunk/net/mac80211/ieee80211.c @@ -258,6 +258,7 @@ static int ieee80211_open(struct net_device *dev) case IEEE80211_IF_TYPE_STA: case IEEE80211_IF_TYPE_MNTR: case IEEE80211_IF_TYPE_IBSS: + case IEEE80211_IF_TYPE_MESH_POINT: /* no special treatment */ break; case IEEE80211_IF_TYPE_INVALID: diff --git a/trunk/net/mac80211/ieee80211_iface.c b/trunk/net/mac80211/ieee80211_iface.c index 677705046c6d..9523aeb71032 100644 --- a/trunk/net/mac80211/ieee80211_iface.c +++ b/trunk/net/mac80211/ieee80211_iface.c @@ -235,6 +235,7 @@ void ieee80211_if_reinit(struct net_device *dev) #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */ } break; + case IEEE80211_IF_TYPE_MESH_POINT: case IEEE80211_IF_TYPE_STA: case IEEE80211_IF_TYPE_IBSS: kfree(sdata->u.sta.extra_ie); diff --git a/trunk/net/mac80211/rx.c b/trunk/net/mac80211/rx.c index 48574f6c0e74..b7eeae0d3956 100644 --- a/trunk/net/mac80211/rx.c +++ b/trunk/net/mac80211/rx.c @@ -1713,6 +1713,16 @@ static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata, rx->sta = ieee80211_ibss_add_sta(sdata->dev, rx->skb, bssid, hdr->addr2); break; + case IEEE80211_IF_TYPE_MESH_POINT: + if (!multicast && + compare_ether_addr(sdata->dev->dev_addr, + hdr->addr1) != 0) { + if (!(sdata->dev->flags & IFF_PROMISC)) + return 0; + + rx->flags &= ~IEEE80211_TXRXD_RXRA_MATCH; + } + break; case IEEE80211_IF_TYPE_VLAN: case IEEE80211_IF_TYPE_AP: if (!bssid) { diff --git a/trunk/net/mac80211/util.c b/trunk/net/mac80211/util.c index f64804fed0a9..790c32f894c0 100644 --- a/trunk/net/mac80211/util.c +++ b/trunk/net/mac80211/util.c @@ -382,6 +382,7 @@ void ieee80211_iterate_active_interfaces( case IEEE80211_IF_TYPE_STA: case IEEE80211_IF_TYPE_IBSS: case IEEE80211_IF_TYPE_WDS: + case IEEE80211_IF_TYPE_MESH_POINT: break; } if (sdata->dev == local->mdev)