summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Xu <pxu@qca.qualcomm.com>2014-03-05 12:09:08 -0800
committerNandini Suresh <snandini@qca.qualcomm.com>2014-03-07 19:21:14 -0800
commit5440a3e1e25611093b91dcbd94d873e481c19487 (patch)
tree1d40e2b93719f88f95d8e61dccf587f9f13a6ed5
parentc26f75211e9e14268bf495a2cdd814c7f31f1ea6 (diff)
qcacld:txrx: Change log level for PN check failure
When PN check is failed, the printing of log messages flood the system and cause watchdog bite. Added printing rate control to prevent excessive print. Change-Id: I835257374fdbbff910dd858b719e4862833f488f CRs-fixed: 626199
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_rx_pn.c16
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_rx_reorder.c49
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_txrx_internal.h4
3 files changed, 50 insertions, 19 deletions
diff --git a/CORE/CLD_TXRX/TXRX/ol_rx_pn.c b/CORE/CLD_TXRX/TXRX/ol_rx_pn.c
index e4eb9cdc674a..c70b5ea3e59c 100644
--- a/CORE/CLD_TXRX/TXRX/ol_rx_pn.c
+++ b/CORE/CLD_TXRX/TXRX/ol_rx_pn.c
@@ -154,6 +154,10 @@ ol_rx_pn_check_base(
if (pn_is_replay) {
adf_nbuf_t msdu;
+ static u_int32_t last_pncheck_print_time = 0;
+ int log_level;
+ u_int32_t current_time_ms;
+
/*
* This MPDU failed the PN check:
* 1. Notify the control SW of the PN failure
@@ -161,7 +165,17 @@ ol_rx_pn_check_base(
* 2. Discard all the MSDUs from this MPDU.
*/
msdu = mpdu;
- TXRX_PRINT(TXRX_PRINT_LEVEL_WARN,
+ current_time_ms = adf_os_ticks_to_msecs(adf_os_ticks());
+ if (TXRX_PN_CHECK_FAILURE_PRINT_PERIOD_MS <
+ (current_time_ms - last_pncheck_print_time)) {
+ last_pncheck_print_time = current_time_ms;
+ log_level = TXRX_PRINT_LEVEL_WARN;
+ }
+ else {
+ log_level = TXRX_PRINT_LEVEL_INFO2;
+ }
+
+ TXRX_PRINT(log_level,
"PN check failed - TID %d, peer %p "
"(%02x:%02x:%02x:%02x:%02x:%02x) %s\n"
" old PN (u64 x2)= 0x%08llx %08llx (LSBs = %lld)\n"
diff --git a/CORE/CLD_TXRX/TXRX/ol_rx_reorder.c b/CORE/CLD_TXRX/TXRX/ol_rx_reorder.c
index a54ff598c1af..eafe5b732584 100644
--- a/CORE/CLD_TXRX/TXRX/ol_rx_reorder.c
+++ b/CORE/CLD_TXRX/TXRX/ol_rx_reorder.c
@@ -631,6 +631,9 @@ ol_rx_pn_ind_handler(
if (rx_reorder_array_elem->head) {
if (pn_ie_cnt && seq_num_start == (int)(pn_ie[i])) {
adf_nbuf_t msdu, next_msdu, mpdu_head, mpdu_tail;
+ static u_int32_t last_pncheck_print_time = 0;
+ int log_level;
+ u_int32_t current_time_ms;
mpdu_head = msdu = rx_reorder_array_elem->head;
mpdu_tail = rx_reorder_array_elem->tail;
@@ -640,24 +643,34 @@ ol_rx_pn_ind_handler(
rx_desc = htt_rx_msdu_desc_retrieve(htt_pdev, msdu);
htt_rx_mpdu_desc_pn(htt_pdev, rx_desc, &pn, 16);
- TXRX_PRINT(TXRX_PRINT_LEVEL_WARN,
- "Tgt PN check failed - TID %d, peer %p "
- "(%02x:%02x:%02x:%02x:%02x:%02x)\n"
- " PN (u64 x2)= 0x%08llx %08llx (LSBs = %lld)\n"
- " new seq num = %d\n",
- tid, peer,
- peer->mac_addr.raw[0], peer->mac_addr.raw[1],
- peer->mac_addr.raw[2], peer->mac_addr.raw[3],
- peer->mac_addr.raw[4], peer->mac_addr.raw[5],
- pn.pn128[1],
- pn.pn128[0],
- pn.pn128[0] & 0xffffffffffffULL,
- htt_rx_mpdu_desc_seq_num(htt_pdev, rx_desc));
- ol_rx_err(
- pdev->ctrl_pdev,
- vdev->vdev_id, peer->mac_addr.raw, tid,
- htt_rx_mpdu_desc_tsf32(htt_pdev, rx_desc),
- OL_RX_ERR_PN, mpdu_head, NULL, 0);
+ current_time_ms = adf_os_ticks_to_msecs(adf_os_ticks());
+ if (TXRX_PN_CHECK_FAILURE_PRINT_PERIOD_MS <
+ (current_time_ms - last_pncheck_print_time)) {
+ last_pncheck_print_time = current_time_ms;
+ log_level = TXRX_PRINT_LEVEL_WARN;
+ }
+ else {
+ log_level = TXRX_PRINT_LEVEL_INFO2;
+ }
+ TXRX_PRINT(log_level,
+ "Tgt PN check failed - TID %d, peer %p "
+ "(%02x:%02x:%02x:%02x:%02x:%02x)\n"
+ " PN (u64 x2)= 0x%08llx %08llx (LSBs = %lld)\n"
+ " new seq num = %d\n",
+ tid, peer,
+ peer->mac_addr.raw[0], peer->mac_addr.raw[1],
+ peer->mac_addr.raw[2], peer->mac_addr.raw[3],
+ peer->mac_addr.raw[4], peer->mac_addr.raw[5],
+ pn.pn128[1],
+ pn.pn128[0],
+ pn.pn128[0] & 0xffffffffffffULL,
+ htt_rx_mpdu_desc_seq_num(htt_pdev, rx_desc));
+ ol_rx_err(
+ pdev->ctrl_pdev,
+ vdev->vdev_id, peer->mac_addr.raw, tid,
+ htt_rx_mpdu_desc_tsf32(htt_pdev, rx_desc),
+ OL_RX_ERR_PN, mpdu_head, NULL, 0);
+
/* free all MSDUs within this MPDU */
do {
next_msdu = adf_nbuf_next(msdu);
diff --git a/CORE/CLD_TXRX/TXRX/ol_txrx_internal.h b/CORE/CLD_TXRX/TXRX/ol_txrx_internal.h
index 3081951c7202..6b8a6f6b85fa 100644
--- a/CORE/CLD_TXRX/TXRX/ol_txrx_internal.h
+++ b/CORE/CLD_TXRX/TXRX/ol_txrx_internal.h
@@ -128,6 +128,10 @@ extern unsigned g_txrx_print_level;
#define TXRX_PRINT_VERBOSE(fmt, ...)
#endif /* TXRX_PRINT_VERBOSE_ENABLE */
+/* define PN check failure message print rate
+ as 1 second */
+#define TXRX_PN_CHECK_FAILURE_PRINT_PERIOD_MS 1000
+
#else
#define TXRX_PRINT(level, fmt, ...)
#define TXRX_PRINT_VERBOSE(fmt, ...)