aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-02-23 09:17:07 -0500
committerJohn W. Linville <linville@tuxdriver.com>2008-03-06 15:30:41 -0500
commit6032f934c818e5c3435c9f17274fe1983f53c6b4 (patch)
treec095cb07ffb67dd81df0d4d0573e060e132fe082
parent2ec600d672e74488f8d1acf67a0a2baed222564c (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.h1
-rw-r--r--net/mac80211/ieee80211.c1
-rw-r--r--net/mac80211/ieee80211_iface.c1
-rw-r--r--net/mac80211/rx.c10
-rw-r--r--net/mac80211/util.c1
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)