wifi: iwlwifi: queue: improve warning for no skb in reclaim
authorJohannes Berg <johannes.berg@intel.com>
Tue, 6 Feb 2024 16:02:14 +0000 (18:02 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 8 Feb 2024 14:00:49 +0000 (15:00 +0100)
We've seen this warning trigger, and while the reason is
probably obvious, I haven't been able to see it yet. Add
more information to the warning message to help identify
the cause. Also print out both index and SSN for all the
messages.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240206175739.581427dc81fc.I9a109d02b4349807dce521c693ecd3516ec58cc0@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/queue/tx.c

index ba0419bc1765417abcc37b8f36853305d0ba9c27..d3bde2d010b70a11253e021bd5d8ac9b078ad33d 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
- * Copyright (C) 2020-2023 Intel Corporation
+ * Copyright (C) 2020-2024 Intel Corporation
  */
 #include <net/tso.h>
 #include <linux/tcp.h>
@@ -1602,8 +1602,8 @@ void iwl_txq_reclaim(struct iwl_trans *trans, int txq_id, int ssn,
        if (read_ptr == tfd_num)
                goto out;
 
-       IWL_DEBUG_TX_REPLY(trans, "[Q %d] %d -> %d (%d)\n",
-                          txq_id, txq->read_ptr, tfd_num, ssn);
+       IWL_DEBUG_TX_REPLY(trans, "[Q %d] %d (%d) -> %d (%d)\n",
+                          txq_id, read_ptr, txq->read_ptr, tfd_num, ssn);
 
        /*Since we free until index _not_ inclusive, the one before index is
         * the last we will free. This one must be used */
@@ -1631,7 +1631,8 @@ void iwl_txq_reclaim(struct iwl_trans *trans, int txq_id, int ssn,
             read_ptr = iwl_txq_get_cmd_index(txq, txq->read_ptr)) {
                struct sk_buff *skb = txq->entries[read_ptr].skb;
 
-               if (WARN_ON_ONCE(!skb))
+               if (WARN_ONCE(!skb, "no SKB at %d (%d) on queue %d\n",
+                             read_ptr, txq->read_ptr, txq_id))
                        continue;
 
                iwl_txq_free_tso_page(trans, skb);