Created attachment 260823 [details] dmesg output iwlwifi prints "Too many chunks: 20" multiple times per second when there is network activity. firmware-version: 31.532993.0
Turning on swcrypto appears to fix the issue.
Thanks for reporting! We'll take a look into it. Any more information you can give us? Type of encryption and such?
AES, and I have these AES related kernel config options: # CONFIG_SND_MAESTRO3 is not set CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set CONFIG_CRYPTO_AES_X86_64=y CONFIG_CRYPTO_AES_NI_INTEL=y CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=y # CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set
This can happen when the network stack sends packets that are extremely fragmented. What application do you use to create such type of traffic? The explanation on why swcrypto helps is that in order to encrypt the packet in the driver (mac80211 really), we first linearize it (meaning: we copy it to another buffer which is physically contiguous) and then there is no fragmentation. So what we could do is just to linearize the skb in the if that prints this error message.
I first noticed it when using KTorrent but it continued when other programs were using the network after KTorrent was closed. After testing it again it seems I can only reproduce it using KTorrent.
Ok - I guess we can try to do something about it. I'll come up with a patch later. Chances are that this patch will crash your system, so... beware.
wait - no. I am missing something here. Please reproduce with: diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c index b47d5483bcad..4c446f1e15e5 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c @@ -470,8 +470,8 @@ static int iwl_pcie_txq_build_tfd(struct iwl_trans *trans, struct iwl_txq *txq, /* Each TFD can point to a maximum max_tbs Tx buffers */ if (num_tbs >= trans_pcie->max_tbs) { - IWL_ERR(trans, "Error can not send more than %d chunks\n", - trans_pcie->max_tbs); + IWL_ERR(trans, "Error can not send more than %d chunks - had %d\n", + trans_pcie->max_tbs, num_tbs); return -EINVAL; }
The error happens in a different area (line 382: IWL_ERR(trans, "Too many chunks: %i\n", num_tbs);) max_tbs and num_tbs are both 20 every time the error occurs.
Created attachment 273329 [details] Fix canditate Please try the patch attached.
Working and seems stable on my machine.
(In reply to Emmanuel Grumbach from comment #9) > Created attachment 273329 [details] > Fix canditate > > Please try the patch attached. It is possible to push this patch into current long-term kernels?
(In reply to ValdikSS from comment #11) > (In reply to Emmanuel Grumbach from comment #9) > > Created attachment 273329 [details] > > Fix canditate > > > > Please try the patch attached. > > It is possible to push this patch into current long-term kernels? Go ahead :) You can send the patch just like I can :) If you don't know how, I'll do it.
(In reply to Emmanuel Grumbach from comment #12) > (In reply to ValdikSS from comment #11) > > (In reply to Emmanuel Grumbach from comment #9) > > > Created attachment 273329 [details] > > > Fix canditate > > > > > > Please try the patch attached. > > > > It is possible to push this patch into current long-term kernels? > > Go ahead :) > > You can send the patch just like I can :) > > If you don't know how, I'll do it. Please post it yourself.
Done