1
0

qcacld-3.0: Update peer delete indication to hostapd

As a part of SAP CSA, host deletes all peers if the new channel needs
CAC. Host deletes all peers from lim and doesn't give STAs delete
indication to hostapd. Hence after deleting all peers from LIM, update
stations delete indication to hostapd.

Change-Id: I833cf7b39b78c20f9a972a47461401baa485d101
CRs-Fixed: 2825720
Dieser Commit ist enthalten in:
Abhishek Ambure
2020-12-10 15:01:08 +05:30
committet von snandini
Ursprung ad558e24e5
Commit 8f9ca8e62c
5 geänderte Dateien mit 54 neuen und 0 gelöschten Zeilen

Datei anzeigen

@@ -3524,6 +3524,25 @@ void hdd_sap_destroy_ctx_all(struct hdd_context *hdd_ctx, bool is_ssr)
}
}
static void
hdd_indicate_peers_deleted(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
{
struct hdd_adapter *adapter;
if (!psoc) {
hdd_err("psoc obj is NULL");
return;
}
adapter = wlan_hdd_get_adapter_from_vdev(psoc, vdev_id);
if (hdd_validate_adapter(adapter)) {
hdd_err("invalid adapter");
return;
}
hdd_sap_indicate_disconnect_for_sta(adapter);
}
QDF_STATUS hdd_init_ap_mode(struct hdd_adapter *adapter, bool reinit)
{
struct hdd_hostapd_state *phostapdBuf;
@@ -3641,6 +3660,8 @@ QDF_STATUS hdd_init_ap_mode(struct hdd_adapter *adapter, bool reinit)
sizeof(struct sap_acs_cfg));
}
sme_set_del_peers_ind_callback(hdd_ctx->mac_handle,
&hdd_indicate_peers_deleted);
/* rcpi info initialization */
qdf_mem_zero(&adapter->rcpi, sizeof(adapter->rcpi));
hdd_exit();

Datei anzeigen

@@ -775,6 +775,8 @@ struct mac_context {
struct wlan_objmgr_psoc *psoc;
struct wlan_objmgr_pdev *pdev;
void (*chan_info_cb)(struct scan_chan_info *chan_info);
void (*del_peers_ind_cb)(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id);
enum country_src reg_hint_src;
uint32_t rx_packet_drop_counter;
enum tx_ack_status auth_ack_status;

Datei anzeigen

@@ -3296,6 +3296,8 @@ void lim_delete_all_peers(struct pe_session *session)
}
}
lim_disconnect_complete(session, false);
if (mac_ctx->del_peers_ind_cb)
mac_ctx->del_peers_ind_cb(mac_ctx->psoc, session->vdev_id);
}
QDF_STATUS lim_sta_send_del_bss(struct pe_session *session)

Datei anzeigen

@@ -2372,6 +2372,20 @@ QDF_STATUS sme_set_nud_debug_stats_cb(mac_handle_t mac_handle,
void (*cb)(void *, struct rsp_stats *, void *context),
void *context);
/**
* sme_set_del_peers_ind_callback() - Register del peers ind callback
* @mac_handle - MAC global handle
* @callback_routine - callback routine from HDD
*
* This API is invoked by HDD to register its callback to mac
*
* Return: QDF_STATUS
*/
void
sme_set_del_peers_ind_callback(mac_handle_t mac_handle,
void (*callback)(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id));
/**
* sme_set_chan_info_callback() - Register chan info callback
* @mac_handle - MAC global handle

Datei anzeigen

@@ -12937,6 +12937,21 @@ QDF_STATUS sme_delete_mon_session(mac_handle_t mac_handle, uint8_t vdev_id)
return status;
}
void
sme_set_del_peers_ind_callback(mac_handle_t mac_handle,
void (*callback)(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id))
{
struct mac_context *mac;
if (!mac_handle) {
QDF_ASSERT(0);
return;
}
mac = MAC_CONTEXT(mac_handle);
mac->del_peers_ind_cb = callback;
}
void sme_set_chan_info_callback(mac_handle_t mac_handle,
void (*callback)(struct scan_chan_info *chan_info))
{