wifi: cfg80211: Allow action frames to be transmitted with link BSS in MLD
authorRameshkumar Sundaram <quic_ramess@quicinc.com>
Wed, 1 Feb 2023 06:16:02 +0000 (11:46 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 14 Feb 2023 11:17:54 +0000 (12:17 +0100)
Currently action frames TX only with ML address as A3(BSSID) are
allowed in an ML AP, but TX for a non-ML Station can happen in any
link of an ML BSS with link BSS address as A3.
In case of an MLD, if User-space has provided a valid link_id in
action frame TX request, allow transmission of the frame in that link.

Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
Link: https://lore.kernel.org/r/20230201061602.3918-1-quic_ramess@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/mlme.c

index 58e1fb18f85a41d87e0ef39d879d715498e143bc..81d3f40d623570a945ed7451e264a7f3fc97e432 100644 (file)
@@ -742,7 +742,10 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
                case NL80211_IFTYPE_AP:
                case NL80211_IFTYPE_P2P_GO:
                case NL80211_IFTYPE_AP_VLAN:
-                       if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev)))
+                       if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev)) &&
+                           (params->link_id < 0 ||
+                            !ether_addr_equal(mgmt->bssid,
+                                              wdev->links[params->link_id].addr)))
                                err = -EINVAL;
                        break;
                case NL80211_IFTYPE_MESH_POINT: