This BUG_ON really shouldn't trigger, but if it does, as on my machine,
it leaves you wondering what happened because you won't see it. Let's
instead leak a bit of state and memory and at least make it possible to
report it to the kerneloops project to track it.
Signed-off-by: Johannes Berg <[email protected]>
---
--- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-tx.c 2008-09-23 13:00:01.096489715 +0200
+++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-tx.c 2008-09-23 13:02:32.195402653 +0200
@@ -1203,7 +1203,8 @@ void iwl_tx_cmd_complete(struct iwl_priv
if (txq_id != IWL_CMD_QUEUE_NUM)
IWL_ERROR("Error wrong command queue %d command id 0x%X\n",
txq_id, pkt->hdr.cmd);
- BUG_ON(txq_id != IWL_CMD_QUEUE_NUM);
+ if (WARN_ON(txq_id != IWL_CMD_QUEUE_NUM))
+ return;
cmd_index = get_cmd_index(&priv->txq[IWL_CMD_QUEUE_NUM].q, index, huge);
cmd = priv->txq[IWL_CMD_QUEUE_NUM].cmd[cmd_index];
On Tue, 2008-09-23 at 11:18 -0600, Johannes Berg wrote:
> This BUG_ON really shouldn't trigger, but if it does, as on my machine,
> it leaves you wondering what happened because you won't see it. Let's
> instead leak a bit of state and memory and at least make it possible to
> report it to the kerneloops project to track it.
>
> Signed-off-by: Johannes Berg <[email protected]>
Ack for 2.6.27. We are also working on for the root cause btw.
Thanks,
-yi
> ---
>
> --- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-tx.c 2008-09-23 13:00:01.096489715 +0200
> +++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-tx.c 2008-09-23 19:07:14.107323109 +0200
> @@ -1200,10 +1200,9 @@ void iwl_tx_cmd_complete(struct iwl_priv
> /* If a Tx command is being handled and it isn't in the actual
> * command queue then there a command routing bug has been introduced
> * in the queue management code. */
> - if (txq_id != IWL_CMD_QUEUE_NUM)
> - IWL_ERROR("Error wrong command queue %d command id 0x%X\n",
> - txq_id, pkt->hdr.cmd);
> - BUG_ON(txq_id != IWL_CMD_QUEUE_NUM);
> + if (WARN(txq_id != IWL_CMD_QUEUE_NUM,
> + "wrong command queue %d, command id 0x%X\n", txq_id, pkt->hdr.cmd))
> + return;
>
> cmd_index = get_cmd_index(&priv->txq[IWL_CMD_QUEUE_NUM].q, index, huge);
> cmd = priv->txq[IWL_CMD_QUEUE_NUM].cmd[cmd_index];
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
This BUG_ON really shouldn't trigger, but if it does, as on my machine,
it leaves you wondering what happened because you won't see it. Let's
instead leak a bit of state and memory and at least make it possible to
report it to the kerneloops project to track it.
Signed-off-by: Johannes Berg <[email protected]>
---
--- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-tx.c 2008-09-23 13:00:01.096489715 +0200
+++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-tx.c 2008-09-23 19:07:14.107323109 +0200
@@ -1200,10 +1200,9 @@ void iwl_tx_cmd_complete(struct iwl_priv
/* If a Tx command is being handled and it isn't in the actual
* command queue then there a command routing bug has been introduced
* in the queue management code. */
- if (txq_id != IWL_CMD_QUEUE_NUM)
- IWL_ERROR("Error wrong command queue %d command id 0x%X\n",
- txq_id, pkt->hdr.cmd);
- BUG_ON(txq_id != IWL_CMD_QUEUE_NUM);
+ if (WARN(txq_id != IWL_CMD_QUEUE_NUM,
+ "wrong command queue %d, command id 0x%X\n", txq_id, pkt->hdr.cmd))
+ return;
cmd_index = get_cmd_index(&priv->txq[IWL_CMD_QUEUE_NUM].q, index, huge);
cmd = priv->txq[IWL_CMD_QUEUE_NUM].cmd[cmd_index];
On Tue, Sep 23, 2008 at 8:18 PM, Johannes Berg
<[email protected]> wrote:
> This BUG_ON really shouldn't trigger, but if it does, as on my machine,
> it leaves you wondering what happened because you won't see it. Let's
> instead leak a bit of state and memory and at least make it possible to
> report it to the kerneloops project to track it.
>
> Signed-off-by: Johannes Berg <[email protected]>
> ---
>
> --- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-tx.c 2008-09-23 13:00:01.096489715 +0200
> +++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-tx.c 2008-09-23 19:07:14.107323109 +0200
> @@ -1200,10 +1200,9 @@ void iwl_tx_cmd_complete(struct iwl_priv
> /* If a Tx command is being handled and it isn't in the actual
> * command queue then there a command routing bug has been introduced
> * in the queue management code. */
> - if (txq_id != IWL_CMD_QUEUE_NUM)
> - IWL_ERROR("Error wrong command queue %d command id 0x%X\n",
> - txq_id, pkt->hdr.cmd);
> - BUG_ON(txq_id != IWL_CMD_QUEUE_NUM);
> + if (WARN(txq_id != IWL_CMD_QUEUE_NUM,
> + "wrong command queue %d, command id 0x%X\n", txq_id, pkt->hdr.cmd))
> + return;
>
> cmd_index = get_cmd_index(&priv->txq[IWL_CMD_QUEUE_NUM].q, index, huge);
> cmd = priv->txq[IWL_CMD_QUEUE_NUM].cmd[cmd_index];
>
>
>
Find with me
Tomas