Skip to content

Commit

Permalink
wifi: cfg80211: Extend cfg80211_update_owe_info_event() for MLD AP
Browse files Browse the repository at this point in the history
Add support to offload OWE processing to user space for MLD AP when
driver's SME in use.

Add new parameters in struct cfg80211_update_owe_info to provide below
information in cfg80211_update_owe_info_event() call:
- MLO link ID of the AP, with which station requested (re)association.
  This is applicable for both MLO and non-MLO station connections when
  the AP affiliated with an MLD.
- Station's MLD address if the connection is MLO capable.

Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
Link: https://lore.kernel.org/r/20230126143256.960563-3-quic_vjakkam@quicinc.com
[reformat the trace event macro]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Veerendranath Jakkam authored and Johannes Berg committed Feb 14, 2023
1 parent a42e59e commit 8bb588d
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 14 deletions.
1 change: 1 addition & 0 deletions drivers/net/wireless/quantenna/qtnfmac/event.c
Original file line number Diff line number Diff line change
Expand Up @@ -662,6 +662,7 @@ qtnf_event_handle_update_owe(struct qtnf_vif *vif,
memcpy(ie, owe_ev->ies, ie_len);
owe_info.ie_len = ie_len;
owe_info.ie = ie;
owe_info.assoc_link_id = -1;

pr_info("%s: external OWE processing: peer=%pM\n",
vif->netdev->name, owe_ev->peer);
Expand Down
10 changes: 10 additions & 0 deletions include/net/cfg80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -3898,12 +3898,22 @@ struct cfg80211_pmsr_request {
* the IEs of the remote peer in the event from the host driver and
* the constructed IEs by the user space in the request interface.
* @ie_len: Length of IEs in octets.
* @assoc_link_id: MLO link ID of the AP, with which (re)association requested
* by peer. This will be filled by driver for both MLO and non-MLO station
* connections when the AP affiliated with an MLD. For non-MLD AP mode, it
* will be -1. Used only with OWE update event (driver to user space).
* @peer_mld_addr: For MLO connection, MLD address of the peer. For non-MLO
* connection, it will be all zeros. This is applicable only when
* @assoc_link_id is not -1, i.e., the AP affiliated with an MLD. Used only
* with OWE update event (driver to user space).
*/
struct cfg80211_update_owe_info {
u8 peer[ETH_ALEN] __aligned(2);
u16 status;
const u8 *ie;
size_t ie_len;
int assoc_link_id;
u8 peer_mld_addr[ETH_ALEN] __aligned(2);
};

/**
Expand Down
11 changes: 11 additions & 0 deletions net/wireless/nl80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -19780,6 +19780,17 @@ void cfg80211_update_owe_info_event(struct net_device *netdev,
nla_put(msg, NL80211_ATTR_IE, owe_info->ie_len, owe_info->ie))
goto nla_put_failure;

if (owe_info->assoc_link_id != -1) {
if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID,
owe_info->assoc_link_id))
goto nla_put_failure;

if (!is_zero_ether_addr(owe_info->peer_mld_addr) &&
nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN,
owe_info->peer_mld_addr))
goto nla_put_failure;
}

genlmsg_end(msg, hdr);

genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
Expand Down
38 changes: 24 additions & 14 deletions net/wireless/trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -3748,20 +3748,30 @@ TRACE_EVENT(cfg80211_pmsr_complete,
);

TRACE_EVENT(cfg80211_update_owe_info_event,
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev,
struct cfg80211_update_owe_info *owe_info),
TP_ARGS(wiphy, netdev, owe_info),
TP_STRUCT__entry(WIPHY_ENTRY
NETDEV_ENTRY
MAC_ENTRY(peer)
__dynamic_array(u8, ie, owe_info->ie_len)),
TP_fast_assign(WIPHY_ASSIGN;
NETDEV_ASSIGN;
MAC_ASSIGN(peer, owe_info->peer);
memcpy(__get_dynamic_array(ie), owe_info->ie,
owe_info->ie_len);),
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: %pM",
WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer)
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev,
struct cfg80211_update_owe_info *owe_info),
TP_ARGS(wiphy, netdev, owe_info),
TP_STRUCT__entry(
WIPHY_ENTRY
NETDEV_ENTRY
MAC_ENTRY(peer)
__dynamic_array(u8, ie, owe_info->ie_len)
__field(int, assoc_link_id)
MAC_ENTRY(peer_mld_addr)
),
TP_fast_assign(
WIPHY_ASSIGN;
NETDEV_ASSIGN;
MAC_ASSIGN(peer, owe_info->peer);
memcpy(__get_dynamic_array(ie), owe_info->ie,
owe_info->ie_len);
__entry->assoc_link_id = owe_info->assoc_link_id;
MAC_ASSIGN(peer_mld_addr, owe_info->peer_mld_addr);
),
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: %pM,"
" assoc_link_id: %d, peer_mld_addr: %pM",
WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer,
__entry->assoc_link_id, __entry->peer_mld_addr)
);

TRACE_EVENT(cfg80211_bss_color_notify,
Expand Down

0 comments on commit 8bb588d

Please sign in to comment.