qcacld-3.0: Update netif queue timestamp to avoid watchdog
Update netif queue timestamp while stopping queues
to avoid NETDEV watchdog
CRs-Fixed: 983687
Change-Id: Ifb0777001fead64836f1ea38eb8a3becc47ecac2
diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c
index faf3fbe..5bb3492 100644
--- a/core/hdd/src/wlan_hdd_softap_tx_rx.c
+++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c
@@ -370,11 +370,11 @@
{
hdd_adapter_t *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
hdd_context_t *hdd_ctx;
+ struct netdev_queue *txq;
+ int i;
DPTRACE(qdf_dp_trace(NULL, QDF_DP_TRACE_HDD_SOFTAP_TX_TIMEOUT,
NULL, 0));
- QDF_TRACE(QDF_MODULE_ID_HDD_SAP_DATA, QDF_TRACE_LEVEL_ERROR,
- "%s: Transmission timeout occurred", __func__);
/* Getting here implies we disabled the TX queues for too
* long. Queues are disabled either because of disassociation
* or low resource scenarios. In case of disassociation it is
@@ -387,6 +387,24 @@
"%s: Recovery in Progress. Ignore!!!", __func__);
return;
}
+
+ QDF_TRACE(QDF_MODULE_ID_HDD_SAP_DATA, QDF_TRACE_LEVEL_ERROR,
+ "%s: Transmission timeout occurred jiffies %lu trans_start %lu"
+ , __func__, jiffies, dev->trans_start);
+
+ for (i = 0; i < NUM_TX_QUEUES; i++) {
+ txq = netdev_get_tx_queue(dev, i);
+ QDF_TRACE(QDF_MODULE_ID_HDD_DATA,
+ QDF_TRACE_LEVEL_ERROR,
+ "Queue%d status: %d txq->trans_start %lu",
+ i, netif_tx_queue_stopped(txq), txq->trans_start);
+ }
+
+ wlan_hdd_display_netif_queue_history(hdd_ctx);
+ ol_tx_dump_flow_pool_info();
+ QDF_TRACE(QDF_MODULE_ID_HDD_DATA, QDF_TRACE_LEVEL_ERROR,
+ "carrier state: %d", netif_carrier_ok(dev));
+
}
/**