[U-Boot] [PATCH v2] drivers: net: cpsw: always flush cache of size PKTSIZE_ALIGN
Lokesh Vutla
lokeshvutla at ti.com
Thu Aug 11 09:28:32 CEST 2016
On Thursday 11 August 2016 03:11 AM, Joe Hershberger wrote:
> Hi Lokesh,
>
> On Wed, Aug 10, 2016 at 7:02 AM, Lokesh Vutla <lokeshvutla at ti.com> wrote:
>>
>>
>> On Wednesday 10 August 2016 08:43 AM, Joe Hershberger wrote:
>>> Hi Lokesh
>>>
>>> On Tue, Aug 9, 2016 at 12:47 AM, Lokesh Vutla <lokeshvutla at ti.com> wrote:
>>>> cpsw tries to flush dcache which is not in the range of PKTSIZE.
>>>> Because of this the following warning comes while flushing:
>>>>
>>>> CACHE: Misaligned operation at range [dffecec0, dffed016]
>>>>
>>>> Fix it by flushing cache of size PKTSIZE_ALIGN as similar to what is
>>>> being done in _cpsw_recv.
>>>>
>>>> Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com>
>>>> ---
>>>> Changes since v1:
>>>> - Use PKTALIGN instead of cache line size
>>>> - Need not align start of packet buffer from the network subsystem.
>>>>
>>>> drivers/net/cpsw.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
>>>> index 2ce4ec6..8ce5716 100644
>>>> --- a/drivers/net/cpsw.c
>>>> +++ b/drivers/net/cpsw.c
>>>> @@ -907,7 +907,7 @@ static int _cpsw_send(struct cpsw_priv *priv, void *packet, int length)
>>>> int timeout = CPDMA_TIMEOUT;
>>>>
>>>> flush_dcache_range((unsigned long)packet,
>>>> - (unsigned long)packet + length);
>>>> + (unsigned long)packet + PKTSIZE_ALIGN);
>>>
>>> Technically you are flushing more than needed since you just need to
>>> be aligned to the cacheline beyond the size being sent, but you are
>>> flushing the maximum packet size every time. That said, it's still
>>> going to work and the code is readable. I'm fine with this, but wanted
>>> to make sure you knew this is more flushing than needed.
>>
>> Initially that was my idea as well and aligned length to cache line
>> size. As you suggested to use PKTSIZE_ALIGN and also _cpsw_recv uses the
>> same. So, I used PKTSIZE_ALIGN.
>
> I actually recommended PKTALIGN, not PKTSIZE_ALIGN. For recv, the size
Oops my bad. I totally misunderstood your previous comment. Ill resend
this patch.
Thanks and regards,
Lokesh
> for invalidate is unknown until it's received (unless you can check a
> descriptor after it's received but before you read it), so it's more
> appropriate to use PKTSIZE_ALIGN. For send, you certainly know the
> size before flushing.
>
> Cheers,
> -Joe
>
More information about the U-Boot
mailing list