Commit b3860e7a authored by Sergey Matyukevich's avatar Sergey Matyukevich Committed by Kalle Valo
Browse files

qtnfmac: support WPA3 SAE in AP mode



Enable WPA3 SAE support in AP mode. Driver currently supports cards
that offload SAE authentication to userspace. So allow userspace
software to subscribe and to send AUTH frames. Besides, enable
AP mode support in external_auth cfg80211 callback.

Signed-off-by: default avatarSergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent e6e0f093
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -60,7 +60,8 @@ qtnf_mgmt_stypes[NUM_NL80211_IFTYPES] = {
		      BIT(IEEE80211_STYPE_AUTH >> 4),
	},
	[NL80211_IFTYPE_AP] = {
		.tx = BIT(IEEE80211_STYPE_ACTION >> 4),
		.tx = BIT(IEEE80211_STYPE_ACTION >> 4) |
		      BIT(IEEE80211_STYPE_AUTH >> 4),
		.rx = BIT(IEEE80211_STYPE_ACTION >> 4) |
		      BIT(IEEE80211_STYPE_PROBE_REQ >> 4) |
		      BIT(IEEE80211_STYPE_ASSOC_REQ >> 4) |
@@ -679,10 +680,8 @@ qtnf_external_auth(struct wiphy *wiphy, struct net_device *dev,
	struct qtnf_vif *vif = qtnf_netdev_get_priv(dev);
	int ret;

	if (vif->wdev.iftype != NL80211_IFTYPE_STATION)
		return -EOPNOTSUPP;

	if (!ether_addr_equal(vif->bssid, auth->bssid))
	if (vif->wdev.iftype == NL80211_IFTYPE_STATION &&
	    !ether_addr_equal(vif->bssid, auth->bssid))
		pr_warn("unexpected bssid: %pM", auth->bssid);

	ret = qtnf_cmd_send_external_auth(vif, auth);
+1 −1
Original line number Diff line number Diff line
@@ -2211,7 +2211,7 @@ int qtnf_cmd_send_external_auth(struct qtnf_vif *vif,

	cmd = (struct qlink_cmd_external_auth *)cmd_skb->data;

	ether_addr_copy(cmd->bssid, auth->bssid);
	ether_addr_copy(cmd->peer, auth->bssid);
	cmd->status = cpu_to_le16(auth->status);

	qtnf_bus_lock(vif->mac->bus);
+3 −3
Original line number Diff line number Diff line
@@ -578,7 +578,7 @@ qtnf_event_handle_external_auth(struct qtnf_vif *vif,
	ether_addr_copy(auth.bssid, ev->bssid);
	auth.action = ev->action;

	pr_info("%s: external auth bss=%pM action=%u akm=%u\n",
	pr_debug("%s: external SAE processing: bss=%pM action=%u akm=%u\n",
		 vif->netdev->name, auth.bssid, auth.action,
		 auth.key_mgmt_suite);

+1 −1
Original line number Diff line number Diff line
@@ -589,7 +589,7 @@ struct qlink_cmd_connect {
 */
struct qlink_cmd_external_auth {
	struct qlink_cmd chdr;
	u8 bssid[ETH_ALEN];
	u8 peer[ETH_ALEN];
	__le16 status;
	u8 payload[0];
} __packed;