diff options
author | sam <sam@FreeBSD.org> | 2009-04-26 23:11:22 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2009-04-26 23:11:22 +0000 |
commit | 506d007c7de2e8fbbe90bed7dd9b91a3d59e9de2 (patch) | |
tree | a0bf2cdf5a730707c3ac044fc4085f0c36bacc05 /sys/net80211/ieee80211_output.c | |
parent | b56ccf5e16a730658f80c0f89fd03bafd1ed90cb (diff) | |
download | FreeBSD-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.c | 7 |
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; |