aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2009-11-10 14:10:05 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-11-11 17:02:10 -0500
commitf14543ee4d0681df1377b976cba704557ba220d3 (patch)
treef148485869f6638030207c069742c1918647be6a /net/mac80211/ieee80211_i.h
parent8b787643ca0a5130c647109d77fe512f89cfa611 (diff)
mac80211: implement support for 4-address frames for AP and client mode
In some situations it might be useful to run a network with an Access Point and multiple clients, but with each client bridged to a network behind it. For this to work, both the client and the AP need to transmit 4-address frames, containing both source and destination MAC addresses. With this patch, you can configure a client to communicate using only 4-address frames for data traffic. On the AP side you can enable 4-address frames for individual clients by isolating them in separate AP VLANs which are configured in 4-address mode. Such an AP VLAN will be limited to one client only, and this client will be used as the destination for all traffic on its interface, regardless of the destination MAC address in the packet headers. The advantage of this mode compared to regular WDS mode is that it's easier to configure and does not require a static list of peer MAC addresses on any side. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 1f4f88a8f80c..19b0c128d940 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -208,6 +208,9 @@ struct ieee80211_if_wds {
208 208
209struct ieee80211_if_vlan { 209struct ieee80211_if_vlan {
210 struct list_head list; 210 struct list_head list;
211
212 /* used for all tx if the VLAN is configured to 4-addr mode */
213 struct sta_info *sta;
211}; 214};
212 215
213struct mesh_stats { 216struct mesh_stats {
@@ -457,6 +460,8 @@ struct ieee80211_sub_if_data {
457 int force_unicast_rateidx; /* forced TX rateidx for unicast frames */ 460 int force_unicast_rateidx; /* forced TX rateidx for unicast frames */
458 int max_ratectrl_rateidx; /* max TX rateidx for rate control */ 461 int max_ratectrl_rateidx; /* max TX rateidx for rate control */
459 462
463 bool use_4addr; /* use 4-address frames */
464
460 union { 465 union {
461 struct ieee80211_if_ap ap; 466 struct ieee80211_if_ap ap;
462 struct ieee80211_if_wds wds; 467 struct ieee80211_if_wds wds;