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
Cette révision appartient à :
Chaithanya Garrepalli
2022-07-27 22:24:16 +05:30
révisé par Madan Koyyalamudi
Parent f9883deaec
révision baa9ecbd3c

Voir le fichier

@@ -535,73 +535,6 @@ dp_peer_state_cmp(struct dp_peer *peer,
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);
QDF_STATUS dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_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
/**
* 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
void dp_peer_rx_reo_shared_qaddr_delete(struct dp_soc *soc,
struct dp_peer *peer);