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 | 2fb7989420a673711f44c4dbc18bca1d85bf77e3 (patch) | |
tree | 199ae4847d43199e272f596f7d35cf30e007ae41 /target/linux/generic/patches-3.18/077-07-bgmac-simplify-rx-DMA-error-handling.patch | |
parent | c08644341187fcc4c599de0caf2686b7b022ea85 (diff) | |
download | master-187ad058-2fb7989420a673711f44c4dbc18bca1d85bf77e3.tar.gz master-187ad058-2fb7989420a673711f44c4dbc18bca1d85bf77e3.tar.bz2 master-187ad058-2fb7989420a673711f44c4dbc18bca1d85bf77e3.zip |
kernel: fix more bgmac dma init/cleanup issues
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45422 3c298f89-4303-0410-b956-a3cf2f4a3e73
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 e1e8c8f656..d6feed05b2 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; + } + } + |