Skip to content

Commit

Permalink
mac80211: support station 4-addr mode fast-rx
Browse files Browse the repository at this point in the history
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Felix Fietkau authored and Johannes Berg committed Feb 27, 2018
1 parent 1d87016 commit 9251a47
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions net/mac80211/rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -3747,10 +3747,6 @@ void ieee80211_check_fast_rx(struct sta_info *sta)

switch (sdata->vif.type) {
case NL80211_IFTYPE_STATION:
/* 4-addr is harder to deal with, later maybe */
if (sdata->u.mgd.use_4addr)
goto clear;

if (sta->sta.tdls) {
fastrx.da_offs = offsetof(struct ieee80211_hdr, addr1);
fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr2);
Expand All @@ -3763,6 +3759,13 @@ void ieee80211_check_fast_rx(struct sta_info *sta)
cpu_to_le16(IEEE80211_FCTL_FROMDS);
}

if (sdata->u.mgd.use_4addr && !sta->sta.tdls) {
fastrx.expected_ds_bits |=
cpu_to_le16(IEEE80211_FCTL_TODS);
fastrx.da_offs = offsetof(struct ieee80211_hdr, addr3);
fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr4);
}

if (!sdata->u.mgd.powersave)
break;

Expand Down

0 comments on commit 9251a47

Please sign in to comment.