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);
|
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
|
static inline int cdp_peer_add_ast
|
||||||
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac,
|
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac,
|
||||||
uint8_t *mac_addr,
|
uint8_t *mac_addr,
|
||||||
|
@@ -276,6 +276,10 @@ struct cdp_cmn_ops {
|
|||||||
txrx_ast_free_cb callback,
|
txrx_ast_free_cb callback,
|
||||||
void *cookie);
|
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
|
QDF_STATUS
|
||||||
(*txrx_peer_delete)(struct cdp_soc_t *soc, uint8_t vdev_id,
|
(*txrx_peer_delete)(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||||
uint8_t *peer_mac, uint32_t bitmap,
|
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;
|
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
|
* dp_srng_find_ring_in_mask() - find which ext_group a ring belongs
|
||||||
* @ring_num: ring num of the ring being queried
|
* @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,
|
dp_peer_ast_entry_del_by_soc,
|
||||||
.txrx_peer_ast_delete_by_pdev =
|
.txrx_peer_ast_delete_by_pdev =
|
||||||
dp_peer_ast_entry_del_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,
|
.txrx_peer_delete = dp_peer_delete_wifi3,
|
||||||
#ifdef DP_RX_UDP_OVER_PEER_ROAM
|
#ifdef DP_RX_UDP_OVER_PEER_ROAM
|
||||||
.txrx_update_roaming_peer = dp_update_roaming_peer_wifi3,
|
.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
|
* Return: None
|
||||||
*/
|
*/
|
||||||
static void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
||||||
uint8_t vdev_id,
|
uint8_t vdev_id,
|
||||||
uint8_t *wds_macaddr,
|
uint8_t *wds_macaddr,
|
||||||
uint8_t type,
|
uint8_t type,
|
||||||
uint8_t delete_in_fw)
|
uint8_t delete_in_fw)
|
||||||
{
|
{
|
||||||
target_if_del_wds_entry(soc->ctrl_psoc, vdev_id,
|
target_if_del_wds_entry(soc->ctrl_psoc, vdev_id,
|
||||||
wds_macaddr, type, delete_in_fw);
|
wds_macaddr, type, delete_in_fw);
|
||||||
@@ -171,11 +171,11 @@ static int dp_update_wds_entry_wrapper(struct dp_soc *soc,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
||||||
uint8_t vdev_id,
|
uint8_t vdev_id,
|
||||||
uint8_t *wds_macaddr,
|
uint8_t *wds_macaddr,
|
||||||
uint8_t type,
|
uint8_t type,
|
||||||
uint8_t delete_in_fw)
|
uint8_t delete_in_fw)
|
||||||
{
|
{
|
||||||
soc->cdp_soc.ol_ops->peer_del_wds_entry(soc->ctrl_psoc,
|
soc->cdp_soc.ol_ops->peer_del_wds_entry(soc->ctrl_psoc,
|
||||||
vdev_id,
|
vdev_id,
|
||||||
@@ -183,8 +183,16 @@ static void dp_del_wds_entry_wrapper(struct dp_soc *soc,
|
|||||||
type,
|
type,
|
||||||
delete_in_fw);
|
delete_in_fw);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* BYPASS_OL_OPS */
|
||||||
#endif
|
#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
|
#ifdef FEATURE_WDS
|
||||||
static inline bool
|
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);
|
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);
|
void dp_soc_wds_attach(struct dp_soc *soc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user