qcacmn: add state to data path peer
Add states to data path peer and appropriate checks for transistion of states Change-Id: Ieaadbf4b406351d48aece7fd3552abe42d61db1e
This commit is contained in:

committato da
snandini

parent
f4701f13ec
commit
1322dc7949
@@ -885,9 +885,13 @@ QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
|
||||
is_peer_found = dp_peer_exist_on_pdev(soc, mac_addr, 0, pdev);
|
||||
|
||||
qdf_spin_lock_bh(&soc->ast_lock);
|
||||
if (peer->delete_in_progress) {
|
||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
||||
return QDF_STATUS_E_BUSY;
|
||||
|
||||
if (peer->peer_state != DP_PEER_STATE_ACTIVE) {
|
||||
if ((type != CDP_TXRX_AST_TYPE_STATIC) &&
|
||||
(type != CDP_TXRX_AST_TYPE_SELF)) {
|
||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
||||
return QDF_STATUS_E_BUSY;
|
||||
}
|
||||
}
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||
@@ -1296,7 +1300,8 @@ int dp_peer_update_ast(struct dp_soc *soc, struct dp_peer *peer,
|
||||
* 2) Peer delete is already triggered
|
||||
* 3) We did not get the HTT map for create event
|
||||
*/
|
||||
if (ast_entry->delete_in_progress || peer->delete_in_progress ||
|
||||
if (ast_entry->delete_in_progress ||
|
||||
(peer->peer_state != DP_PEER_STATE_ACTIVE) ||
|
||||
!ast_entry->is_mapped)
|
||||
return ret;
|
||||
|
||||
@@ -1936,6 +1941,16 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc,
|
||||
"%s: ref_cnt: %d", __func__,
|
||||
qdf_atomic_read(&peer->ref_cnt));
|
||||
|
||||
/*
|
||||
* if peer is in logical delete CP triggered delete before map
|
||||
* is received ignore this event
|
||||
*/
|
||||
if (peer->peer_state == DP_PEER_STATE_LOGICAL_DELETE) {
|
||||
dp_peer_unref_delete(peer, DP_MOD_ID_PEER_CONFIG);
|
||||
dp_alert("Peer %pK[%pM] logical delete state vid %d",
|
||||
peer, peer_mac_addr, vdev_id);
|
||||
return NULL;
|
||||
}
|
||||
dp_peer_find_id_to_obj_add(soc, peer, peer_id);
|
||||
if (peer->peer_id == HTT_INVALID_PEER) {
|
||||
peer->peer_id = peer_id;
|
||||
@@ -1944,6 +1959,7 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc,
|
||||
QDF_ASSERT(0);
|
||||
}
|
||||
|
||||
dp_peer_update_state(soc, peer, DP_PEER_STATE_ACTIVE);
|
||||
return peer;
|
||||
}
|
||||
|
||||
@@ -2119,6 +2135,8 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
|
||||
qdf_spin_lock_bh(&soc->inactive_peer_list_lock);
|
||||
TAILQ_INSERT_TAIL(&soc->inactive_peer_list, peer, inactive_list_elem);
|
||||
qdf_spin_unlock_bh(&soc->inactive_peer_list_lock);
|
||||
|
||||
dp_peer_update_state(soc, peer, DP_PEER_STATE_INACTIVE);
|
||||
/*
|
||||
* Remove a reference to the peer.
|
||||
* If there are no more references, delete the peer object.
|
||||
@@ -2298,8 +2316,7 @@ QDF_STATUS dp_rx_tid_setup_wifi3(struct dp_peer *peer, int tid,
|
||||
uint32_t alloc_tries = 0;
|
||||
QDF_STATUS err = QDF_STATUS_SUCCESS;
|
||||
|
||||
if (peer->delete_in_progress ||
|
||||
!qdf_atomic_read(&peer->is_default_route_set))
|
||||
if (!qdf_atomic_read(&peer->is_default_route_set))
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
rx_tid->ba_win_size = ba_window_size;
|
||||
|
Fai riferimento in un nuovo problema
Block a user