* [net PATCH] octeon_ep: fix tx dma unmap len values in SG
@ 2023-09-11 9:23 Shinas Rasheed
2023-09-11 18:01 ` Simon Horman
0 siblings, 1 reply; 9+ messages in thread
From: Shinas Rasheed @ 2023-09-11 9:23 UTC (permalink / raw)
To: netdev, linux-kernel, hgani
Cc: vimleshk, mschmidt, egallen, Shinas Rasheed, Veerasenareddy Burru,
Sathesh Edara, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Satananda Burla, Abhijit Ayarekar
Lengths of SG pointers are in big-endian
Fixes: 37d79d059606 ("octeon_ep: add Tx/Rx processing and interrupt support")
Signed-off-by: Shinas Rasheed <srasheed@marvell.com>
---
drivers/net/ethernet/marvell/octeon_ep/octep_tx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c b/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c
index 5a520d37bea0..7e99486c274b 100644
--- a/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c
@@ -69,12 +69,12 @@ int octep_iq_process_completions(struct octep_iq *iq, u16 budget)
compl_sg++;
dma_unmap_single(iq->dev, tx_buffer->sglist[0].dma_ptr[0],
- tx_buffer->sglist[0].len[0], DMA_TO_DEVICE);
+ tx_buffer->sglist[0].len[3], DMA_TO_DEVICE);
i = 1; /* entry 0 is main skb, unmapped above */
while (frags--) {
dma_unmap_page(iq->dev, tx_buffer->sglist[i >> 2].dma_ptr[i & 3],
- tx_buffer->sglist[i >> 2].len[i & 3], DMA_TO_DEVICE);
+ tx_buffer->sglist[i >> 2].len[3 - (i & 3)], DMA_TO_DEVICE);
i++;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [net PATCH] octeon_ep: fix tx dma unmap len values in SG 2023-09-11 9:23 [net PATCH] octeon_ep: fix tx dma unmap len values in SG Shinas Rasheed @ 2023-09-11 18:01 ` Simon Horman 2023-09-12 7:04 ` Shinas Rasheed [not found] ` <PH0PR18MB473404EA35ADAC222C9EB68FC7F1A@PH0PR18MB4734.namprd18.prod.outlook.com> 0 siblings, 2 replies; 9+ messages in thread From: Simon Horman @ 2023-09-11 18:01 UTC (permalink / raw) To: Shinas Rasheed Cc: netdev, linux-kernel, hgani, vimleshk, mschmidt, egallen, Veerasenareddy Burru, Sathesh Edara, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Satananda Burla, Abhijit Ayarekar On Mon, Sep 11, 2023 at 02:23:06AM -0700, Shinas Rasheed wrote: > Lengths of SG pointers are in big-endian > > Fixes: 37d79d059606 ("octeon_ep: add Tx/Rx processing and interrupt support") > Signed-off-by: Shinas Rasheed <srasheed@marvell.com> > --- > drivers/net/ethernet/marvell/octeon_ep/octep_tx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c b/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c > index 5a520d37bea0..7e99486c274b 100644 > --- a/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c > +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c > @@ -69,12 +69,12 @@ int octep_iq_process_completions(struct octep_iq *iq, u16 budget) > compl_sg++; > > dma_unmap_single(iq->dev, tx_buffer->sglist[0].dma_ptr[0], > - tx_buffer->sglist[0].len[0], DMA_TO_DEVICE); > + tx_buffer->sglist[0].len[3], DMA_TO_DEVICE); > > i = 1; /* entry 0 is main skb, unmapped above */ > while (frags--) { > dma_unmap_page(iq->dev, tx_buffer->sglist[i >> 2].dma_ptr[i & 3], > - tx_buffer->sglist[i >> 2].len[i & 3], DMA_TO_DEVICE); > + tx_buffer->sglist[i >> 2].len[3 - (i & 3)], DMA_TO_DEVICE); > i++; > } Hi Shinas, is this change also needed in octep_iq_process_completions() ? The code there looks rather similar. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [net PATCH] octeon_ep: fix tx dma unmap len values in SG 2023-09-11 18:01 ` Simon Horman @ 2023-09-12 7:04 ` Shinas Rasheed 2023-09-12 8:45 ` Paolo Abeni [not found] ` <PH0PR18MB473404EA35ADAC222C9EB68FC7F1A@PH0PR18MB4734.namprd18.prod.outlook.com> 1 sibling, 1 reply; 9+ messages in thread From: Shinas Rasheed @ 2023-09-12 7:04 UTC (permalink / raw) To: horms Cc: aayarekar, davem, edumazet, egallen, hgani, kuba, linux-kernel, mschmidt, netdev, pabeni, sburla, sedara, srasheed, vburru, vimleshk Hi Simon, This change is required in octep_iq_process_completions, as given in the patch, since the scatter gather pointer lengths arrive as big-endian in hardware. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [net PATCH] octeon_ep: fix tx dma unmap len values in SG 2023-09-12 7:04 ` Shinas Rasheed @ 2023-09-12 8:45 ` Paolo Abeni 2023-09-13 5:49 ` [EXT] " Shinas Rasheed 0 siblings, 1 reply; 9+ messages in thread From: Paolo Abeni @ 2023-09-12 8:45 UTC (permalink / raw) To: Shinas Rasheed, horms Cc: aayarekar, davem, edumazet, egallen, hgani, kuba, linux-kernel, mschmidt, netdev, sburla, sedara, vburru, vimleshk On Tue, 2023-09-12 at 00:04 -0700, Shinas Rasheed wrote: > This change is required in octep_iq_process_completions, as given in the patch, > since the scatter gather pointer lengths arrive as big-endian in hardware. I guess Simon intended asking about octep_iq_free_pending(), and AFAICT your reply confirm that the change is required there, too. Additionally the changelog really need to be expanded. I don't understand how this change relates to endianess: if the ring format is big endian I expect some be16_to_cpu(len) instead of complement-to-4 of indexes. Please clarify and expand the changelog, thanks! Paolo ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [EXT] Re: [net PATCH] octeon_ep: fix tx dma unmap len values in SG 2023-09-12 8:45 ` Paolo Abeni @ 2023-09-13 5:49 ` Shinas Rasheed 2023-09-13 8:41 ` [net PATCH v2] " Shinas Rasheed 0 siblings, 1 reply; 9+ messages in thread From: Shinas Rasheed @ 2023-09-13 5:49 UTC (permalink / raw) To: Paolo Abeni, horms@kernel.org Cc: Abhijit Ayarekar, davem@davemloft.net, edumazet@google.com, egallen@redhat.com, Haseeb Gani, kuba@kernel.org, linux-kernel@vger.kernel.org, mschmidt@redhat.com, netdev@vger.kernel.org, Satananda Burla, Sathesh B Edara, Veerasenareddy Burru, Vimlesh Kumar Hi Paolo, Hi Simon, From: Paolo Abeni <pabeni@redhat.com> Sent: Tuesday, September 12, 2023 2:15 PM To: Shinas Rasheed <srasheed@marvell.com>; horms@kernel.org <horms@kernel.org> Cc: Abhijit Ayarekar <aayarekar@marvell.com>; davem@davemloft.net <davem@davemloft.net>; edumazet@google.com <edumazet@google.com>; egallen@redhat.com <egallen@redhat.com>; Haseeb Gani <hgani@marvell.com>; kuba@kernel.org <kuba@kernel.org>; linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>; mschmidt@redhat.com <mschmidt@redhat.com>; netdev@vger.kernel.org <netdev@vger.kernel.org>; Satananda Burla <sburla@marvell.com>; Sathesh B Edara <sedara@marvell.com>; Veerasenareddy Burru <vburru@marvell.com>; Vimlesh Kumar <vimleshk@marvell.com> Subject: [EXT] Re: [net PATCH] octeon_ep: fix tx dma unmap len values in SG External Email ---------------------------------------------------------------------- >I guess Simon intended asking about octep_iq_free_pending(), and AFAICT your reply confirm that the change is required there, too. You are correct in that the change is also required in octep_iq_free_pending as well. Thanks for pointing that out! I will submit another version of this patchset including that. >Additionally the changelog really need to be expanded. I don't understand how this change relates to endianess: if the ring format is big endian I expect some be16_to_cpu(len) instead of complement-to-4 of indexes. The bytes are in itself not big endian, but rather the each of the 16 bytes are kept in memory in a kind of big-endian order. Apologizing for the confusion. 63 48 47 32 31 16 15 0 | Len0 | Len1 | Len2 | Len3 | I shall provide an ascii figure like above in the code to explain and also update the changelog accordingly. Thanks for your time! ^ permalink raw reply [flat|nested] 9+ messages in thread
* [net PATCH v2] octeon_ep: fix tx dma unmap len values in SG 2023-09-13 5:49 ` [EXT] " Shinas Rasheed @ 2023-09-13 8:41 ` Shinas Rasheed 2023-09-14 10:57 ` Simon Horman 2023-09-15 13:00 ` patchwork-bot+netdevbpf 0 siblings, 2 replies; 9+ messages in thread From: Shinas Rasheed @ 2023-09-13 8:41 UTC (permalink / raw) To: srasheed Cc: aayarekar, davem, edumazet, egallen, hgani, horms, kuba, linux-kernel, mschmidt, netdev, pabeni, sburla, sedara, vburru, vimleshk Lengths of SG pointers are kept in the following order in the SG entries in hardware. 63 48|47 32|31 16|15 0 ----------------------------------------- | Len 0 | Len 1 | Len 2 | Len 3 | ----------------------------------------- | Ptr 0 | ----------------------------------------- | Ptr 1 | ----------------------------------------- | Ptr 2 | ----------------------------------------- | Ptr 3 | ----------------------------------------- Dma pointers have to be unmapped based on their respective lengths given in this format. Fixes: 37d79d059606 ("octeon_ep: add Tx/Rx processing and interrupt support") Signed-off-by: Shinas Rasheed <srasheed@marvell.com> --- .../net/ethernet/marvell/octeon_ep/octep_main.c | 8 ++++---- .../net/ethernet/marvell/octeon_ep/octep_tx.c | 8 ++++---- .../net/ethernet/marvell/octeon_ep/octep_tx.h | 16 +++++++++++++++- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c index 4424de2ffd70..dbc518ff8276 100644 --- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c @@ -734,13 +734,13 @@ static netdev_tx_t octep_start_xmit(struct sk_buff *skb, dma_map_sg_err: if (si > 0) { dma_unmap_single(iq->dev, sglist[0].dma_ptr[0], - sglist[0].len[0], DMA_TO_DEVICE); - sglist[0].len[0] = 0; + sglist[0].len[3], DMA_TO_DEVICE); + sglist[0].len[3] = 0; } while (si > 1) { dma_unmap_page(iq->dev, sglist[si >> 2].dma_ptr[si & 3], - sglist[si >> 2].len[si & 3], DMA_TO_DEVICE); - sglist[si >> 2].len[si & 3] = 0; + sglist[si >> 2].len[3 - (si & 3)], DMA_TO_DEVICE); + sglist[si >> 2].len[3 - (si & 3)] = 0; si--; } tx_buffer->gather = 0; diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c b/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c index 5a520d37bea0..d0adb82d65c3 100644 --- a/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_tx.c @@ -69,12 +69,12 @@ int octep_iq_process_completions(struct octep_iq *iq, u16 budget) compl_sg++; dma_unmap_single(iq->dev, tx_buffer->sglist[0].dma_ptr[0], - tx_buffer->sglist[0].len[0], DMA_TO_DEVICE); + tx_buffer->sglist[0].len[3], DMA_TO_DEVICE); i = 1; /* entry 0 is main skb, unmapped above */ while (frags--) { dma_unmap_page(iq->dev, tx_buffer->sglist[i >> 2].dma_ptr[i & 3], - tx_buffer->sglist[i >> 2].len[i & 3], DMA_TO_DEVICE); + tx_buffer->sglist[i >> 2].len[3 - (i & 3)], DMA_TO_DEVICE); i++; } @@ -131,13 +131,13 @@ static void octep_iq_free_pending(struct octep_iq *iq) dma_unmap_single(iq->dev, tx_buffer->sglist[0].dma_ptr[0], - tx_buffer->sglist[0].len[0], + tx_buffer->sglist[0].len[3], DMA_TO_DEVICE); i = 1; /* entry 0 is main skb, unmapped above */ while (frags--) { dma_unmap_page(iq->dev, tx_buffer->sglist[i >> 2].dma_ptr[i & 3], - tx_buffer->sglist[i >> 2].len[i & 3], DMA_TO_DEVICE); + tx_buffer->sglist[i >> 2].len[3 - (i & 3)], DMA_TO_DEVICE); i++; } diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_tx.h b/drivers/net/ethernet/marvell/octeon_ep/octep_tx.h index 2ef57980eb47..21e75ff9f5e7 100644 --- a/drivers/net/ethernet/marvell/octeon_ep/octep_tx.h +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_tx.h @@ -17,7 +17,21 @@ #define TX_BUFTYPE_NET_SG 2 #define NUM_TX_BUFTYPES 3 -/* Hardware format for Scatter/Gather list */ +/* Hardware format for Scatter/Gather list + * + * 63 48|47 32|31 16|15 0 + * ----------------------------------------- + * | Len 0 | Len 1 | Len 2 | Len 3 | + * ----------------------------------------- + * | Ptr 0 | + * ----------------------------------------- + * | Ptr 1 | + * ----------------------------------------- + * | Ptr 2 | + * ----------------------------------------- + * | Ptr 3 | + * ----------------------------------------- + */ struct octep_tx_sglist_desc { u16 len[4]; dma_addr_t dma_ptr[4]; -- 2.25.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [net PATCH v2] octeon_ep: fix tx dma unmap len values in SG 2023-09-13 8:41 ` [net PATCH v2] " Shinas Rasheed @ 2023-09-14 10:57 ` Simon Horman 2023-09-15 13:00 ` patchwork-bot+netdevbpf 1 sibling, 0 replies; 9+ messages in thread From: Simon Horman @ 2023-09-14 10:57 UTC (permalink / raw) To: Shinas Rasheed Cc: aayarekar, davem, edumazet, egallen, hgani, kuba, linux-kernel, mschmidt, netdev, pabeni, sburla, sedara, vburru, vimleshk On Wed, Sep 13, 2023 at 01:41:56AM -0700, Shinas Rasheed wrote: > Lengths of SG pointers are kept in the following order in > the SG entries in hardware. > 63 48|47 32|31 16|15 0 > ----------------------------------------- > | Len 0 | Len 1 | Len 2 | Len 3 | > ----------------------------------------- > | Ptr 0 | > ----------------------------------------- > | Ptr 1 | > ----------------------------------------- > | Ptr 2 | > ----------------------------------------- > | Ptr 3 | > ----------------------------------------- > Dma pointers have to be unmapped based on their > respective lengths given in this format. > > Fixes: 37d79d059606 ("octeon_ep: add Tx/Rx processing and interrupt support") > Signed-off-by: Shinas Rasheed <srasheed@marvell.com> Reviewed-by: Simon Horman <horms@kernel.org> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [net PATCH v2] octeon_ep: fix tx dma unmap len values in SG 2023-09-13 8:41 ` [net PATCH v2] " Shinas Rasheed 2023-09-14 10:57 ` Simon Horman @ 2023-09-15 13:00 ` patchwork-bot+netdevbpf 1 sibling, 0 replies; 9+ messages in thread From: patchwork-bot+netdevbpf @ 2023-09-15 13:00 UTC (permalink / raw) To: Shinas Rasheed Cc: aayarekar, davem, edumazet, egallen, hgani, horms, kuba, linux-kernel, mschmidt, netdev, pabeni, sburla, sedara, vburru, vimleshk Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Wed, 13 Sep 2023 01:41:56 -0700 you wrote: > Lengths of SG pointers are kept in the following order in > the SG entries in hardware. > 63 48|47 32|31 16|15 0 > ----------------------------------------- > | Len 0 | Len 1 | Len 2 | Len 3 | > ----------------------------------------- > | Ptr 0 | > > [...] Here is the summary with links: - [net,v2] octeon_ep: fix tx dma unmap len values in SG https://git.kernel.org/netdev/net/c/350db8a59eb3 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <PH0PR18MB473404EA35ADAC222C9EB68FC7F1A@PH0PR18MB4734.namprd18.prod.outlook.com>]
* Re: [EXT] Re: [net PATCH] octeon_ep: fix tx dma unmap len values in SG [not found] ` <PH0PR18MB473404EA35ADAC222C9EB68FC7F1A@PH0PR18MB4734.namprd18.prod.outlook.com> @ 2023-09-12 19:45 ` Simon Horman 0 siblings, 0 replies; 9+ messages in thread From: Simon Horman @ 2023-09-12 19:45 UTC (permalink / raw) To: Shinas Rasheed Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Haseeb Gani, Vimlesh Kumar, mschmidt@redhat.com, egallen@redhat.com, Veerasenareddy Burru, Sathesh B Edara, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Satananda Burla, Abhijit Ayarekar On Tue, Sep 12, 2023 at 06:37:46AM +0000, Shinas Rasheed wrote: > Hi Simon, > > This change is required in octep_iq_process_completions, as given in the patch, since the scatter gather pointer lengths arrive as big-endian in hardware. Hi, yes, I see that. And sorry for asking such a silly question. But what I meant to ask is, if the change is also needed in octep_iq_free_pending()? ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-09-15 13:00 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-11 9:23 [net PATCH] octeon_ep: fix tx dma unmap len values in SG Shinas Rasheed
2023-09-11 18:01 ` Simon Horman
2023-09-12 7:04 ` Shinas Rasheed
2023-09-12 8:45 ` Paolo Abeni
2023-09-13 5:49 ` [EXT] " Shinas Rasheed
2023-09-13 8:41 ` [net PATCH v2] " Shinas Rasheed
2023-09-14 10:57 ` Simon Horman
2023-09-15 13:00 ` patchwork-bot+netdevbpf
[not found] ` <PH0PR18MB473404EA35ADAC222C9EB68FC7F1A@PH0PR18MB4734.namprd18.prod.outlook.com>
2023-09-12 19:45 ` [EXT] Re: [net PATCH] " Simon Horman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).