Revert "qcacmn: Add support for HMWDS add and reset cmds in Beryllium"
This reverts commit Iaa110ba26a477fc0b77647a712c377029b038940. Change-Id: Ifed1cf1e73ac03a09fc03acdc273958c9789f8a8 CRs-Fixed: 3458091
This commit is contained in:

committed by
Madan Koyyalamudi

parent
e61eaa37e2
commit
fa0f65caaa
@@ -688,6 +688,7 @@ static inline QDF_STATUS cdp_peer_ast_delete_by_pdev
|
|||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @dest_mac: AST entry mac address to delete
|
* @dest_mac: AST entry mac address to delete
|
||||||
* @type: cdp_txrx_ast_entry_type to send to FW
|
* @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
|
* Return: QDF_STATUS_SUCCESS if ast entry found with ast_mac_addr and delete
|
||||||
* is sent
|
* is sent
|
||||||
@@ -695,7 +696,7 @@ static inline QDF_STATUS cdp_peer_ast_delete_by_pdev
|
|||||||
*/
|
*/
|
||||||
static inline QDF_STATUS cdp_peer_HMWDS_ast_delete
|
static inline QDF_STATUS cdp_peer_HMWDS_ast_delete
|
||||||
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *dest_mac,
|
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *dest_mac,
|
||||||
uint8_t type)
|
uint8_t type, uint8_t delete_in_fw)
|
||||||
{
|
{
|
||||||
if (!soc || !soc->ops) {
|
if (!soc || !soc->ops) {
|
||||||
dp_cdp_debug("Invalid Instance:");
|
dp_cdp_debug("Invalid Instance:");
|
||||||
@@ -711,7 +712,8 @@ static inline QDF_STATUS cdp_peer_HMWDS_ast_delete
|
|||||||
(soc,
|
(soc,
|
||||||
vdev_id,
|
vdev_id,
|
||||||
dest_mac,
|
dest_mac,
|
||||||
type);
|
type,
|
||||||
|
delete_in_fw);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int cdp_peer_add_ast
|
static inline int cdp_peer_add_ast
|
||||||
@@ -739,7 +741,7 @@ static inline int cdp_peer_add_ast
|
|||||||
|
|
||||||
static inline QDF_STATUS cdp_peer_reset_ast
|
static inline QDF_STATUS cdp_peer_reset_ast
|
||||||
(ol_txrx_soc_handle soc, uint8_t *wds_macaddr, uint8_t *peer_macaddr,
|
(ol_txrx_soc_handle soc, uint8_t *wds_macaddr, uint8_t *peer_macaddr,
|
||||||
uint8_t vdev_id, enum cdp_txrx_ast_entry_type type)
|
uint8_t vdev_id)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!soc || !soc->ops) {
|
if (!soc || !soc->ops) {
|
||||||
@@ -752,12 +754,11 @@ static inline QDF_STATUS cdp_peer_reset_ast
|
|||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
return soc->ops->cmn_drv_ops->txrx_peer_reset_ast(soc, wds_macaddr,
|
return soc->ops->cmn_drv_ops->txrx_peer_reset_ast(soc, wds_macaddr,
|
||||||
peer_macaddr, vdev_id, type);
|
peer_macaddr, vdev_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QDF_STATUS cdp_peer_reset_ast_table
|
static inline QDF_STATUS cdp_peer_reset_ast_table
|
||||||
(ol_txrx_soc_handle soc, uint8_t vdev_id,
|
(ol_txrx_soc_handle soc, uint8_t vdev_id)
|
||||||
enum cdp_txrx_ast_entry_type type)
|
|
||||||
{
|
{
|
||||||
if (!soc || !soc->ops) {
|
if (!soc || !soc->ops) {
|
||||||
dp_cdp_debug("Invalid Instance:");
|
dp_cdp_debug("Invalid Instance:");
|
||||||
@@ -769,8 +770,7 @@ static inline QDF_STATUS cdp_peer_reset_ast_table
|
|||||||
!soc->ops->cmn_drv_ops->txrx_peer_reset_ast_table)
|
!soc->ops->cmn_drv_ops->txrx_peer_reset_ast_table)
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
return soc->ops->cmn_drv_ops->txrx_peer_reset_ast_table(soc, vdev_id,
|
return soc->ops->cmn_drv_ops->txrx_peer_reset_ast_table(soc, vdev_id);
|
||||||
type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void cdp_peer_flush_ast_table
|
static inline void cdp_peer_flush_ast_table
|
||||||
|
@@ -281,7 +281,7 @@ struct cdp_cmn_ops {
|
|||||||
|
|
||||||
QDF_STATUS (*txrx_peer_HMWDS_ast_delete)
|
QDF_STATUS (*txrx_peer_HMWDS_ast_delete)
|
||||||
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *dest_mac,
|
(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *dest_mac,
|
||||||
uint8_t type);
|
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,
|
||||||
@@ -596,12 +596,10 @@ struct cdp_cmn_ops {
|
|||||||
|
|
||||||
QDF_STATUS (*txrx_peer_reset_ast)
|
QDF_STATUS (*txrx_peer_reset_ast)
|
||||||
(ol_txrx_soc_handle soc, uint8_t *ast_macaddr,
|
(ol_txrx_soc_handle soc, uint8_t *ast_macaddr,
|
||||||
uint8_t *peer_macaddr, uint8_t vdev_id,
|
uint8_t *peer_macaddr, uint8_t vdev_id);
|
||||||
enum cdp_txrx_ast_entry_type type);
|
|
||||||
|
|
||||||
QDF_STATUS (*txrx_peer_reset_ast_table)
|
QDF_STATUS (*txrx_peer_reset_ast_table)(ol_txrx_soc_handle soc,
|
||||||
(ol_txrx_soc_handle soc, uint8_t vdev_id,
|
uint8_t vdev_id);
|
||||||
enum cdp_txrx_ast_entry_type type);
|
|
||||||
|
|
||||||
void (*txrx_peer_flush_ast_table)(ol_txrx_soc_handle soc);
|
void (*txrx_peer_flush_ast_table)(ol_txrx_soc_handle soc);
|
||||||
void (*txrx_set_ba_aging_timeout)(struct cdp_soc_t *soc_handle,
|
void (*txrx_set_ba_aging_timeout)(struct cdp_soc_t *soc_handle,
|
||||||
|
@@ -581,15 +581,13 @@ dp_peer_reset_ast_entries(struct dp_soc *soc, struct dp_peer *peer, void *arg)
|
|||||||
* @wds_macaddr: WDS entry MAC Address
|
* @wds_macaddr: WDS entry MAC Address
|
||||||
* @peer_mac_addr: WDS entry MAC Address
|
* @peer_mac_addr: WDS entry MAC Address
|
||||||
* @vdev_id: id of vdev handle
|
* @vdev_id: id of vdev handle
|
||||||
* @type: Type of AST entry
|
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS dp_wds_reset_ast_wifi3(struct cdp_soc_t *soc_hdl,
|
static QDF_STATUS dp_wds_reset_ast_wifi3(struct cdp_soc_t *soc_hdl,
|
||||||
uint8_t *wds_macaddr,
|
uint8_t *wds_macaddr,
|
||||||
uint8_t *peer_mac_addr,
|
uint8_t *peer_mac_addr,
|
||||||
uint8_t vdev_id,
|
uint8_t vdev_id)
|
||||||
enum cdp_txrx_ast_entry_type type)
|
|
||||||
{
|
{
|
||||||
struct dp_soc *soc = (struct dp_soc *)soc_hdl;
|
struct dp_soc *soc = (struct dp_soc *)soc_hdl;
|
||||||
struct dp_ast_entry *ast_entry = NULL;
|
struct dp_ast_entry *ast_entry = NULL;
|
||||||
@@ -597,7 +595,7 @@ static QDF_STATUS dp_wds_reset_ast_wifi3(struct cdp_soc_t *soc_hdl,
|
|||||||
struct dp_pdev *pdev;
|
struct dp_pdev *pdev;
|
||||||
struct dp_vdev *vdev;
|
struct dp_vdev *vdev;
|
||||||
|
|
||||||
if (soc->ast_offload_support && type != CDP_TXRX_AST_TYPE_WDS_HM)
|
if (soc->ast_offload_support)
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_CDP);
|
vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_CDP);
|
||||||
@@ -641,17 +639,16 @@ static QDF_STATUS dp_wds_reset_ast_wifi3(struct cdp_soc_t *soc_hdl,
|
|||||||
* dp_wds_reset_ast_table_wifi3() - Reset the is_active param for all ast entry
|
* dp_wds_reset_ast_table_wifi3() - Reset the is_active param for all ast entry
|
||||||
* @soc_hdl: Datapath SOC handle
|
* @soc_hdl: Datapath SOC handle
|
||||||
* @vdev_id: id of vdev object
|
* @vdev_id: id of vdev object
|
||||||
* @type: Type of AST entry
|
|
||||||
*
|
*
|
||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
dp_wds_reset_ast_table_wifi3(struct cdp_soc_t *soc_hdl,
|
dp_wds_reset_ast_table_wifi3(struct cdp_soc_t *soc_hdl,
|
||||||
uint8_t vdev_id, enum cdp_txrx_ast_entry_type type)
|
uint8_t vdev_id)
|
||||||
{
|
{
|
||||||
struct dp_soc *soc = (struct dp_soc *) soc_hdl;
|
struct dp_soc *soc = (struct dp_soc *) soc_hdl;
|
||||||
|
|
||||||
if (soc->ast_offload_support && type != CDP_TXRX_AST_TYPE_WDS_HM)
|
if (soc->ast_offload_support)
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
qdf_spin_lock_bh(&soc->ast_lock);
|
qdf_spin_lock_bh(&soc->ast_lock);
|
||||||
@@ -975,6 +972,7 @@ static QDF_STATUS dp_peer_ast_entry_del_by_pdev(struct cdp_soc_t *soc_handle,
|
|||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
* @wds_macaddr: AST entry mac address to delete
|
* @wds_macaddr: AST entry mac address to delete
|
||||||
* @type: cdp_txrx_ast_entry_type to send to FW
|
* @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
|
* Return: QDF_STATUS_SUCCESS if ast entry found with ast_mac_addr and delete
|
||||||
* is sent
|
* is sent
|
||||||
@@ -983,13 +981,14 @@ static QDF_STATUS dp_peer_ast_entry_del_by_pdev(struct cdp_soc_t *soc_handle,
|
|||||||
static QDF_STATUS dp_peer_HMWDS_ast_entry_del(struct cdp_soc_t *soc_handle,
|
static QDF_STATUS dp_peer_HMWDS_ast_entry_del(struct cdp_soc_t *soc_handle,
|
||||||
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)
|
||||||
{
|
{
|
||||||
struct dp_soc *soc = (struct dp_soc *)soc_handle;
|
struct dp_soc *soc = (struct dp_soc *)soc_handle;
|
||||||
|
|
||||||
if (soc->ast_offload_support) {
|
if (soc->ast_offload_support) {
|
||||||
dp_wds_reset_ast_wifi3(soc_handle, wds_macaddr, NULL, vdev_id,
|
dp_del_wds_entry_wrapper(soc, vdev_id, wds_macaddr, type,
|
||||||
type);
|
delete_in_fw);
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -201,14 +201,11 @@ dp_peer_ast_free_in_unmap_supported(struct dp_soc *soc,
|
|||||||
* for the peer free ast entry from here only in this case
|
* for the peer free ast entry from here only in this case
|
||||||
*/
|
*/
|
||||||
|
|
||||||
switch (ast_entry->type) {
|
if ((ast_entry->type != CDP_TXRX_AST_TYPE_WDS_HM_SEC) &&
|
||||||
case CDP_TXRX_AST_TYPE_WDS_HM_SEC:
|
(ast_entry->type != CDP_TXRX_AST_TYPE_SELF))
|
||||||
case CDP_TXRX_AST_TYPE_SELF:
|
|
||||||
case CDP_TXRX_AST_TYPE_WDS_HM:
|
|
||||||
return false;
|
|
||||||
default:
|
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static inline bool
|
static inline bool
|
||||||
@@ -1560,71 +1557,6 @@ void dp_peer_free_hmwds_cb(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
|
|||||||
qdf_mem_free(cookie);
|
qdf_mem_free(cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS dp_peer_add_ast_hmwds(struct dp_soc *soc,
|
|
||||||
struct dp_peer *peer,
|
|
||||||
uint8_t *mac_addr,
|
|
||||||
enum cdp_txrx_ast_entry_type type,
|
|
||||||
uint32_t flags)
|
|
||||||
{
|
|
||||||
struct dp_ast_entry *ast_entry = NULL;
|
|
||||||
struct dp_vdev *vdev = NULL;
|
|
||||||
struct dp_ast_entry *tmp_ast_entry;
|
|
||||||
int status = 0;
|
|
||||||
|
|
||||||
vdev = peer->vdev;
|
|
||||||
if (!vdev) {
|
|
||||||
dp_peer_err("%pK: Peers vdev is NULL", soc);
|
|
||||||
QDF_ASSERT(0);
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
qdf_spin_lock_bh(&soc->ast_lock);
|
|
||||||
|
|
||||||
/* Check if the mac_addr is already been part of ast_list_elem
|
|
||||||
* Return STATUS Already if found
|
|
||||||
*/
|
|
||||||
DP_PEER_ITERATE_ASE_LIST(peer, ast_entry, tmp_ast_entry) {
|
|
||||||
if ((ast_entry->type == CDP_TXRX_AST_TYPE_WDS_HM) &&
|
|
||||||
(!ast_entry->delete_in_progress) &&
|
|
||||||
(qdf_mem_cmp(mac_addr, ast_entry->mac_addr.raw,
|
|
||||||
QDF_MAC_ADDR_SIZE) == 0)) {
|
|
||||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
|
||||||
return QDF_STATUS_E_ALREADY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ast_entry = (struct dp_ast_entry *)
|
|
||||||
qdf_mem_malloc(sizeof(struct dp_ast_entry));
|
|
||||||
|
|
||||||
if (!ast_entry) {
|
|
||||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
|
||||||
dp_peer_err("%pK: fail to allocate ast_entry", soc);
|
|
||||||
QDF_ASSERT(0);
|
|
||||||
return QDF_STATUS_E_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
qdf_mem_copy(&ast_entry->mac_addr.raw[0], mac_addr, QDF_MAC_ADDR_SIZE);
|
|
||||||
ast_entry->pdev_id = vdev->pdev->pdev_id;
|
|
||||||
ast_entry->is_mapped = false;
|
|
||||||
ast_entry->delete_in_progress = false;
|
|
||||||
ast_entry->peer_id = peer->peer_id;
|
|
||||||
ast_entry->next_hop = 0;
|
|
||||||
ast_entry->vdev_id = vdev->vdev_id;
|
|
||||||
ast_entry->type = CDP_TXRX_AST_TYPE_WDS_HM;
|
|
||||||
ast_entry->is_active = TRUE;
|
|
||||||
DP_STATS_INC(soc, ast.added, 1);
|
|
||||||
dp_peer_ast_hash_add(soc, ast_entry);
|
|
||||||
soc->num_ast_entries++;
|
|
||||||
|
|
||||||
TAILQ_INSERT_TAIL(&peer->ast_entry_list, ast_entry, ase_list_elem);
|
|
||||||
|
|
||||||
status = dp_update_wds_entry_wrapper(soc,
|
|
||||||
peer,
|
|
||||||
ast_entry->mac_addr.raw,
|
|
||||||
flags);
|
|
||||||
|
|
||||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
|
||||||
return qdf_status_from_os_return(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
|
QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
|
||||||
struct dp_peer *peer,
|
struct dp_peer *peer,
|
||||||
uint8_t *mac_addr,
|
uint8_t *mac_addr,
|
||||||
@@ -1640,17 +1572,8 @@ QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
|
|||||||
bool is_peer_found = false;
|
bool is_peer_found = false;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
if (soc->ast_offload_support) {
|
if (soc->ast_offload_support)
|
||||||
if (type == CDP_TXRX_AST_TYPE_WDS_HM) {
|
return QDF_STATUS_E_INVAL;
|
||||||
return dp_peer_add_ast_hmwds(soc,
|
|
||||||
peer,
|
|
||||||
mac_addr,
|
|
||||||
flags,
|
|
||||||
type);
|
|
||||||
} else {
|
|
||||||
return QDF_STATUS_E_INVAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vdev = peer->vdev;
|
vdev = peer->vdev;
|
||||||
if (!vdev) {
|
if (!vdev) {
|
||||||
@@ -1934,15 +1857,14 @@ void dp_peer_del_ast(struct dp_soc *soc, struct dp_ast_entry *ast_entry)
|
|||||||
{
|
{
|
||||||
struct dp_peer *peer = NULL;
|
struct dp_peer *peer = NULL;
|
||||||
|
|
||||||
|
if (soc->ast_offload_support)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!ast_entry) {
|
if (!ast_entry) {
|
||||||
dp_info_rl("NULL AST entry");
|
dp_info_rl("NULL AST entry");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (soc->ast_offload_support && ast_entry->type !=
|
|
||||||
CDP_TXRX_AST_TYPE_WDS_HM)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (ast_entry->delete_in_progress) {
|
if (ast_entry->delete_in_progress) {
|
||||||
dp_info_rl("AST entry deletion in progress mac addr:"QDF_MAC_ADDR_FMT" type:%d",
|
dp_info_rl("AST entry deletion in progress mac addr:"QDF_MAC_ADDR_FMT" type:%d",
|
||||||
QDF_MAC_ADDR_REF(ast_entry->mac_addr.raw),
|
QDF_MAC_ADDR_REF(ast_entry->mac_addr.raw),
|
||||||
@@ -2138,15 +2060,6 @@ struct dp_ast_entry *dp_peer_ast_hash_find_by_vdevid(struct dp_soc *soc,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDF_STATUS dp_peer_add_ast_hmwds(struct dp_soc *soc,
|
|
||||||
struct dp_peer *peer,
|
|
||||||
uint8_t *mac_addr,
|
|
||||||
enum cdp_txrx_ast_entry_type type,
|
|
||||||
uint32_t flags)
|
|
||||||
{
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
|
QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
|
||||||
struct dp_peer *peer,
|
struct dp_peer *peer,
|
||||||
uint8_t *mac_addr,
|
uint8_t *mac_addr,
|
||||||
|
@@ -710,22 +710,6 @@ QDF_STATUS dp_peer_add_ast(struct dp_soc *soc, struct dp_peer *peer,
|
|||||||
uint8_t *mac_addr, enum cdp_txrx_ast_entry_type type,
|
uint8_t *mac_addr, enum cdp_txrx_ast_entry_type type,
|
||||||
uint32_t flags);
|
uint32_t flags);
|
||||||
|
|
||||||
/**
|
|
||||||
* dp_peer_add_ast_hmwds() - Allocate and add hmwds AST entry into peer list
|
|
||||||
* @soc: SoC handle
|
|
||||||
* @peer: peer to which ast node belongs
|
|
||||||
* @mac_addr: MAC address of ast node
|
|
||||||
* @type: AST entry type
|
|
||||||
* @flags: AST configuration flags
|
|
||||||
*
|
|
||||||
* This function adds new HMWDS AST entry into peer AST list
|
|
||||||
*
|
|
||||||
* Return: QDF_STATUS code
|
|
||||||
*/
|
|
||||||
QDF_STATUS dp_peer_add_ast_hmwds(struct dp_soc *soc, struct dp_peer *peer,
|
|
||||||
uint8_t *mac_addr,
|
|
||||||
enum cdp_txrx_ast_entry_type type,
|
|
||||||
uint32_t flags);
|
|
||||||
/**
|
/**
|
||||||
* dp_peer_del_ast() - Delete and free AST entry
|
* dp_peer_del_ast() - Delete and free AST entry
|
||||||
* @soc: SoC handle
|
* @soc: SoC handle
|
||||||
|
Reference in New Issue
Block a user