diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-02-23 09:17:07 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-03-06 15:30:41 -0500 |
commit | 6032f934c818e5c3435c9f17274fe1983f53c6b4 (patch) | |
tree | c095cb07ffb67dd81df0d4d0573e060e132fe082 | |
parent | 2ec600d672e74488f8d1acf67a0a2baed222564c (diff) |
mac80211: add mesh interface type
This adds the mesh interface type.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | include/net/mac80211.h | 1 | ||||
-rw-r--r-- | net/mac80211/ieee80211.c | 1 | ||||
-rw-r--r-- | net/mac80211/ieee80211_iface.c | 1 | ||||
-rw-r--r-- | net/mac80211/rx.c | 10 | ||||
-rw-r--r-- | net/mac80211/util.c | 1 |
5 files changed, 14 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 7a80c3981237..934cc25f757a 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -443,6 +443,7 @@ enum ieee80211_if_types { | |||
443 | IEEE80211_IF_TYPE_AP, | 443 | IEEE80211_IF_TYPE_AP, |
444 | IEEE80211_IF_TYPE_STA, | 444 | IEEE80211_IF_TYPE_STA, |
445 | IEEE80211_IF_TYPE_IBSS, | 445 | IEEE80211_IF_TYPE_IBSS, |
446 | IEEE80211_IF_TYPE_MESH_POINT, | ||
446 | IEEE80211_IF_TYPE_MNTR, | 447 | IEEE80211_IF_TYPE_MNTR, |
447 | IEEE80211_IF_TYPE_WDS, | 448 | IEEE80211_IF_TYPE_WDS, |
448 | IEEE80211_IF_TYPE_VLAN, | 449 | IEEE80211_IF_TYPE_VLAN, |
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c index 2133c9fd27a4..1ddb8e1b6ab6 100644 --- a/net/mac80211/ieee80211.c +++ b/net/mac80211/ieee80211.c | |||
@@ -258,6 +258,7 @@ static int ieee80211_open(struct net_device *dev) | |||
258 | case IEEE80211_IF_TYPE_STA: | 258 | case IEEE80211_IF_TYPE_STA: |
259 | case IEEE80211_IF_TYPE_MNTR: | 259 | case IEEE80211_IF_TYPE_MNTR: |
260 | case IEEE80211_IF_TYPE_IBSS: | 260 | case IEEE80211_IF_TYPE_IBSS: |
261 | case IEEE80211_IF_TYPE_MESH_POINT: | ||
261 | /* no special treatment */ | 262 | /* no special treatment */ |
262 | break; | 263 | break; |
263 | case IEEE80211_IF_TYPE_INVALID: | 264 | case IEEE80211_IF_TYPE_INVALID: |
diff --git a/net/mac80211/ieee80211_iface.c b/net/mac80211/ieee80211_iface.c index 677705046c6d..9523aeb71032 100644 --- a/net/mac80211/ieee80211_iface.c +++ b/net/mac80211/ieee80211_iface.c | |||
@@ -235,6 +235,7 @@ void ieee80211_if_reinit(struct net_device *dev) | |||
235 | #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */ | 235 | #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */ |
236 | } | 236 | } |
237 | break; | 237 | break; |
238 | case IEEE80211_IF_TYPE_MESH_POINT: | ||
238 | case IEEE80211_IF_TYPE_STA: | 239 | case IEEE80211_IF_TYPE_STA: |
239 | case IEEE80211_IF_TYPE_IBSS: | 240 | case IEEE80211_IF_TYPE_IBSS: |
240 | kfree(sdata->u.sta.extra_ie); | 241 | kfree(sdata->u.sta.extra_ie); |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 48574f6c0e74..b7eeae0d3956 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1713,6 +1713,16 @@ static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata, | |||
1713 | rx->sta = ieee80211_ibss_add_sta(sdata->dev, rx->skb, | 1713 | rx->sta = ieee80211_ibss_add_sta(sdata->dev, rx->skb, |
1714 | bssid, hdr->addr2); | 1714 | bssid, hdr->addr2); |
1715 | break; | 1715 | break; |
1716 | case IEEE80211_IF_TYPE_MESH_POINT: | ||
1717 | if (!multicast && | ||
1718 | compare_ether_addr(sdata->dev->dev_addr, | ||
1719 | hdr->addr1) != 0) { | ||
1720 | if (!(sdata->dev->flags & IFF_PROMISC)) | ||
1721 | return 0; | ||
1722 | |||
1723 | rx->flags &= ~IEEE80211_TXRXD_RXRA_MATCH; | ||
1724 | } | ||
1725 | break; | ||
1716 | case IEEE80211_IF_TYPE_VLAN: | 1726 | case IEEE80211_IF_TYPE_VLAN: |
1717 | case IEEE80211_IF_TYPE_AP: | 1727 | case IEEE80211_IF_TYPE_AP: |
1718 | if (!bssid) { | 1728 | if (!bssid) { |
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index f64804fed0a9..790c32f894c0 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -382,6 +382,7 @@ void ieee80211_iterate_active_interfaces( | |||
382 | case IEEE80211_IF_TYPE_STA: | 382 | case IEEE80211_IF_TYPE_STA: |
383 | case IEEE80211_IF_TYPE_IBSS: | 383 | case IEEE80211_IF_TYPE_IBSS: |
384 | case IEEE80211_IF_TYPE_WDS: | 384 | case IEEE80211_IF_TYPE_WDS: |
385 | case IEEE80211_IF_TYPE_MESH_POINT: | ||
385 | break; | 386 | break; |
386 | } | 387 | } |
387 | if (sdata->dev == local->mdev) | 388 | if (sdata->dev == local->mdev) |