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
Šī revīzija ir iekļauta:
Sheenam Monga
2022-11-21 04:50:16 -08:00
revīziju iesūtīja Madan Koyyalamudi
vecāks 9406e4252e
revīzija ac14a3912b
7 mainīti faili ar 196 papildinājumiem un 2 dzēšanām

Parādīt failu

@@ -796,6 +796,8 @@ struct nan_datapath_host_event {
* @delete_peers_by_addr: LIM callback for deleting peer by MAC address
* @update_ndi_conn: WMA callback to update NDI's connection info
* @nan_concurrency_update: Callback to handle nan concurrency
* @nan_sr_concurrency_update: Callback to handle nan SR(Spatial Reuse)
* concurrency
*/
struct nan_callbacks {
/* callback to os_if layer from umac */
@@ -822,6 +824,9 @@ struct nan_callbacks {
struct nan_datapath_channel_info
*chan_info);
void (*nan_concurrency_update)(void);
#ifdef WLAN_FEATURE_SR
void (*nan_sr_concurrency_update)(struct nan_event_params *nan_evt);
#endif
};
/**

Parādīt failu

@@ -594,6 +594,21 @@ static void ucfg_nan_request_process_cb(void *cookie)
}
}
#ifdef WLAN_FEATURE_SR
static void
nan_register_sr_concurrency_callback(struct nan_psoc_priv_obj *psoc_obj,
struct nan_callbacks *cb_obj)
{
psoc_obj->cb_obj.nan_sr_concurrency_update =
cb_obj->nan_sr_concurrency_update;
}
#else
static inline void
nan_register_sr_concurrency_callback(struct nan_psoc_priv_obj *psoc_obj,
struct nan_callbacks *cb_obj)
{}
#endif
int ucfg_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
struct nan_callbacks *cb_obj)
{
@@ -624,7 +639,7 @@ int ucfg_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
ucfg_nan_request_process_cb;
psoc_obj->cb_obj.nan_concurrency_update =
cb_obj->nan_concurrency_update;
nan_register_sr_concurrency_callback(psoc_obj, cb_obj);
return 0;
}