qcacmn: Send client disconnect event to IPA
When AP vap disconnect aburputly or by doing channel switch then for WDS node, client disconnect event is not sent to IPA driver, hence IPA is not aware of any new wds client coming behind that peer as the previous delete event is not handled properly Fix is to send wds client disconnect event when ast entry are flushed. CRs-Fixed: 3271481 Change-Id: Id507f543c8f4cb8f69e26ba6ca3a23787af21ed7
このコミットが含まれているのは:
@@ -935,6 +935,35 @@ static void dp_wds_flush_ast_table_wifi3(struct cdp_soc_t *soc_hdl)
|
||||
dp_peer_mec_flush_entries(soc);
|
||||
}
|
||||
|
||||
#if defined(IPA_WDS_EASYMESH_FEATURE) && defined(FEATURE_AST)
|
||||
/*
|
||||
* dp_peer_send_wds_disconnect() - Send Disconnect event to IPA for each peer
|
||||
* @soc: Datapath SOC
|
||||
* @peer: Datapath peer
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
dp_peer_send_wds_disconnect(struct dp_soc *soc, struct dp_peer *peer)
|
||||
{
|
||||
struct dp_ast_entry *ase = NULL;
|
||||
struct dp_ast_entry *temp_ase;
|
||||
|
||||
DP_PEER_ITERATE_ASE_LIST(peer, ase, temp_ase) {
|
||||
if (ase->type == CDP_TXRX_AST_TYPE_WDS) {
|
||||
soc->cdp_soc.ol_ops->peer_send_wds_disconnect(soc->ctrl_psoc,
|
||||
ase->mac_addr.raw,
|
||||
ase->vdev_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined(FEATURE_AST)
|
||||
static void
|
||||
dp_peer_send_wds_disconnect(struct dp_soc *soc, struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_peer_get_ast_info_by_soc_wifi3() - search the soc AST hash table
|
||||
* and return ast entry information
|
||||
@@ -12485,6 +12514,7 @@ dp_peer_teardown_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
dp_peer_update_state(soc, peer, DP_PEER_STATE_LOGICAL_DELETE);
|
||||
|
||||
qdf_spin_lock_bh(&soc->ast_lock);
|
||||
dp_peer_send_wds_disconnect(soc, peer);
|
||||
dp_peer_delete_ast_entries(soc, peer);
|
||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
||||
|
||||
|
新しいイシューから参照
ユーザーをブロックする