[PATCH RFT 17/24] net: orion-gbe: convert to streaming DMA ops
Sebastian Hesselbarth
sebastian.hesselbarth at gmail.com
Thu Feb 12 14:40:35 PST 2015
On 12.02.2015 22:39, Lucas Stach wrote:
Lucas,
I really enjoy reading commit logs, but I cannot find any on this
one. ;) Mind adding a few words for the final patch set?
I'll give it a go on Dove and Kirkwood in the next few days, but be
aware that there is still no cache support on both anyway.
Sebastian
> Signed-off-by: Lucas Stach <dev at lynxeye.de>
> ---
> drivers/net/orion-gbe.c | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/orion-gbe.c b/drivers/net/orion-gbe.c
> index ad1fc66..4235122 100644
> --- a/drivers/net/orion-gbe.c
> +++ b/drivers/net/orion-gbe.c
> @@ -33,7 +33,6 @@
> #include <net.h>
> #include <of_net.h>
> #include <linux/sizes.h>
> -#include <asm/mmu.h>
> #include <linux/clk.h>
> #include <linux/err.h>
> #include <linux/mbus.h>
> @@ -243,7 +242,7 @@ static int port_send(struct eth_device *edev, void *data, int len)
> int ret;
>
> /* flush transmit data */
> - dma_flush_range((unsigned long)data, (unsigned long)data+len);
> + dma_sync_single_for_device((unsigned long)data, len, DMA_TO_DEVICE);
>
> txdesc->cmd_sts = TXDESC_OWNED_BY_DMA;
> txdesc->cmd_sts |= TXDESC_FIRST | TXDESC_LAST;
> @@ -258,6 +257,7 @@ static int port_send(struct eth_device *edev, void *data, int len)
> /* wait for packet transmit completion */
> ret = wait_on_timeout(TRANSFER_TIMEOUT,
> (readl(&txdesc->cmd_sts) & TXDESC_OWNED_BY_DMA) == 0);
> + dma_sync_single_for_cpu((unsigned long)data, len, DMA_TO_DEVICE);
> if (ret) {
> dev_err(&edev->dev, "transmit timeout\n");
> return ret;
> @@ -301,12 +301,15 @@ static int port_recv(struct eth_device *edev)
> }
>
> /* invalidate current receive buffer */
> - dma_inv_range((unsigned long)rxdesc->buf_ptr,
> - (unsigned long)rxdesc->buf_ptr +
> - ALIGN(PKTSIZE, 8));
> + dma_sync_single_for_cpu((unsigned long)rxdesc->buf_ptr,
> + ALIGN(PKTSIZE, 8), DMA_FROM_DEVICE);
>
> /* received packet is padded with two null bytes */
> net_receive(edev, rxdesc->buf_ptr + 0x2, rxdesc->byte_cnt - 0x2);
> +
> + dma_sync_single_for_device((unsigned long)rxdesc->buf_ptr,
> + ALIGN(PKTSIZE, 8), DMA_FROM_DEVICE);
> +
> ret = 0;
>
> recv_err:
>
More information about the barebox
mailing list