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:

committed by
Madan Koyyalamudi

parent
9406e4252e
commit
ac14a3912b
@@ -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 =
|
||||
|
Reference in New Issue
Block a user