summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_output.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2009-04-26 23:11:22 +0000
committersam <sam@FreeBSD.org>2009-04-26 23:11:22 +0000
commit506d007c7de2e8fbbe90bed7dd9b91a3d59e9de2 (patch)
treea0bf2cdf5a730707c3ac044fc4085f0c36bacc05 /sys/net80211/ieee80211_output.c
parentb56ccf5e16a730658f80c0f89fd03bafd1ed90cb (diff)
downloadFreeBSD-src-506d007c7de2e8fbbe90bed7dd9b91a3d59e9de2.zip
FreeBSD-src-506d007c7de2e8fbbe90bed7dd9b91a3d59e9de2.tar.gz
add IEEE80211_FEXT_4ADDR to indicate ieee80211_encap should do 4-address
encapsulation when relaying frames; this reduces the cost of the test and enables use for situations other than "sta vap + dwds"
Diffstat (limited to 'sys/net80211/ieee80211_output.c')
-rw-r--r--sys/net80211/ieee80211_output.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c
index fabdfb2..f36365c 100644
--- a/sys/net80211/ieee80211_output.c
+++ b/sys/net80211/ieee80211_output.c
@@ -974,12 +974,11 @@ ieee80211_encap(struct ieee80211vap *vap, struct ieee80211_node *ni,
/*
* 4-address frames need to be generated for:
* o packets sent through a WDS vap (IEEE80211_M_WDS)
- * o packets relayed by a station operating with dynamic WDS
- * (IEEE80211_M_STA+IEEE80211_F_DWDS and src address)
+ * o packets sent through a vap marked for relaying
+ * (e.g. a station operating with dynamic WDS)
*/
is4addr = vap->iv_opmode == IEEE80211_M_WDS ||
- (vap->iv_opmode == IEEE80211_M_STA &&
- (vap->iv_flags & IEEE80211_F_DWDS) &&
+ ((vap->iv_flags_ext & IEEE80211_FEXT_4ADDR) &&
!IEEE80211_ADDR_EQ(eh.ether_shost, vap->iv_myaddr));
if (is4addr)
hdrsize += IEEE80211_ADDR_LEN;
OpenPOWER on IntegriCloud