lkml.org 
[lkml]   [2019]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v2] net: ethernet: ti: davinci_cpdma: fix warning "device driver frees DMA memory with different size"
From
Date


On 04/12/2019 22:37, David Miller wrote:
> From: Grygorii Strashko <grygorii.strashko@ti.com>
> Date: Wed, 4 Dec 2019 18:50:29 +0200
>
>> @@ -1018,7 +1018,7 @@ static int cpdma_chan_submit_si(struct submit_info *si)
>> struct cpdma_chan *chan = si->chan;
>> struct cpdma_ctlr *ctlr = chan->ctlr;
>> int len = si->len;
>> - int swlen = len;
>> + int swlen;
>> struct cpdma_desc __iomem *desc;
>> dma_addr_t buffer;
>> u32 mode;
>> @@ -1040,6 +1040,7 @@ static int cpdma_chan_submit_si(struct submit_info *si)
>> chan->stats.runt_transmit_buff++;
>> }
>>
>> + swlen = len;
>> mode = CPDMA_DESC_OWNER | CPDMA_DESC_SOP | CPDMA_DESC_EOP;
>> cpdma_desc_to_port(chan, mode, si->directed);
>>
>> --
>> 2.17.1
>>
>
> Now there is no reason to keep a separate swlen variable.
>
> The integral value is always consumed as the length before the descriptor bits
> are added to it.
>
> Therefore you can just use 'len' everywhere in this function now.
>

Sry, but seems i can't, at least i can't just drop swlen.

Below in this function:
writel_relaxed(0, &desc->hw_next);
writel_relaxed(buffer, &desc->hw_buffer);
writel_relaxed(len, &desc->hw_len);
writel_relaxed(mode | len, &desc->hw_mode);
^^ here the "len" should be use

writel_relaxed((uintptr_t)si->token, &desc->sw_token);
writel_relaxed(buffer, &desc->sw_buffer);
writel_relaxed(swlen, &desc->sw_len);
^^ and here "len"|CPDMA_DMA_EXT_MAP if (si->data_dma) [1]

desc_read(desc, sw_len);

so additional if statement has to be added at [1] if "swlen" is dropped

--
Best regards,
grygorii

\
 
 \ /
  Last update: 2019-12-05 11:49    [W:1.155 / U:0.728 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site