qcacmn: Register API to flush frags in dp peer ops
Register dp_peer_flush_frags API in dp peer ops for flushing fragments for a particular peer. Change-Id: Ia179d3160bdc306ec965c465134042c66a0c40a6 CRs-Fixed: 2874366
This commit is contained in:

committed by
Madan Koyyalamudi

父節點
817481b5e3
當前提交
df22eee823
@@ -2752,4 +2752,16 @@ void dp_pdev_bkp_stats_detach(struct dp_pdev *pdev);
|
||||
*/
|
||||
|
||||
QDF_STATUS dp_pdev_bkp_stats_attach(struct dp_pdev *pdev);
|
||||
|
||||
/**
|
||||
* dp_peer_flush_frags() - Flush all fragments for a particular
|
||||
* peer
|
||||
* @soc_hdl - data path soc handle
|
||||
* @vdev_id - vdev id
|
||||
* @peer_addr - peer mac address
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void dp_peer_flush_frags(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
uint8_t *peer_mac);
|
||||
#endif /* #ifndef _DP_INTERNAL_H_ */
|
||||
|
@@ -12639,6 +12639,7 @@ static struct cdp_peer_ops dp_ops_peer = {
|
||||
.get_vdev_by_peer_addr = dp_get_vdev_by_peer_addr,
|
||||
.peer_get_peer_mac_addr = dp_peer_get_peer_mac_addr,
|
||||
.get_peer_state = dp_get_peer_state,
|
||||
.peer_flush_frags = dp_peer_flush_frags,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@@ -4649,3 +4649,30 @@ failed:
|
||||
dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_GENERIC_STATS);
|
||||
}
|
||||
#endif /* DUMP_REO_QUEUE_INFO_IN_DDR */
|
||||
|
||||
void dp_peer_flush_frags(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
uint8_t *peer_mac)
|
||||
{
|
||||
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
||||
struct dp_peer *peer = dp_peer_find_hash_find(soc, peer_mac, 0,
|
||||
vdev_id, DP_MOD_ID_CDP);
|
||||
struct dp_rx_tid *rx_tid;
|
||||
uint8_t tid;
|
||||
|
||||
if (!peer)
|
||||
return;
|
||||
|
||||
dp_info("Flushing fragments for peer " QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(peer->mac_addr.raw));
|
||||
|
||||
for (tid = 0; tid < DP_MAX_TIDS; tid++) {
|
||||
rx_tid = &peer->rx_tid[tid];
|
||||
|
||||
qdf_spin_lock_bh(&rx_tid->tid_lock);
|
||||
dp_rx_defrag_waitlist_remove(peer, tid);
|
||||
dp_rx_reorder_flush_frag(peer, tid);
|
||||
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
||||
}
|
||||
|
||||
dp_peer_unref_delete(peer, DP_MOD_ID_CDP);
|
||||
}
|
||||
|
Reference in New Issue
Block a user