qcacld-3.0: Send async event to userspace for NAN concurrency

As part of Spatial Reuse, host has to send SR Suspend and resume
events based on concurrency which is not sent in case of NAN
concurrency.

Fix is to send SR Suspend in case NAN comes up and any STA that
supports SR is already present because SR is not supported in
case of NAN concurrency. Similarly during NAN disable check
if any other vdev apart from NAN is sharing mac with STA that
supports SR and SR support on same mac is disabled then don't
send SR resume event as there is already a concurrent vdev that
will take care of SR Suspend event otherwise send SR Resume event.

Change-Id: I56a9b455dd0166bc3997f8306992e46da759e992
CRs-Fixed: 3339713
This commit is contained in:
Sheenam Monga
2022-11-21 04:50:16 -08:00
committed by Madan Koyyalamudi
parent 9406e4252e
commit ac14a3912b
7 changed files with 196 additions and 2 deletions

View File

@@ -2570,6 +2570,37 @@ failure:
kfree_skb(vendor_event);
}
/**
* os_if_nan_handle_sr_nan_concurrency() - Handle NAN concurrency for Spatial
* Reuse
* @nan_evt: NAN Event parameters
*
* Module calls callback to send SR event to userspace.
*
* Return: none
*/
#ifdef WLAN_FEATURE_SR
static void
os_if_nan_handle_sr_nan_concurrency(struct nan_event_params *nan_evt) {
void (*nan_sr_conc_callback)(struct nan_event_params *nan_evt);
struct nan_psoc_priv_obj *psoc_obj =
nan_get_psoc_priv_obj(nan_evt->psoc);
if (!psoc_obj) {
nan_err("nan psoc priv object is NULL");
return;
}
nan_sr_conc_callback = psoc_obj->cb_obj.nan_sr_concurrency_update;
if (nan_sr_conc_callback)
nan_sr_conc_callback(nan_evt);
}
#else
static void
os_if_nan_handle_sr_nan_concurrency(struct nan_event_params *nan_evt)
{}
#endif
/**
* os_if_nan_discovery_event_handler() - NAN Discovery Interface event handler
* @nan_evt: NAN Event parameters
@@ -2593,6 +2624,8 @@ static void os_if_nan_discovery_event_handler(struct nan_event_params *nan_evt)
osif_err("null pdev");
return;
}
os_if_nan_handle_sr_nan_concurrency(nan_evt);
os_priv = wlan_pdev_get_ospriv(pdev);
vendor_event =