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"
This commit is contained in:
parent
0510acbded
commit
f2a6a13c3b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=191555
@ -3048,8 +3048,13 @@ ieee80211_ioctl_set80211(struct ieee80211vap *vap, u_long cmd, struct ieee80211r
|
||||
vap->iv_opmode != IEEE80211_M_STA)
|
||||
return EINVAL;
|
||||
vap->iv_flags |= IEEE80211_F_DWDS;
|
||||
} else
|
||||
if (vap->iv_opmode == IEEE80211_M_STA)
|
||||
vap->iv_flags_ext |= IEEE80211_FEXT_4ADDR;
|
||||
} else {
|
||||
vap->iv_flags &= ~IEEE80211_F_DWDS;
|
||||
if (vap->iv_opmode == IEEE80211_M_STA)
|
||||
vap->iv_flags_ext &= ~IEEE80211_FEXT_4ADDR;
|
||||
}
|
||||
break;
|
||||
case IEEE80211_IOC_INACTIVITY:
|
||||
if (ireq->i_val)
|
||||
|
@ -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;
|
||||
|
@ -514,6 +514,7 @@ MALLOC_DECLARE(M_80211_VAP);
|
||||
#define IEEE80211_FEXT_TSN 0x00000020 /* CONF: TSN enabled */
|
||||
#define IEEE80211_FEXT_SCANREQ 0x00000040 /* STATUS: scan req params */
|
||||
#define IEEE80211_FEXT_RESUME 0x00000080 /* STATUS: start on resume */
|
||||
#define IEEE80211_FEXT_4ADDR 0x00000100 /* CONF: apply 4-addr encap */
|
||||
#define IEEE80211_FEXT_NONERP_PR 0x00000200 /* STATUS: non-ERP sta present*/
|
||||
#define IEEE80211_FEXT_SWBMISS 0x00000400 /* CONF: do bmiss in s/w */
|
||||
#define IEEE80211_FEXT_DFS 0x00000800 /* CONF: DFS enabled */
|
||||
@ -535,8 +536,8 @@ MALLOC_DECLARE(M_80211_VAP);
|
||||
|
||||
#define IEEE80211_FEXT_BITS \
|
||||
"\20\1NONHT_PR\2INACT\3SCANWAIT\4BGSCAN\5WPS\6TSN\7SCANREQ\10RESUME" \
|
||||
"\12NONEPR_PR\13SWBMISS\14DFS\15DOTD\22WDSLEGACY\23PROBECHAN\24HT" \
|
||||
"\25AMDPU_TX\26AMPDU_TX\27AMSDU_TX\30AMSDU_RX\31USEHT40\32PUREN" \
|
||||
"\0114ADDR\12NONEPR_PR\13SWBMISS\14DFS\15DOTD\22WDSLEGACY\23PROBECHAN" \
|
||||
"\24HT\25AMDPU_TX\26AMPDU_TX\27AMSDU_TX\30AMSDU_RX\31USEHT40\32PUREN" \
|
||||
"\33SHORTGI20\34SHORTGI40\35HTCOMPAT\36RIFS"
|
||||
|
||||
#define IEEE80211_FVEN_BITS "\20"
|
||||
|
Loading…
Reference in New Issue
Block a user