From 5d2b019ea457e47214657eb18b8db14d3feccb28 Mon Sep 17 00:00:00 2001 From: Jinwei Chen Date: Wed, 8 Jan 2020 22:06:15 +0800 Subject: [PATCH] qcacmn: WAR for monitor mode HTT msg sending failure If two back to back HTT msg sending happened in short time, the second HTT msg source SRNG HP writing has chance to fail, this has been confirmed by HST HW. For monitor mode, HTT msg for monitor status ring configuration is the last msg for sending, if the 2nd HTT msg for monitor status ring sending failed, HW won't provide anything into 2nd monitor status ring. as a WAR, add some delay before 2nd HTT msg start sending, > 2us is required per HST HW, delay 100 us for safe. Change-Id: Id2a5a8798fde79267f9d6f9ba23d8ed54a400aa7 CRs-Fixed: 2597248 --- dp/wifi3.0/dp_main.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 7a969ac4813c..8cb11ade5cd3 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -6713,6 +6713,19 @@ QDF_STATUS dp_pdev_configure_monitor_rings(struct dp_pdev *pdev) for (mac_id = 0; mac_id < NUM_RXDMA_RINGS_PER_PDEV; mac_id++) { int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id, pdev->pdev_id); + /* + * If two back to back HTT msg sending happened in + * short time, the second HTT msg source SRNG HP + * writing has chance to fail, this has been confirmed + * by HST HW. + * for monitor mode, here is the last HTT msg for sending. + * if the 2nd HTT msg for monitor status ring sending failed, + * HW won't provide anything into 2nd monitor status ring. + * as a WAR, add some delay before 2nd HTT msg start sending, + * > 2us is required per HST HW, delay 100 us for safe. + */ + if (mac_id) + qdf_udelay(100); htt_h2t_rx_ring_cfg(soc->htt_handle, mac_for_pdev, pdev->rxdma_mon_status_ring[mac_id].hal_srng,