* [PATCH 0/4] iwlwifi fixes
@ 2012-05-10 16:05 Johannes Berg
2012-05-10 16:05 ` [PATCH 1/4] iwlwifi: fix prints in iwl_rx_handle Johannes Berg
` (4 more replies)
0 siblings, 5 replies; 19+ messages in thread
From: Johannes Berg @ 2012-05-10 16:05 UTC (permalink / raw)
To: linville; +Cc: linux-wireless
John,
Here are a few fixes for iwlwifi. It's probably too late to get
them into 3.4 but I split them out into their own series anyway.
This is my first ever submission as iwlwifi maintainer, so I
hope it works ok and doesn't get too many CCs :-)
johannes
^ permalink raw reply [flat|nested] 19+ messages in thread* [PATCH 1/4] iwlwifi: fix prints in iwl_rx_handle 2012-05-10 16:05 [PATCH 0/4] iwlwifi fixes Johannes Berg @ 2012-05-10 16:05 ` Johannes Berg 2012-05-10 16:38 ` [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg Joe Perches 2012-05-11 10:59 ` [PATCH 1/4 v2] iwlwifi: fix prints in iwl_rx_handle Johannes Berg 2012-05-10 16:05 ` [PATCH 2/4] iwlwifi: fix the Transmit Frame Descriptor rings Johannes Berg ` (3 subsequent siblings) 4 siblings, 2 replies; 19+ messages in thread From: Johannes Berg @ 2012-05-10 16:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Emmanuel Grumbach From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> The debug prints were wrong and buggy. The HW pointer wasn't printed correctly, it was mixed up with the pointer to the rxbuf. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c index d7b5e66..9191143 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c @@ -499,7 +499,7 @@ static void iwl_rx_handle(struct iwl_trans *trans) /* Rx interrupt, but nothing sent from uCode */ if (i == r) - IWL_DEBUG_RX(trans, "r = %d, i = %d\n", r, i); + IWL_DEBUG_RX(trans, "HW = SW = %d\n", r); /* calculate total frames need to be restock after handling RX */ total_empty = r - rxq->write_actual; @@ -515,7 +515,8 @@ static void iwl_rx_handle(struct iwl_trans *trans) rxb = rxq->queue[i]; rxq->queue[i] = NULL; - IWL_DEBUG_RX(trans, "rxbuf: r = %d, i = %d (%p)\n", rxb); + IWL_DEBUG_RX(trans, "rxbuf: HW = %d, SW = %d (%p)\n", + r, i, rxb); iwl_rx_handle_rxbuf(trans, rxb); i = (i + 1) & RX_QUEUE_MASK; -- 1.7.10 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg 2012-05-10 16:05 ` [PATCH 1/4] iwlwifi: fix prints in iwl_rx_handle Johannes Berg @ 2012-05-10 16:38 ` Joe Perches 2012-05-10 16:50 ` Johannes Berg 2012-05-11 10:59 ` [PATCH 1/4 v2] iwlwifi: fix prints in iwl_rx_handle Johannes Berg 1 sibling, 1 reply; 19+ messages in thread From: Joe Perches @ 2012-05-10 16:38 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Emmanuel Grumbach Add gcc format and argument printf checking to reduce future defect introduction. Signed-off-by: Joe Perches <joe@perches.com> --- drivers/net/wireless/iwlwifi/iwl-debug.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-debug.h b/drivers/net/wireless/iwlwifi/iwl-debug.h index 8376b84..d0c7c9e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-debug.h +++ b/drivers/net/wireless/iwlwifi/iwl-debug.h @@ -50,10 +50,12 @@ void __iwl_crit(struct device *dev, const char *fmt, ...); #define IWL_CRIT(m, f, a...) __iwl_crit((m)->dev, f, ## a) #if defined(CONFIG_IWLWIFI_DEBUG) || defined(CONFIG_IWLWIFI_DEVICE_TRACING) +__printf(5, 6) void __iwl_dbg(struct device *dev, u32 level, bool limit, const char *function, const char *fmt, ...); #else +__printf(5, 6) static inline void __iwl_dbg(struct device *dev, u32 level, bool limit, const char *function, ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg 2012-05-10 16:38 ` [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg Joe Perches @ 2012-05-10 16:50 ` Johannes Berg 2012-05-10 16:56 ` Johannes Berg 2012-05-10 17:34 ` Joe Perches 0 siblings, 2 replies; 19+ messages in thread From: Johannes Berg @ 2012-05-10 16:50 UTC (permalink / raw) To: Joe Perches; +Cc: linville, linux-wireless, Emmanuel Grumbach On Thu, 2012-05-10 at 09:38 -0700, Joe Perches wrote: > Add gcc format and argument printf checking > to reduce future defect introduction. Good point, I'll pick this up. > Signed-off-by: Joe Perches <joe@perches.com> > --- > drivers/net/wireless/iwlwifi/iwl-debug.h | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/wireless/iwlwifi/iwl-debug.h b/drivers/net/wireless/iwlwifi/iwl-debug.h > index 8376b84..d0c7c9e 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-debug.h > +++ b/drivers/net/wireless/iwlwifi/iwl-debug.h > @@ -50,10 +50,12 @@ void __iwl_crit(struct device *dev, const char *fmt, ...); > #define IWL_CRIT(m, f, a...) __iwl_crit((m)->dev, f, ## a) > > #if defined(CONFIG_IWLWIFI_DEBUG) || defined(CONFIG_IWLWIFI_DEVICE_TRACING) > +__printf(5, 6) > void __iwl_dbg(struct device *dev, > u32 level, bool limit, const char *function, > const char *fmt, ...); But that looks a bit odd to me? It would seem more natural to me to put the attribute after the parameter list? johannes ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg 2012-05-10 16:50 ` Johannes Berg @ 2012-05-10 16:56 ` Johannes Berg 2012-05-10 17:34 ` Joe Perches 1 sibling, 0 replies; 19+ messages in thread From: Johannes Berg @ 2012-05-10 16:56 UTC (permalink / raw) To: Joe Perches; +Cc: linville, linux-wireless, Emmanuel Grumbach On Thu, 2012-05-10 at 18:50 +0200, Johannes Berg wrote: > On Thu, 2012-05-10 at 09:38 -0700, Joe Perches wrote: > > Add gcc format and argument printf checking > > to reduce future defect introduction. > > Good point, I'll pick this up. I'll also add it to the other functions __iwl_crit etc. Thanks for the suggestion! johannes ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg 2012-05-10 16:50 ` Johannes Berg 2012-05-10 16:56 ` Johannes Berg @ 2012-05-10 17:34 ` Joe Perches 2012-05-10 17:40 ` Johannes Berg 1 sibling, 1 reply; 19+ messages in thread From: Joe Perches @ 2012-05-10 17:34 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Emmanuel Grumbach On Thu, 2012-05-10 at 18:50 +0200, Johannes Berg wrote: > On Thu, 2012-05-10 at 09:38 -0700, Joe Perches wrote: > > Add gcc format and argument printf checking > > to reduce future defect introduction. [] > > #if defined(CONFIG_IWLWIFI_DEBUG) || defined(CONFIG_IWLWIFI_DEVICE_TRACING) > > +__printf(5, 6) > > void __iwl_dbg(struct device *dev, > > u32 level, bool limit, const char *function, > > const char *fmt, ...); > > But that looks a bit odd to me? It would seem more natural to me to put > the attribute after the parameter list? It's an attribute of the function and this style is used almost everywhere in the kernel. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg 2012-05-10 17:34 ` Joe Perches @ 2012-05-10 17:40 ` Johannes Berg 2012-05-10 18:01 ` Joe Perches 0 siblings, 1 reply; 19+ messages in thread From: Johannes Berg @ 2012-05-10 17:40 UTC (permalink / raw) To: Joe Perches; +Cc: linville, linux-wireless, Emmanuel Grumbach On Thu, 2012-05-10 at 10:34 -0700, Joe Perches wrote: > On Thu, 2012-05-10 at 18:50 +0200, Johannes Berg wrote: > > On Thu, 2012-05-10 at 09:38 -0700, Joe Perches wrote: > > > Add gcc format and argument printf checking > > > to reduce future defect introduction. > [] > > > #if defined(CONFIG_IWLWIFI_DEBUG) || defined(CONFIG_IWLWIFI_DEVICE_TRACING) > > > +__printf(5, 6) > > > void __iwl_dbg(struct device *dev, > > > u32 level, bool limit, const char *function, > > > const char *fmt, ...); > > > > But that looks a bit odd to me? It would seem more natural to me to put > > the attribute after the parameter list? > > It's an attribute of the function and > this style is used almost everywhere > in the kernel. I also found that for the inline, it *has* to be there. Checkpatch doesn't like it though if I put it in the same line as "static inline void" ;-) johannes ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg 2012-05-10 17:40 ` Johannes Berg @ 2012-05-10 18:01 ` Joe Perches 0 siblings, 0 replies; 19+ messages in thread From: Joe Perches @ 2012-05-10 18:01 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Emmanuel Grumbach On Thu, 2012-05-10 at 19:40 +0200, Johannes Berg wrote: > Checkpatch > doesn't like it though if I put it in the same line as "static inline > void" ;-) checkpatch is both wise and stupid. ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/4 v2] iwlwifi: fix prints in iwl_rx_handle 2012-05-10 16:05 ` [PATCH 1/4] iwlwifi: fix prints in iwl_rx_handle Johannes Berg 2012-05-10 16:38 ` [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg Joe Perches @ 2012-05-11 10:59 ` Johannes Berg 2012-05-11 16:49 ` Sedat Dilek 1 sibling, 1 reply; 19+ messages in thread From: Johannes Berg @ 2012-05-11 10:59 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Emmanuel Grumbach From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> The debug prints were wrong and buggy. The HW pointer wasn't printed correctly, it was mixed up with the pointer to the rxbuf. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- v2: make patch apply -- looks like some whitespace diff to upstream crept into our tree, thanks dileks. --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c @@ -499,7 +499,7 @@ static void iwl_rx_handle(struct iwl_trans *trans) /* Rx interrupt, but nothing sent from uCode */ if (i == r) - IWL_DEBUG_RX(trans, "r = %d, i = %d\n", r, i); + IWL_DEBUG_RX(trans, "HW = SW = %d\n", r); /* calculate total frames need to be restock after handling RX */ total_empty = r - rxq->write_actual; @@ -515,8 +515,8 @@ static void iwl_rx_handle(struct iwl_trans *trans) rxb = rxq->queue[i]; rxq->queue[i] = NULL; - IWL_DEBUG_RX(trans, "rxbuf: r = %d, i = %d (%p)\n", rxb); - + IWL_DEBUG_RX(trans, "rxbuf: HW = %d, SW = %d (%p)\n", + r, i, rxb); iwl_rx_handle_rxbuf(trans, rxb); i = (i + 1) & RX_QUEUE_MASK; ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4 v2] iwlwifi: fix prints in iwl_rx_handle 2012-05-11 10:59 ` [PATCH 1/4 v2] iwlwifi: fix prints in iwl_rx_handle Johannes Berg @ 2012-05-11 16:49 ` Sedat Dilek 0 siblings, 0 replies; 19+ messages in thread From: Sedat Dilek @ 2012-05-11 16:49 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Emmanuel Grumbach On Fri, May 11, 2012 at 12:59 PM, Johannes Berg <johannes@sipsolutions.net> wrote: > From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > > The debug prints were wrong and buggy. The HW pointer wasn't printed > correctly, it was mixed up with the pointer to the rxbuf. > > Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com> > Signed-off-by: Johannes Berg <johannes.berg@intel.com> > --- > v2: make patch apply -- looks like some whitespace diff to upstream > crept into our tree, thanks dileks. > Tested-by: Sedat Dilek <sedat.dilek@gmail.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 2/4] iwlwifi: fix the Transmit Frame Descriptor rings 2012-05-10 16:05 [PATCH 0/4] iwlwifi fixes Johannes Berg 2012-05-10 16:05 ` [PATCH 1/4] iwlwifi: fix prints in iwl_rx_handle Johannes Berg @ 2012-05-10 16:05 ` Johannes Berg 2012-05-11 12:50 ` [PATCH 2/4 v2] " Johannes Berg 2012-05-16 15:16 ` [PATCH 2/4] " Johannes Berg 2012-05-10 16:05 ` [PATCH 3/4] iwlwifi: fix debug print in iwl_sta_calc_ht_flags Johannes Berg ` (2 subsequent siblings) 4 siblings, 2 replies; 19+ messages in thread From: Johannes Berg @ 2012-05-10 16:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Emmanuel Grumbach, stable From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> The logic that allows to have a short TFD queue was completely wrong. We do maintain 256 Transmit Frame Descriptors, but they point to recycled buffers. We used to attach and de-attach different TFDs for the same buffer and it worked since they pointed to the same buffer. Also zero the number of BDs after unmapping a TFD. This seems not necessary since we don't reclaim the same TFD twice, but I like housekeeping. This patch solves this warning: [ 6427.079855] WARNING: at lib/dma-debug.c:866 check_unmap+0x727/0x7a0() [ 6427.079859] Hardware name: Latitude E6410 [ 6427.079865] iwlwifi 0000:02:00.0: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0x00000000296d393c] [size=8 bytes] [ 6427.079870] Modules linked in: ... [ 6427.079950] Pid: 6613, comm: ifconfig Tainted: G O 3.3.3 #5 [ 6427.079954] Call Trace: [ 6427.079963] [<c10337a2>] warn_slowpath_common+0x72/0xa0 [ 6427.079982] [<c1033873>] warn_slowpath_fmt+0x33/0x40 [ 6427.079988] [<c12dcb77>] check_unmap+0x727/0x7a0 [ 6427.079995] [<c12dcdaa>] debug_dma_unmap_page+0x5a/0x80 [ 6427.080024] [<fe2312ac>] iwlagn_unmap_tfd+0x12c/0x180 [iwlwifi] [ 6427.080048] [<fe231349>] iwlagn_txq_free_tfd+0x49/0xb0 [iwlwifi] [ 6427.080071] [<fe228e37>] iwl_tx_queue_unmap+0x67/0x90 [iwlwifi] [ 6427.080095] [<fe22d221>] iwl_trans_pcie_stop_device+0x341/0x7b0 [iwlwifi] [ 6427.080113] [<fe204b0e>] iwl_down+0x17e/0x260 [iwlwifi] [ 6427.080132] [<fe20efec>] iwlagn_mac_stop+0x6c/0xf0 [iwlwifi] [ 6427.080168] [<fd8480ce>] ieee80211_stop_device+0x5e/0x190 [mac80211] [ 6427.080198] [<fd833208>] ieee80211_do_stop+0x288/0x620 [mac80211] [ 6427.080243] [<fd8335b7>] ieee80211_stop+0x17/0x20 [mac80211] [ 6427.080250] [<c148dac1>] __dev_close_many+0x81/0xd0 [ 6427.080270] [<c148db3d>] __dev_close+0x2d/0x50 [ 6427.080276] [<c148d152>] __dev_change_flags+0x82/0x150 [ 6427.080282] [<c148e3e3>] dev_change_flags+0x23/0x60 [ 6427.080289] [<c14f6320>] devinet_ioctl+0x6a0/0x770 [ 6427.080296] [<c14f8705>] inet_ioctl+0x95/0xb0 [ 6427.080304] [<c147a0f0>] sock_ioctl+0x70/0x270 Cc: stable@vger.kernel.org Reported-by: Antonio Quartulli <ordex@autistici.org> Tested-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h | 2 +- drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c | 22 +++++++++++++-------- drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 4 +--- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h index 6213c05..e959207 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h @@ -347,7 +347,7 @@ void iwl_trans_tx_queue_set_status(struct iwl_trans *trans, void iwl_trans_pcie_tx_agg_setup(struct iwl_trans *trans, int queue, int fifo, int sta_id, int tid, int frame_limit, u16 ssn); void iwlagn_txq_free_tfd(struct iwl_trans *trans, struct iwl_tx_queue *txq, - int index, enum dma_data_direction dma_dir); + enum dma_data_direction dma_dir); int iwl_tx_queue_reclaim(struct iwl_trans *trans, int txq_id, int index, struct sk_buff_head *skbs); int iwl_queue_space(const struct iwl_queue *q); diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c index 21a8a67..a875023 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c @@ -204,33 +204,39 @@ static void iwlagn_unmap_tfd(struct iwl_trans *trans, struct iwl_cmd_meta *meta, for (i = 1; i < num_tbs; i++) dma_unmap_single(trans->dev, iwl_tfd_tb_get_addr(tfd, i), iwl_tfd_tb_get_len(tfd, i), dma_dir); + + tfd->num_tbs = 0; } /** * iwlagn_txq_free_tfd - Free all chunks referenced by TFD [txq->q.read_ptr] * @trans - transport private data * @txq - tx queue - * @index - the index of the TFD to be freed - *@dma_dir - the direction of the DMA mapping + * @dma_dir - the direction of the DMA mapping * * Does NOT advance any TFD circular buffer read/write indexes * Does NOT free the TFD itself (which is within circular buffer) */ void iwlagn_txq_free_tfd(struct iwl_trans *trans, struct iwl_tx_queue *txq, - int index, enum dma_data_direction dma_dir) + enum dma_data_direction dma_dir) { struct iwl_tfd *tfd_tmp = txq->tfds; + /* rd_ptr is bounded by n_bd and idx is bounded by n_window */ + int rd_ptr = txq->q.read_ptr; + int idx = get_cmd_index(&txq->q, rd_ptr); + lockdep_assert_held(&txq->lock); - iwlagn_unmap_tfd(trans, &txq->entries[index].meta, - &tfd_tmp[index], dma_dir); + /* We have only q->n_window txq->entries, but we use q->n_bd tfds */ + iwlagn_unmap_tfd(trans, &txq->entries[idx].meta, + &tfd_tmp[rd_ptr], dma_dir); /* free SKB */ if (txq->entries) { struct sk_buff *skb; - skb = txq->entries[index].skb; + skb = txq->entries[idx].skb; /* Can be called from irqs-disabled context * If skb is not NULL, it means that the whole queue is being @@ -238,7 +244,7 @@ void iwlagn_txq_free_tfd(struct iwl_trans *trans, struct iwl_tx_queue *txq, */ if (skb) { iwl_op_mode_free_skb(trans->op_mode, skb); - txq->entries[index].skb = NULL; + txq->entries[idx].skb = NULL; } } } @@ -973,7 +979,7 @@ int iwl_tx_queue_reclaim(struct iwl_trans *trans, int txq_id, int index, iwlagn_txq_inval_byte_cnt_tbl(trans, txq); - iwlagn_txq_free_tfd(trans, txq, txq->q.read_ptr, DMA_TO_DEVICE); + iwlagn_txq_free_tfd(trans, txq, DMA_TO_DEVICE); freed++; } diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c index b2f27ec..3cdc014 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c @@ -435,9 +435,7 @@ static void iwl_tx_queue_unmap(struct iwl_trans *trans, int txq_id) spin_lock_bh(&txq->lock); while (q->write_ptr != q->read_ptr) { - /* The read_ptr needs to bound by q->n_window */ - iwlagn_txq_free_tfd(trans, txq, get_cmd_index(q, q->read_ptr), - dma_dir); + iwlagn_txq_free_tfd(trans, txq, dma_dir); q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd); } spin_unlock_bh(&txq->lock); -- 1.7.10 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 2/4 v2] iwlwifi: fix the Transmit Frame Descriptor rings 2012-05-10 16:05 ` [PATCH 2/4] iwlwifi: fix the Transmit Frame Descriptor rings Johannes Berg @ 2012-05-11 12:50 ` Johannes Berg 2012-05-11 16:50 ` Sedat Dilek 2012-05-16 15:16 ` [PATCH 2/4] " Johannes Berg 1 sibling, 1 reply; 19+ messages in thread From: Johannes Berg @ 2012-05-11 12:50 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Emmanuel Grumbach From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> The logic that allows to have a short TFD queue was completely wrong. We do maintain 256 Transmit Frame Descriptors, but they point to recycled buffers. We used to attach and de-attach different TFDs for the same buffer and it worked since they pointed to the same buffer. Also zero the number of BDs after unmapping a TFD. This seems not necessary since we don't reclaim the same TFD twice, but I like housekeeping. This patch solves this warning: [ 6427.079855] WARNING: at lib/dma-debug.c:866 check_unmap+0x727/0x7a0() [ 6427.079859] Hardware name: Latitude E6410 [ 6427.079865] iwlwifi 0000:02:00.0: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0x00000000296d393c] [size=8 bytes] [ 6427.079870] Modules linked in: ... [ 6427.079950] Pid: 6613, comm: ifconfig Tainted: G O 3.3.3 #5 [ 6427.079954] Call Trace: [ 6427.079963] [<c10337a2>] warn_slowpath_common+0x72/0xa0 [ 6427.079982] [<c1033873>] warn_slowpath_fmt+0x33/0x40 [ 6427.079988] [<c12dcb77>] check_unmap+0x727/0x7a0 [ 6427.079995] [<c12dcdaa>] debug_dma_unmap_page+0x5a/0x80 [ 6427.080024] [<fe2312ac>] iwlagn_unmap_tfd+0x12c/0x180 [iwlwifi] [ 6427.080048] [<fe231349>] iwlagn_txq_free_tfd+0x49/0xb0 [iwlwifi] [ 6427.080071] [<fe228e37>] iwl_tx_queue_unmap+0x67/0x90 [iwlwifi] [ 6427.080095] [<fe22d221>] iwl_trans_pcie_stop_device+0x341/0x7b0 [iwlwifi] [ 6427.080113] [<fe204b0e>] iwl_down+0x17e/0x260 [iwlwifi] [ 6427.080132] [<fe20efec>] iwlagn_mac_stop+0x6c/0xf0 [iwlwifi] [ 6427.080168] [<fd8480ce>] ieee80211_stop_device+0x5e/0x190 [mac80211] [ 6427.080198] [<fd833208>] ieee80211_do_stop+0x288/0x620 [mac80211] [ 6427.080243] [<fd8335b7>] ieee80211_stop+0x17/0x20 [mac80211] [ 6427.080250] [<c148dac1>] __dev_close_many+0x81/0xd0 [ 6427.080270] [<c148db3d>] __dev_close+0x2d/0x50 [ 6427.080276] [<c148d152>] __dev_change_flags+0x82/0x150 [ 6427.080282] [<c148e3e3>] dev_change_flags+0x23/0x60 [ 6427.080289] [<c14f6320>] devinet_ioctl+0x6a0/0x770 [ 6427.080296] [<c14f8705>] inet_ioctl+0x95/0xb0 [ 6427.080304] [<c147a0f0>] sock_ioctl+0x70/0x270 Cc: stable@vger.kernel.org Reported-by: Antonio Quartulli <ordex@autistici.org> Tested-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- v2: rebased onto wireless.git rather than wireless-testing.git, sorry! diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h index 1c2fe87..3b844b7 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h @@ -342,7 +342,7 @@ void iwl_trans_pcie_tx_agg_setup(struct iwl_trans *trans, enum iwl_rxon_context_id ctx, int sta_id, int tid, int frame_limit, u16 ssn); void iwlagn_txq_free_tfd(struct iwl_trans *trans, struct iwl_tx_queue *txq, - int index, enum dma_data_direction dma_dir); + enum dma_data_direction dma_dir); int iwl_tx_queue_reclaim(struct iwl_trans *trans, int txq_id, int index, struct sk_buff_head *skbs); int iwl_queue_space(const struct iwl_queue *q); diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c index e92972f..d7964b1 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c @@ -237,32 +237,38 @@ static void iwlagn_unmap_tfd(struct iwl_trans *trans, struct iwl_cmd_meta *meta, for (i = 1; i < num_tbs; i++) dma_unmap_single(trans->dev, iwl_tfd_tb_get_addr(tfd, i), iwl_tfd_tb_get_len(tfd, i), dma_dir); + + tfd->num_tbs = 0; } /** * iwlagn_txq_free_tfd - Free all chunks referenced by TFD [txq->q.read_ptr] * @trans - transport private data * @txq - tx queue - * @index - the index of the TFD to be freed - *@dma_dir - the direction of the DMA mapping + * @dma_dir - the direction of the DMA mapping * * Does NOT advance any TFD circular buffer read/write indexes * Does NOT free the TFD itself (which is within circular buffer) */ void iwlagn_txq_free_tfd(struct iwl_trans *trans, struct iwl_tx_queue *txq, - int index, enum dma_data_direction dma_dir) + enum dma_data_direction dma_dir) { struct iwl_tfd *tfd_tmp = txq->tfds; + /* rd_ptr is bounded by n_bd and idx is bounded by n_window */ + int rd_ptr = txq->q.read_ptr; + int idx = get_cmd_index(&txq->q, rd_ptr); + lockdep_assert_held(&txq->lock); - iwlagn_unmap_tfd(trans, &txq->meta[index], &tfd_tmp[index], dma_dir); + /* We have only q->n_window txq->entries, but we use q->n_bd tfds */ + iwlagn_unmap_tfd(trans, &txq->meta[idx], &tfd_tmp[rd_ptr], dma_dir); /* free SKB */ if (txq->skbs) { struct sk_buff *skb; - skb = txq->skbs[index]; + skb = txq->skbs[idx]; /* Can be called from irqs-disabled context * If skb is not NULL, it means that the whole queue is being @@ -270,7 +276,7 @@ void iwlagn_txq_free_tfd(struct iwl_trans *trans, struct iwl_tx_queue *txq, */ if (skb) { iwl_op_mode_free_skb(trans->op_mode, skb); - txq->skbs[index] = NULL; + txq->skbs[idx] = NULL; } } } @@ -1100,7 +1106,7 @@ int iwl_tx_queue_reclaim(struct iwl_trans *trans, int txq_id, int index, iwlagn_txq_inval_byte_cnt_tbl(trans, txq); - iwlagn_txq_free_tfd(trans, txq, txq->q.read_ptr, DMA_TO_DEVICE); + iwlagn_txq_free_tfd(trans, txq, DMA_TO_DEVICE); freed++; } return freed; diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c index 4d7b30d..74b49ca 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c @@ -430,9 +430,7 @@ static void iwl_tx_queue_unmap(struct iwl_trans *trans, int txq_id) spin_lock_bh(&txq->lock); while (q->write_ptr != q->read_ptr) { - /* The read_ptr needs to bound by q->n_window */ - iwlagn_txq_free_tfd(trans, txq, get_cmd_index(q, q->read_ptr), - dma_dir); + iwlagn_txq_free_tfd(trans, txq, dma_dir); q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd); } spin_unlock_bh(&txq->lock); ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 2/4 v2] iwlwifi: fix the Transmit Frame Descriptor rings 2012-05-11 12:50 ` [PATCH 2/4 v2] " Johannes Berg @ 2012-05-11 16:50 ` Sedat Dilek 0 siblings, 0 replies; 19+ messages in thread From: Sedat Dilek @ 2012-05-11 16:50 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Emmanuel Grumbach On Fri, May 11, 2012 at 2:50 PM, Johannes Berg <johannes@sipsolutions.net> wrote: > From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > > The logic that allows to have a short TFD queue was completely wrong. > We do maintain 256 Transmit Frame Descriptors, but they point to > recycled buffers. We used to attach and de-attach different TFDs for > the same buffer and it worked since they pointed to the same buffer. > > Also zero the number of BDs after unmapping a TFD. This seems not > necessary since we don't reclaim the same TFD twice, but I like > housekeeping. > > This patch solves this warning: > > [ 6427.079855] WARNING: at lib/dma-debug.c:866 check_unmap+0x727/0x7a0() > [ 6427.079859] Hardware name: Latitude E6410 > [ 6427.079865] iwlwifi 0000:02:00.0: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0x00000000296d393c] [size=8 bytes] > [ 6427.079870] Modules linked in: ... > [ 6427.079950] Pid: 6613, comm: ifconfig Tainted: G O 3.3.3 #5 > [ 6427.079954] Call Trace: > [ 6427.079963] [<c10337a2>] warn_slowpath_common+0x72/0xa0 > [ 6427.079982] [<c1033873>] warn_slowpath_fmt+0x33/0x40 > [ 6427.079988] [<c12dcb77>] check_unmap+0x727/0x7a0 > [ 6427.079995] [<c12dcdaa>] debug_dma_unmap_page+0x5a/0x80 > [ 6427.080024] [<fe2312ac>] iwlagn_unmap_tfd+0x12c/0x180 [iwlwifi] > [ 6427.080048] [<fe231349>] iwlagn_txq_free_tfd+0x49/0xb0 [iwlwifi] > [ 6427.080071] [<fe228e37>] iwl_tx_queue_unmap+0x67/0x90 [iwlwifi] > [ 6427.080095] [<fe22d221>] iwl_trans_pcie_stop_device+0x341/0x7b0 [iwlwifi] > [ 6427.080113] [<fe204b0e>] iwl_down+0x17e/0x260 [iwlwifi] > [ 6427.080132] [<fe20efec>] iwlagn_mac_stop+0x6c/0xf0 [iwlwifi] > [ 6427.080168] [<fd8480ce>] ieee80211_stop_device+0x5e/0x190 [mac80211] > [ 6427.080198] [<fd833208>] ieee80211_do_stop+0x288/0x620 [mac80211] > [ 6427.080243] [<fd8335b7>] ieee80211_stop+0x17/0x20 [mac80211] > [ 6427.080250] [<c148dac1>] __dev_close_many+0x81/0xd0 > [ 6427.080270] [<c148db3d>] __dev_close+0x2d/0x50 > [ 6427.080276] [<c148d152>] __dev_change_flags+0x82/0x150 > [ 6427.080282] [<c148e3e3>] dev_change_flags+0x23/0x60 > [ 6427.080289] [<c14f6320>] devinet_ioctl+0x6a0/0x770 > [ 6427.080296] [<c14f8705>] inet_ioctl+0x95/0xb0 > [ 6427.080304] [<c147a0f0>] sock_ioctl+0x70/0x270 > > Cc: stable@vger.kernel.org > Reported-by: Antonio Quartulli <ordex@autistici.org> > Tested-by: Antonio Quartulli <ordex@autistici.org> > Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com> > Signed-off-by: Johannes Berg <johannes.berg@intel.com> > --- > v2: rebased onto wireless.git rather than wireless-testing.git, sorry! > Tested-by: Sedat Dilek <sedat.dilek@gmail.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/4] iwlwifi: fix the Transmit Frame Descriptor rings 2012-05-10 16:05 ` [PATCH 2/4] iwlwifi: fix the Transmit Frame Descriptor rings Johannes Berg 2012-05-11 12:50 ` [PATCH 2/4 v2] " Johannes Berg @ 2012-05-16 15:16 ` Johannes Berg 1 sibling, 0 replies; 19+ messages in thread From: Johannes Berg @ 2012-05-16 15:16 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Emmanuel Grumbach, stable John, > The logic that allows to have a short TFD queue was completely wrong. > We do maintain 256 Transmit Frame Descriptors, but they point to > recycled buffers. We used to attach and de-attach different TFDs for > the same buffer and it worked since they pointed to the same buffer. > > Also zero the number of BDs after unmapping a TFD. This seems not > necessary since we don't reclaim the same TFD twice, but I like > housekeeping. > Cc: stable@vger.kernel.org This is Cc stable, can we also get it to 3.4 still? If not I guess Greg will pick it up johannes ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 3/4] iwlwifi: fix debug print in iwl_sta_calc_ht_flags 2012-05-10 16:05 [PATCH 0/4] iwlwifi fixes Johannes Berg 2012-05-10 16:05 ` [PATCH 1/4] iwlwifi: fix prints in iwl_rx_handle Johannes Berg 2012-05-10 16:05 ` [PATCH 2/4] iwlwifi: fix the Transmit Frame Descriptor rings Johannes Berg @ 2012-05-10 16:05 ` Johannes Berg 2012-05-11 16:52 ` Sedat Dilek 2012-05-10 16:05 ` [PATCH 4/4] iwlwifi: do not send lq cmd when station add fails Johannes Berg 2012-05-16 17:05 ` [PATCH 0/4] iwlwifi fixes John W. Linville 4 siblings, 1 reply; 19+ messages in thread From: Johannes Berg @ 2012-05-10 16:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Meenakshi Venkataraman From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> We missed passing an argument to the debug print. Fix it. Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c index 67e6f1d..76c1f72 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c @@ -236,6 +236,7 @@ static void iwl_sta_calc_ht_flags(struct iwl_priv *priv, mimo_ps_mode = (sta_ht_inf->cap & IEEE80211_HT_CAP_SM_PS) >> 2; IWL_DEBUG_INFO(priv, "STA %pM SM PS mode: %s\n", + sta->addr, (mimo_ps_mode == WLAN_HT_CAP_SM_PS_STATIC) ? "static" : (mimo_ps_mode == WLAN_HT_CAP_SM_PS_DYNAMIC) ? -- 1.7.10 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 3/4] iwlwifi: fix debug print in iwl_sta_calc_ht_flags 2012-05-10 16:05 ` [PATCH 3/4] iwlwifi: fix debug print in iwl_sta_calc_ht_flags Johannes Berg @ 2012-05-11 16:52 ` Sedat Dilek 0 siblings, 0 replies; 19+ messages in thread From: Sedat Dilek @ 2012-05-11 16:52 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Meenakshi Venkataraman On Thu, May 10, 2012 at 6:05 PM, Johannes Berg <johannes@sipsolutions.net> wrote: > From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> > > We missed passing an argument to the > debug print. Fix it. > > Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> > Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > Signed-off-by: Johannes Berg <johannes.berg@intel.com> > Tested-by: Sedat Dilek <sedat.dilek@gmail.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 4/4] iwlwifi: do not send lq cmd when station add fails 2012-05-10 16:05 [PATCH 0/4] iwlwifi fixes Johannes Berg ` (2 preceding siblings ...) 2012-05-10 16:05 ` [PATCH 3/4] iwlwifi: fix debug print in iwl_sta_calc_ht_flags Johannes Berg @ 2012-05-10 16:05 ` Johannes Berg 2012-05-11 16:53 ` Sedat Dilek 2012-05-16 17:05 ` [PATCH 0/4] iwlwifi fixes John W. Linville 4 siblings, 1 reply; 19+ messages in thread From: Johannes Berg @ 2012-05-10 16:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Meenakshi Venkataraman From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> When adding a station fails in iwl_restore_stations, the driver treats it like a successful station add and sends a link quality command, when it it shouldn't. This patch fixes one of the potential sources for kernel warnings like this one: WARNING: at drivers/net/wireless/iwlwifi/iwl-agn-sta.c:905 iwl_send_lq_cmd+0x130/0x217 [iwlwifi]() Hardware name: 3323A2G Modules linked in: ... Pid: 17359, comm: kworker/u:2 Tainted: G O 3.3.0-wl+ #1 Call Trace: [<ffffffff81039620>] warn_slowpath_common+0x7e/0x96 [<ffffffff8103964d>] warn_slowpath_null+0x15/0x17 [<ffffffffa02a9f0b>] iwl_send_lq_cmd+0x130/0x217 [iwlwifi] [<ffffffffa02aa1fb>] iwl_restore_stations+0x209/0x289 [iwlwifi] [<ffffffffa02b07c2>] iwlagn_commit_rxon+0x602/0x7bd [iwlwifi] [<ffffffffa02b111f>] iwlagn_bss_info_changed+0x247/0x31a [iwlwifi] [<ffffffffa0861437>] ieee80211_bss_info_change_notify+0x1a5/0x1ba [mac80211] [<ffffffffa088afad>] ieee80211_destroy_auth_data+0x4b/0x70 [mac80211] [<ffffffffa088df26>] ieee80211_sta_work+0xb5/0x954 [mac80211] Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c index 76c1f72..ca9ac20 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c @@ -773,7 +773,7 @@ void iwl_restore_stations(struct iwl_priv *priv, struct iwl_rxon_context *ctx) ~IWL_STA_DRIVER_ACTIVE; priv->stations[i].used &= ~IWL_STA_UCODE_INPROGRESS; - spin_unlock_bh(&priv->sta_lock); + continue; } /* * Rate scaling has already been initialized, send -- 1.7.10 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 4/4] iwlwifi: do not send lq cmd when station add fails 2012-05-10 16:05 ` [PATCH 4/4] iwlwifi: do not send lq cmd when station add fails Johannes Berg @ 2012-05-11 16:53 ` Sedat Dilek 0 siblings, 0 replies; 19+ messages in thread From: Sedat Dilek @ 2012-05-11 16:53 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Meenakshi Venkataraman On Thu, May 10, 2012 at 6:05 PM, Johannes Berg <johannes@sipsolutions.net> wrote: > From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> > > When adding a station fails in > iwl_restore_stations, the driver treats it > like a successful station add and sends a > link quality command, when it it shouldn't. > > This patch fixes one of the potential > sources for kernel warnings like this one: > > WARNING: at drivers/net/wireless/iwlwifi/iwl-agn-sta.c:905 iwl_send_lq_cmd+0x130/0x217 [iwlwifi]() > Hardware name: 3323A2G > Modules linked in: ... > Pid: 17359, comm: kworker/u:2 Tainted: G O 3.3.0-wl+ #1 > Call Trace: > [<ffffffff81039620>] warn_slowpath_common+0x7e/0x96 > [<ffffffff8103964d>] warn_slowpath_null+0x15/0x17 > [<ffffffffa02a9f0b>] iwl_send_lq_cmd+0x130/0x217 [iwlwifi] > [<ffffffffa02aa1fb>] iwl_restore_stations+0x209/0x289 [iwlwifi] > [<ffffffffa02b07c2>] iwlagn_commit_rxon+0x602/0x7bd [iwlwifi] > [<ffffffffa02b111f>] iwlagn_bss_info_changed+0x247/0x31a [iwlwifi] > [<ffffffffa0861437>] ieee80211_bss_info_change_notify+0x1a5/0x1ba [mac80211] > [<ffffffffa088afad>] ieee80211_destroy_auth_data+0x4b/0x70 [mac80211] > [<ffffffffa088df26>] ieee80211_sta_work+0xb5/0x954 [mac80211] > > Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> > Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com> > Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > Signed-off-by: Johannes Berg <johannes.berg@intel.com> > Tested-by: Sedat Dilek <sedat.dilek@gmail.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 0/4] iwlwifi fixes 2012-05-10 16:05 [PATCH 0/4] iwlwifi fixes Johannes Berg ` (3 preceding siblings ...) 2012-05-10 16:05 ` [PATCH 4/4] iwlwifi: do not send lq cmd when station add fails Johannes Berg @ 2012-05-16 17:05 ` John W. Linville 4 siblings, 0 replies; 19+ messages in thread From: John W. Linville @ 2012-05-16 17:05 UTC (permalink / raw) To: Johannes Berg; +Cc: linux-wireless On Thu, May 10, 2012 at 06:05:48PM +0200, Johannes Berg wrote: > John, > > Here are a few fixes for iwlwifi. It's probably too late to get > them into 3.4 but I split them out into their own series anyway. > > This is my first ever submission as iwlwifi maintainer, so I > hope it works ok and doesn't get too many CCs :-) > > johannes I didn't think they were suitable for post-rc7. I tried to apply them to wireless-next, but they required more rework than I thought I should be trusted to give them. :-) John -- John W. Linville Someday the world will need a hero, and you linville@tuxdriver.com might be all we have. Be ready. ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2012-05-16 17:17 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-05-10 16:05 [PATCH 0/4] iwlwifi fixes Johannes Berg 2012-05-10 16:05 ` [PATCH 1/4] iwlwifi: fix prints in iwl_rx_handle Johannes Berg 2012-05-10 16:38 ` [PATCH 1/4] iwlwifi: Add __printf argument checking to __iwl_dbg Joe Perches 2012-05-10 16:50 ` Johannes Berg 2012-05-10 16:56 ` Johannes Berg 2012-05-10 17:34 ` Joe Perches 2012-05-10 17:40 ` Johannes Berg 2012-05-10 18:01 ` Joe Perches 2012-05-11 10:59 ` [PATCH 1/4 v2] iwlwifi: fix prints in iwl_rx_handle Johannes Berg 2012-05-11 16:49 ` Sedat Dilek 2012-05-10 16:05 ` [PATCH 2/4] iwlwifi: fix the Transmit Frame Descriptor rings Johannes Berg 2012-05-11 12:50 ` [PATCH 2/4 v2] " Johannes Berg 2012-05-11 16:50 ` Sedat Dilek 2012-05-16 15:16 ` [PATCH 2/4] " Johannes Berg 2012-05-10 16:05 ` [PATCH 3/4] iwlwifi: fix debug print in iwl_sta_calc_ht_flags Johannes Berg 2012-05-11 16:52 ` Sedat Dilek 2012-05-10 16:05 ` [PATCH 4/4] iwlwifi: do not send lq cmd when station add fails Johannes Berg 2012-05-11 16:53 ` Sedat Dilek 2012-05-16 17:05 ` [PATCH 0/4] iwlwifi fixes John W. Linville
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.