qcacmn: Add HMWDS rem-addr support in Beryllium
Add HMWDS rem-addr support to delete AST WDS mac entries in Beryllium chipsets. Change-Id: I5623bac02b326d1d668ad5e1fdcfc3a9f8cbbb9c CRs-Fixed: 3397961
This commit is contained in:

committed by
Madan Koyyalamudi

parent
56559ee387
commit
ee1493dc9c
@@ -680,6 +680,42 @@ static inline QDF_STATUS cdp_peer_ast_delete_by_pdev
|
||||
cookie);
|
||||
}
|
||||
|
||||
/**
|
||||
* cdp_peer_HMWDS_ast_delete() - delete the ast entry from soc AST hash table
|
||||
* for HMWDS rem-addr command
|
||||
*
|
||||
* @soc: data path soc handle
|
||||
* @vdev_id: vdev id
|
||||
* @dest_mac: AST entry mac address to delete
|
||||
* @type: cdp_txrx_ast_entry_type to send to FW
|
||||
* @delete_in_fw: flag to indicate AST entry deletion in FW
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS if ast entry found with ast_mac_addr and delete
|
||||
* is sent
|
||||
* QDF_STATUS_E_INVAL false if ast entry not found
|
||||
*/
|
||||
static inline QDF_STATUS cdp_peer_HMWDS_ast_delete
|
||||
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *dest_mac,
|
||||
uint8_t type, uint8_t delete_in_fw)
|
||||
{
|
||||
if (!soc || !soc->ops) {
|
||||
dp_cdp_debug("Invalid Instance:");
|
||||
QDF_BUG(0);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
if (!soc->ops->cmn_drv_ops ||
|
||||
!soc->ops->cmn_drv_ops->txrx_peer_HMWDS_ast_delete)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
return soc->ops->cmn_drv_ops->txrx_peer_HMWDS_ast_delete
|
||||
(soc,
|
||||
vdev_id,
|
||||
dest_mac,
|
||||
type,
|
||||
delete_in_fw);
|
||||
}
|
||||
|
||||
static inline int cdp_peer_add_ast
|
||||
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac,
|
||||
uint8_t *mac_addr,
|
||||
|
@@ -276,6 +276,10 @@ struct cdp_cmn_ops {
|
||||
txrx_ast_free_cb callback,
|
||||
void *cookie);
|
||||
|
||||
QDF_STATUS (*txrx_peer_HMWDS_ast_delete)
|
||||
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *dest_mac,
|
||||
uint8_t type, uint8_t delete_in_fw);
|
||||
|
||||
QDF_STATUS
|
||||
(*txrx_peer_delete)(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||
uint8_t *peer_mac, uint32_t bitmap,
|
||||
|
@@ -1186,6 +1186,37 @@ static QDF_STATUS dp_peer_ast_entry_del_by_pdev(struct cdp_soc_t *soc_handle,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_peer_HMWDS_ast_entry_del() - delete the ast entry from soc AST hash
|
||||
* table if HMWDS rem-addr command is issued
|
||||
*
|
||||
* @soc_handle: data path soc handle
|
||||
* @vdev_id: vdev id
|
||||
* @wds_macaddr: AST entry mac address to delete
|
||||
* @type: cdp_txrx_ast_entry_type to send to FW
|
||||
* @delete_in_fw: flag to indicate AST entry deletion in FW
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS if ast entry found with ast_mac_addr and delete
|
||||
* is sent
|
||||
* QDF_STATUS_E_INVAL false if ast entry not found
|
||||
*/
|
||||
static QDF_STATUS dp_peer_HMWDS_ast_entry_del(struct cdp_soc_t *soc_handle,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *wds_macaddr,
|
||||
uint8_t type,
|
||||
uint8_t delete_in_fw)
|
||||
{
|
||||
struct dp_soc *soc = (struct dp_soc *)soc_handle;
|
||||
|
||||
if (soc->ast_offload_support) {
|
||||
dp_del_wds_entry_wrapper(soc, vdev_id, wds_macaddr, type,
|
||||
delete_in_fw);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
return -QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_srng_find_ring_in_mask() - find which ext_group a ring belongs
|
||||
* @ring_num: ring num of the ring being queried
|
||||
@@ -14040,6 +14071,7 @@ static struct cdp_cmn_ops dp_ops_cmn = {
|
||||
dp_peer_ast_entry_del_by_soc,
|
||||
.txrx_peer_ast_delete_by_pdev =
|
||||
dp_peer_ast_entry_del_by_pdev,
|
||||
.txrx_peer_HMWDS_ast_delete = dp_peer_HMWDS_ast_entry_del,
|
||||
.txrx_peer_delete = dp_peer_delete_wifi3,
|
||||
#ifdef DP_RX_UDP_OVER_PEER_ROAM
|
||||
.txrx_update_roaming_peer = dp_update_roaming_peer_wifi3,
|
||||
|
@@ -123,11 +123,11 @@ static int dp_update_wds_entry_wrapper(struct dp_soc *soc,
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *wds_macaddr,
|
||||
uint8_t type,
|
||||
uint8_t delete_in_fw)
|
||||
void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *wds_macaddr,
|
||||
uint8_t type,
|
||||
uint8_t delete_in_fw)
|
||||
{
|
||||
target_if_del_wds_entry(soc->ctrl_psoc, vdev_id,
|
||||
wds_macaddr, type, delete_in_fw);
|
||||
@@ -171,11 +171,11 @@ static int dp_update_wds_entry_wrapper(struct dp_soc *soc,
|
||||
return status;
|
||||
}
|
||||
|
||||
static void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *wds_macaddr,
|
||||
uint8_t type,
|
||||
uint8_t delete_in_fw)
|
||||
void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *wds_macaddr,
|
||||
uint8_t type,
|
||||
uint8_t delete_in_fw)
|
||||
{
|
||||
soc->cdp_soc.ol_ops->peer_del_wds_entry(soc->ctrl_psoc,
|
||||
vdev_id,
|
||||
@@ -183,8 +183,16 @@ static void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
||||
type,
|
||||
delete_in_fw);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif /* BYPASS_OL_OPS */
|
||||
#else
|
||||
void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
||||
uint8_t vdev_id,
|
||||
uint8_t *wds_macaddr,
|
||||
uint8_t type,
|
||||
uint8_t delete_in_fw)
|
||||
{
|
||||
}
|
||||
#endif /* FEATURE_AST */
|
||||
|
||||
#ifdef FEATURE_WDS
|
||||
static inline bool
|
||||
|
@@ -1258,6 +1258,22 @@ QDF_STATUS dp_peer_ast_hash_attach(struct dp_soc *soc);
|
||||
*/
|
||||
QDF_STATUS dp_peer_mec_hash_attach(struct dp_soc *soc);
|
||||
|
||||
/**
|
||||
* dp_del_wds_entry_wrapper() - delete a WDS AST entry
|
||||
* @soc: DP soc structure pointer
|
||||
* @vdev_id: vdev_id
|
||||
* @wds_macaddr: MAC address of ast node
|
||||
* @type: type from enum cdp_txrx_ast_entry_type
|
||||
* @delete_in_fw: Flag to indicate if entry needs to be deleted in fw
|
||||
*
|
||||
* This API is used to delete an AST entry from fw
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void dp_del_wds_entry_wrapper(struct dp_soc *soc, uint8_t vdev_id,
|
||||
uint8_t *wds_macaddr, uint8_t type,
|
||||
uint8_t delete_in_fw);
|
||||
|
||||
void dp_soc_wds_attach(struct dp_soc *soc);
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user