[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090928091259.27485716@hskinnemoen-d830>
Date: Mon, 28 Sep 2009 09:12:59 +0200
From: Haavard Skinnemoen <haavard.skinnemoen@...el.com>
To: Ben Nizette <bn@...sdigital.com>
Cc: hskinnemoen@...el.com, spi-devel-general@...ts.sourceforge.net,
Linux Kernel list <linux-kernel@...r.kernel.org>,
kernel <kernel@...32linux.org>, dbrownell@...rs.sourceforge.net
Subject: Re: [PATCH] atmel_spi: fix dma addr calculation for len >
BUFFER_SIZE
Ben Nizette <bn@...sdigital.com> wrote:
> If len > BUFFER_LEN and !xfer->rx_buf we end up calculating the tx
> buffer address as
>
> *tx_dma = xfer->tx_dma + xfer->len - BUFFER_SIZE;
>
> which is constant; i.e. we just send the last BUFFER_SIZE data over
> again until we've reached the right number of bytes.
>
> This patch gets around this by using the /requested/ length when
> calculating addresses.
>
> Note there's no way len != *plen when we calculate the rx buffer address
> but conceptually we should be using *plen and I don't want someone to
> come through later, see the calculations for rx and tx are different and
> "clean up" back to what we had.
>
> Signed-off-by: Ben Nizette <bn@...sdigital.com>
Wow, that is subtle. I had to stare at it for a long while before I
understood what's going on, but I believe you're right.
Acked-by: Haavard Skinnemoen <haavard.skinnemoen@...el.com>
While you're at it, could you send another patch renaming 'len' to
'next_len'? I think that would make it a bit more obvious why your
patch is correct and prevent similar mistakes in the future.
Haavard
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists