Commit 488d2e0b authored by Ilan Peer's avatar Ilan Peer Committed by Johannes Berg
Browse files

wifi: mac80211: Accept management frames on NAN interface



Accept Public Action frames and Authentication frames on
NAN Device interface to support flows that require these frames:

- SDFs: For user space Discovery Engine (DE) implementation.
- NAFs: For user space NAN Data Path (NDP) establishment.
- Authentication frames: For NAN Pairing and Verification.

Accept only frames from devices that are part of the NAN
cluster.

Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250908140015.46528d69e881.Ifccd87fb2a49a3af05238f74f52fa6da8de28811@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent fc41f4a2
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -4502,8 +4502,16 @@ static bool ieee80211_accept_frame(struct ieee80211_rx_data *rx)
		       (ieee80211_is_auth(hdr->frame_control) &&
			ether_addr_equal(sdata->vif.addr, hdr->addr1));
	case NL80211_IFTYPE_NAN:
		/* Currently no frames on NAN interface are allowed */
		return false;
		/* Accept only frames that are addressed to the NAN cluster
		 * (based on the Cluster ID). From these frames, accept only
		 * action frames or authentication frames that are addressed to
		 * the local NAN interface.
		 */
		return memcmp(sdata->wdev.u.nan.cluster_id,
			      hdr->addr3, ETH_ALEN) == 0 &&
			(ieee80211_is_public_action(hdr, skb->len) ||
			 (ieee80211_is_auth(hdr->frame_control) &&
			  ether_addr_equal(sdata->vif.addr, hdr->addr1)));
	default:
		break;
	}