Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'sfc-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc

Ben Hutchings says:

====================
Fix regressions introduced by the last set of fixes (sorry):

1. Potential deadlock when disabling TX queues.
2. RX was broken on architectures other than x86 and powerpc.

I still expect to send one more bug fix for 3.9, but as it sometimes
takes days to reproduce the bug it's going to take a couple of weeks of
testing to be confident that it's really fixed.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+3 -3
+2 -2
drivers/net/ethernet/sfc/efx.h
··· 171 171 * TX scheduler is stopped when we're done and before 172 172 * netif_device_present() becomes false. 173 173 */ 174 - netif_tx_lock(dev); 174 + netif_tx_lock_bh(dev); 175 175 netif_device_detach(dev); 176 - netif_tx_unlock(dev); 176 + netif_tx_unlock_bh(dev); 177 177 } 178 178 179 179 #endif /* EFX_EFX_H */
+1 -1
drivers/net/ethernet/sfc/rx.c
··· 215 215 rx_buf = efx_rx_buffer(rx_queue, index); 216 216 rx_buf->dma_addr = dma_addr + EFX_PAGE_IP_ALIGN; 217 217 rx_buf->u.page = page; 218 - rx_buf->page_offset = page_offset; 218 + rx_buf->page_offset = page_offset + EFX_PAGE_IP_ALIGN; 219 219 rx_buf->len = efx->rx_buffer_len - EFX_PAGE_IP_ALIGN; 220 220 rx_buf->flags = EFX_RX_BUF_PAGE; 221 221 ++rx_queue->added_count;