On Tue, 2008-11-18 at 09:57 +0800, Zhu Yi wrote: > We do suspect the 256 alignment requirement will be an issue. Thus we do > let people can reproduce this problem check with it. See comment #21, > #22, #23 in bug > http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1703. The > result is people still see this problem even the DMA address is 256 > bytes aligned. Ok. Reading those comments, I wouldn't be too sure that he still ran into it without the alignment warning, since he said he missed some messages. Remember that the driver posts a whole bunch of RX buffers at init time (I saw this, it filled way more than my screen when printing just a line for each buffer) and then doesn't do much for quite a while until you turn on wireless, and the driver might init earlier than other things so he may have missed those messages. Anyway, hard to tell, hence me asking if this patch fixes it. Thanks for the review, you're right about the two missing +256. Anyone who wants to try it before one of us posts a fixed version should fix their version as below, I need to get some sleep. > > @@ -302,7 +305,7 @@ void iwl_rx_queue_free(struct iwl_priv * > > for (i = 0; i < RX_QUEUE_SIZE + RX_FREE_BUFFERS; i++) { > > if (rxq->pool[i].skb != NULL) { > > pci_unmap_single(priv->pci_dev, > > - rxq->pool[i].dma_addr, > > + rxq->pool[i].real_dma_addr, > > priv->hw_params.rx_buf_size, > > priv->hw_params.rx_buf_size + 256. > > > PCI_DMA_FROMDEVICE); > > dev_kfree_skb(rxq->pool[i].skb); > > @@ -370,7 +373,7 @@ void iwl_rx_queue_reset(struct iwl_priv > > * to an SKB, so we need to unmap and free potential storage */ > > if (rxq->pool[i].skb != NULL) { > > pci_unmap_single(priv->pci_dev, > > - rxq->pool[i].dma_addr, > > + rxq->pool[i].real_dma_addr, > > priv->hw_params.rx_buf_size, > > PCI_DMA_FROMDEVICE); > > priv->alloc_rxb_skb--; > > ditto. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part