qcacmn: Notify HMWDS ast add status to upper layers

Notification is sent in following two scenarios.
 - After call to dp_peer_add_ast() if we are not expecting any
   peer map event.
 - When HTT peer map event is received.

Change-Id: Id926d1cec1ee64520b0368fcc5000988c24e0513
CRs-Fixed: 2745542
This commit is contained in:
Jeevan Kukkalli
2020-07-08 23:57:43 +05:30
committed by snandini
parent 66c83b2fbe
commit 94c430da4a
3 changed files with 35 additions and 4 deletions

View File

@@ -29,6 +29,9 @@
#include <hal_reo.h>
#include <cdp_txrx_handle.h>
#include <wlan_cfg.h>
#ifdef FEATURE_WDS
#include "dp_txrx_wds.h"
#endif
#ifdef WLAN_TX_PKT_CAPTURE_ENH
#include "dp_tx_capture.h"
@@ -593,6 +596,7 @@ static inline QDF_STATUS dp_peer_map_ast(struct dp_soc *soc,
cb = ast_entry->callback;
cookie = ast_entry->cookie;
peer_type = ast_entry->type;
dp_peer_unlink_ast_entry(soc, ast_entry);
dp_peer_free_ast_entry(soc, ast_entry);
@@ -613,6 +617,10 @@ static inline QDF_STATUS dp_peer_map_ast(struct dp_soc *soc,
vdev_id, is_wds);
}
err = QDF_STATUS_E_INVAL;
dp_hmwds_ast_add_notify(peer, mac_addr,
peer_type, err, true);
return err;
}
}
@@ -640,6 +648,10 @@ static inline QDF_STATUS dp_peer_map_ast(struct dp_soc *soc,
}
qdf_spin_unlock_bh(&soc->ast_lock);
dp_hmwds_ast_add_notify(peer, mac_addr,
peer_type, err, true);
return err;
}
@@ -652,6 +664,7 @@ void dp_peer_free_hmwds_cb(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
(struct dp_ast_free_cb_params *)cookie;
struct dp_soc *soc = (struct dp_soc *)dp_soc;
struct dp_peer *peer = NULL;
QDF_STATUS err = QDF_STATUS_SUCCESS;
if (status != CDP_TXRX_AST_DELETED) {
qdf_mem_free(cookie);
@@ -661,10 +674,14 @@ void dp_peer_free_hmwds_cb(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
peer = dp_peer_find_hash_find(soc, &param->peer_mac_addr.raw[0],
0, param->vdev_id);
if (peer) {
dp_peer_add_ast(soc, peer,
&param->mac_addr.raw[0],
param->type,
param->flags);
err = dp_peer_add_ast(soc, peer,
&param->mac_addr.raw[0],
param->type,
param->flags);
dp_hmwds_ast_add_notify(peer, &param->mac_addr.raw[0],
param->type, err, false);
dp_peer_unref_delete(peer);
}
qdf_mem_free(cookie);