mac80211: ignore frames between TDLS peers when operating as AP
If the AP receives actions frames destined for other peers, it may mistakenly toggle BA-sessions from itself to a peer. Ignore TDLS data packets as well - the AP should not handle them. Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
c72e114046
commit
db8e173245
@ -3129,6 +3129,14 @@ static bool prepare_for_handlers(struct ieee80211_rx_data *rx,
|
|||||||
if (!ieee80211_is_beacon(hdr->frame_control))
|
if (!ieee80211_is_beacon(hdr->frame_control))
|
||||||
return false;
|
return false;
|
||||||
status->rx_flags &= ~IEEE80211_RX_RA_MATCH;
|
status->rx_flags &= ~IEEE80211_RX_RA_MATCH;
|
||||||
|
} else if (!ieee80211_has_tods(hdr->frame_control)) {
|
||||||
|
/* ignore data frames to TDLS-peers */
|
||||||
|
if (ieee80211_is_data(hdr->frame_control))
|
||||||
|
return false;
|
||||||
|
/* ignore action frames to TDLS-peers */
|
||||||
|
if (ieee80211_is_action(hdr->frame_control) &&
|
||||||
|
!ether_addr_equal(bssid, hdr->addr1))
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NL80211_IFTYPE_WDS:
|
case NL80211_IFTYPE_WDS:
|
||||||
|
Loading…
Reference in New Issue
Block a user