diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-04-13 20:08:30 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-04-13 20:08:30 +0000 |
commit | 87f854059aa3c703a87e08649801b15c93b845e7 (patch) | |
tree | 0ca977f242f1617f1a337e4de631975464a71660 /target/linux/generic/patches-3.18/077-07-bgmac-simplify-rx-DMA-error-handling.patch | |
parent | 232c61742e7391edeb7c429ab9cc14652c2894ac (diff) | |
download | mtk-20170518-87f854059aa3c703a87e08649801b15c93b845e7.zip mtk-20170518-87f854059aa3c703a87e08649801b15c93b845e7.tar.gz mtk-20170518-87f854059aa3c703a87e08649801b15c93b845e7.tar.bz2 |
kernel: fix more bgmac dma init/cleanup issues
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 45422
Diffstat (limited to 'target/linux/generic/patches-3.18/077-07-bgmac-simplify-rx-DMA-error-handling.patch')
-rw-r--r-- | target/linux/generic/patches-3.18/077-07-bgmac-simplify-rx-DMA-error-handling.patch | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/target/linux/generic/patches-3.18/077-07-bgmac-simplify-rx-DMA-error-handling.patch b/target/linux/generic/patches-3.18/077-07-bgmac-simplify-rx-DMA-error-handling.patch index e1e8c8f..d6feed0 100644 --- a/target/linux/generic/patches-3.18/077-07-bgmac-simplify-rx-DMA-error-handling.patch +++ b/target/linux/generic/patches-3.18/077-07-bgmac-simplify-rx-DMA-error-handling.patch @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> - slot->dma_addr, - BGMAC_RX_BUF_SIZE, - DMA_FROM_DEVICE); -+ kfree(buf); ++ put_page(virt_to_head_page(buf)); break; } @@ -99,3 +99,23 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> } return handled; +@@ -528,14 +512,14 @@ static void bgmac_dma_rx_ring_free(struc + + for (i = 0; i < ring->num_slots; i++) { + slot = &ring->slots[i]; +- if (!slot->buf) ++ if (!slot->dma_addr) + continue; + +- if (slot->dma_addr) +- dma_unmap_single(dma_dev, slot->dma_addr, +- BGMAC_RX_BUF_SIZE, +- DMA_FROM_DEVICE); ++ dma_unmap_single(dma_dev, slot->dma_addr, ++ BGMAC_RX_BUF_SIZE, ++ DMA_FROM_DEVICE); + put_page(virt_to_head_page(slot->buf)); ++ slot->dma_addr = 0; + } + } + |