qcacld-3.0: Refine PASN peer delete all & pasn auth status path
Refine PASN peer delete all path, to post message to scheduler thread to process the peer delete all message for PASN peers. Handle response timeout in WMA. Resume vdev deletion after removing pasn peers Add vendor command support to parse below vendor commands: QCA_NL80211_VENDOR_SUBCMD_PASN QCA_NL80211_VENDOR_SUBCMD_SECURE_RANGING_CONTEXT Send install key command to firmware to install the PTK upon receiving QCA_NL80211_VENDOR_SUBCMD_SECURE_RANGING_CONTEXT vendor command. If LTF keyseed is also received, send the LTF keyseed to firmware. Sent PASN auth status to firmware upon receiving QCA_NL80211_VENDOR_SUBCMD_PASN command. Change-Id: Idc9c69f7288b0774cc6d9bdcfed13ba3684bbc72 CRs-Fixed: 3231205
This commit is contained in:

committed by
Madan Koyyalamudi

parent
4b2a3cae5d
commit
832fee1036
@@ -21,9 +21,19 @@
|
||||
#define _WLAN_WIFI_POS_IFACE_API_H_
|
||||
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
#include "wma_if.h"
|
||||
#include "lim_types.h"
|
||||
#include "wifi_pos_pasn_api.h"
|
||||
|
||||
#if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT)
|
||||
/**
|
||||
* wlan_wifi_pos_pasn_peer_delete_all - Delete all pasn peer callback
|
||||
* @self_peer_del_msg: Scheduler message
|
||||
*
|
||||
* Return: True if PASN peer delete all is required
|
||||
*/
|
||||
bool wlan_wifi_pos_pasn_peer_delete_all(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* wifi_pos_register_legacy_ops() - Register wifi pos legacy callbacks
|
||||
* @psoc: Psoc pointer
|
||||
@@ -53,5 +63,12 @@ wifi_pos_deregister_legacy_ops(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
wlan_wifi_pos_pasn_peer_delete_all(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#endif /* _WLAN_WIFI_POS_IFACE_API_H_ */
|
||||
|
@@ -17,9 +17,9 @@
|
||||
* DOC: define internal APIs related to the mlme component, legacy APIs are
|
||||
* called for the time being, but will be cleaned up after convergence
|
||||
*/
|
||||
#include "wma_pasn_peer_api.h"
|
||||
#include "wifi_pos_api.h"
|
||||
#include "wlan_wifi_pos_interface.h"
|
||||
#include "wma_pasn_peer_api.h"
|
||||
|
||||
#if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT)
|
||||
/**
|
||||
@@ -64,7 +64,58 @@ static QDF_STATUS wlan_wifi_pos_pasn_peer_delete(struct wlan_objmgr_psoc *psoc,
|
||||
static QDF_STATUS
|
||||
wlan_wifi_pos_vdev_delete_resume(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
return wma_pasn_peer_delete_all_complete(vdev);
|
||||
}
|
||||
|
||||
bool
|
||||
wlan_wifi_pos_pasn_peer_delete_all(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
QDF_STATUS status;
|
||||
struct scheduler_msg msg = {0};
|
||||
struct pasn_peer_delete_msg *req;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||
WLAN_WIFI_POS_TGT_IF_ID);
|
||||
if (!vdev) {
|
||||
mlme_err("Vdev is not found for id:%d", vdev_id);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(vdev->vdev_mlme.vdev_opmode == QDF_STA_MODE ||
|
||||
vdev->vdev_mlme.vdev_opmode == QDF_SAP_MODE)) {
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_WIFI_POS_TGT_IF_ID);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!wifi_pos_get_pasn_peer_count(vdev) ||
|
||||
wifi_pos_is_delete_all_peer_in_progress(vdev)) {
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_WIFI_POS_TGT_IF_ID);
|
||||
return false;
|
||||
}
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_WIFI_POS_TGT_IF_ID);
|
||||
|
||||
req = qdf_mem_malloc(sizeof(*req));
|
||||
if (!req)
|
||||
return false;
|
||||
|
||||
req->vdev_id = vdev_id;
|
||||
|
||||
msg.type = WIFI_POS_PASN_PEER_DELETE_ALL;
|
||||
msg.bodyptr = req;
|
||||
|
||||
status = scheduler_post_message(QDF_MODULE_ID_WIFIPOS,
|
||||
QDF_MODULE_ID_PE,
|
||||
QDF_MODULE_ID_PE, &msg);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
qdf_mem_free(req);
|
||||
mlme_err("Delete all pasn peers failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct wifi_pos_legacy_ops wifi_pos_ops = {
|
||||
|
Reference in New Issue
Block a user