qcacmn: update peer state assert for MLO peer
Update the peer state check for MLO peer as per MLO state transistion Change-Id: Ia57ab5fd95f90226f505cba6363a343e5e0b44e1 CRs-Fixed: 3266005
This commit is contained in:

committed by
Madan Koyyalamudi

parent
f9883deaec
commit
baa9ecbd3c
@@ -535,73 +535,6 @@ dp_peer_state_cmp(struct dp_peer *peer,
|
|||||||
return is_status_equal;
|
return is_status_equal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* dp_peer_update_state() - update dp peer state
|
|
||||||
*
|
|
||||||
* @soc : core DP soc context
|
|
||||||
* @peer : DP peer
|
|
||||||
* @state : new state
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
static inline void
|
|
||||||
dp_peer_update_state(struct dp_soc *soc,
|
|
||||||
struct dp_peer *peer,
|
|
||||||
enum dp_peer_state state)
|
|
||||||
{
|
|
||||||
uint8_t peer_state;
|
|
||||||
|
|
||||||
qdf_spin_lock_bh(&peer->peer_state_lock);
|
|
||||||
peer_state = peer->peer_state;
|
|
||||||
|
|
||||||
switch (state) {
|
|
||||||
case DP_PEER_STATE_INIT:
|
|
||||||
DP_PEER_STATE_ASSERT
|
|
||||||
(peer, state, (peer_state != DP_PEER_STATE_ACTIVE) ||
|
|
||||||
(peer_state != DP_PEER_STATE_LOGICAL_DELETE));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DP_PEER_STATE_ACTIVE:
|
|
||||||
DP_PEER_STATE_ASSERT(peer, state,
|
|
||||||
(peer_state == DP_PEER_STATE_INIT));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DP_PEER_STATE_LOGICAL_DELETE:
|
|
||||||
DP_PEER_STATE_ASSERT(peer, state,
|
|
||||||
(peer_state == DP_PEER_STATE_ACTIVE) ||
|
|
||||||
(peer_state == DP_PEER_STATE_INIT));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DP_PEER_STATE_INACTIVE:
|
|
||||||
DP_PEER_STATE_ASSERT
|
|
||||||
(peer, state,
|
|
||||||
(peer_state == DP_PEER_STATE_LOGICAL_DELETE));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DP_PEER_STATE_FREED:
|
|
||||||
if (peer->sta_self_peer)
|
|
||||||
DP_PEER_STATE_ASSERT
|
|
||||||
(peer, state, (peer_state == DP_PEER_STATE_INIT));
|
|
||||||
else
|
|
||||||
DP_PEER_STATE_ASSERT
|
|
||||||
(peer, state,
|
|
||||||
(peer_state == DP_PEER_STATE_INACTIVE) ||
|
|
||||||
(peer_state == DP_PEER_STATE_LOGICAL_DELETE));
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
qdf_spin_unlock_bh(&peer->peer_state_lock);
|
|
||||||
dp_alert("Invalid peer state %u for peer "QDF_MAC_ADDR_FMT,
|
|
||||||
state, QDF_MAC_ADDR_REF(peer->mac_addr.raw));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
peer->peer_state = state;
|
|
||||||
qdf_spin_unlock_bh(&peer->peer_state_lock);
|
|
||||||
dp_info("Updating peer state from %u to %u mac "QDF_MAC_ADDR_FMT"\n",
|
|
||||||
peer_state, state,
|
|
||||||
QDF_MAC_ADDR_REF(peer->mac_addr.raw));
|
|
||||||
}
|
|
||||||
|
|
||||||
void dp_print_ast_stats(struct dp_soc *soc);
|
void dp_print_ast_stats(struct dp_soc *soc);
|
||||||
QDF_STATUS dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_id,
|
QDF_STATUS dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_id,
|
||||||
uint16_t hw_peer_id, uint8_t vdev_id,
|
uint16_t hw_peer_id, uint8_t vdev_id,
|
||||||
@@ -2101,6 +2034,78 @@ void dp_peer_rx_bufq_resources_deinit(struct dp_txrx_peer *txrx_peer)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dp_peer_update_state() - update dp peer state
|
||||||
|
*
|
||||||
|
* @soc : core DP soc context
|
||||||
|
* @peer : DP peer
|
||||||
|
* @state : new state
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
static inline void
|
||||||
|
dp_peer_update_state(struct dp_soc *soc,
|
||||||
|
struct dp_peer *peer,
|
||||||
|
enum dp_peer_state state)
|
||||||
|
{
|
||||||
|
uint8_t peer_state;
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&peer->peer_state_lock);
|
||||||
|
peer_state = peer->peer_state;
|
||||||
|
|
||||||
|
switch (state) {
|
||||||
|
case DP_PEER_STATE_INIT:
|
||||||
|
DP_PEER_STATE_ASSERT
|
||||||
|
(peer, state, (peer_state != DP_PEER_STATE_ACTIVE) ||
|
||||||
|
(peer_state != DP_PEER_STATE_LOGICAL_DELETE));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DP_PEER_STATE_ACTIVE:
|
||||||
|
DP_PEER_STATE_ASSERT(peer, state,
|
||||||
|
(peer_state == DP_PEER_STATE_INIT));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DP_PEER_STATE_LOGICAL_DELETE:
|
||||||
|
DP_PEER_STATE_ASSERT(peer, state,
|
||||||
|
(peer_state == DP_PEER_STATE_ACTIVE) ||
|
||||||
|
(peer_state == DP_PEER_STATE_INIT));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DP_PEER_STATE_INACTIVE:
|
||||||
|
if (IS_MLO_DP_MLD_PEER(peer))
|
||||||
|
DP_PEER_STATE_ASSERT
|
||||||
|
(peer, state,
|
||||||
|
(peer_state == DP_PEER_STATE_ACTIVE));
|
||||||
|
else
|
||||||
|
DP_PEER_STATE_ASSERT
|
||||||
|
(peer, state,
|
||||||
|
(peer_state == DP_PEER_STATE_LOGICAL_DELETE));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DP_PEER_STATE_FREED:
|
||||||
|
if (peer->sta_self_peer)
|
||||||
|
DP_PEER_STATE_ASSERT
|
||||||
|
(peer, state, (peer_state == DP_PEER_STATE_INIT));
|
||||||
|
else
|
||||||
|
DP_PEER_STATE_ASSERT
|
||||||
|
(peer, state,
|
||||||
|
(peer_state == DP_PEER_STATE_INACTIVE) ||
|
||||||
|
(peer_state == DP_PEER_STATE_LOGICAL_DELETE));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
qdf_spin_unlock_bh(&peer->peer_state_lock);
|
||||||
|
dp_alert("Invalid peer state %u for peer " QDF_MAC_ADDR_FMT,
|
||||||
|
state, QDF_MAC_ADDR_REF(peer->mac_addr.raw));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
peer->peer_state = state;
|
||||||
|
qdf_spin_unlock_bh(&peer->peer_state_lock);
|
||||||
|
dp_info("Updating peer state from %u to %u mac " QDF_MAC_ADDR_FMT "\n",
|
||||||
|
peer_state, state,
|
||||||
|
QDF_MAC_ADDR_REF(peer->mac_addr.raw));
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef REO_SHARED_QREF_TABLE_EN
|
#ifdef REO_SHARED_QREF_TABLE_EN
|
||||||
void dp_peer_rx_reo_shared_qaddr_delete(struct dp_soc *soc,
|
void dp_peer_rx_reo_shared_qaddr_delete(struct dp_soc *soc,
|
||||||
struct dp_peer *peer);
|
struct dp_peer *peer);
|
||||||
|
Reference in New Issue
Block a user