Message ID | 20221202134646.311108-1-simon.horman@corigine.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 5c306de8f787ab7df51f846e57ac79cd713537d5 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] nfp: correct desc type when header dma len is 4096 | expand |
On Fri, Dec 02, 2022 at 02:46:46PM +0100, Simon Horman wrote: > From: Yinjun Zhang <yinjun.zhang@corigine.com> > > When there's only one buffer to dma and its length is 4096, then > only one data descriptor is needed to carry it according to current > descriptor definition. So the descriptor type should be `simple` > instead of `gather`, the latter requires more than one descriptor, > otherwise it'll be dropped by application firmware. > > Fixes: c10d12e3dce8 ("nfp: add support for NFDK data path") > Fixes: d9d950490a0a ("nfp: nfdk: implement xdp tx path for NFDK") > Signed-off-by: Yinjun Zhang <yinjun.zhang@corigine.com> > Reviewed-by: Richard Donkin <richard.donkin@corigine.com> > Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com> > Signed-off-by: Simon Horman <simon.horman@corigine.com> > --- > drivers/net/ethernet/netronome/nfp/nfdk/dp.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > Thanks, Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Hello: This patch was applied to netdev/net.git (master) by Jakub Kicinski <kuba@kernel.org>: On Fri, 2 Dec 2022 14:46:46 +0100 you wrote: > From: Yinjun Zhang <yinjun.zhang@corigine.com> > > When there's only one buffer to dma and its length is 4096, then > only one data descriptor is needed to carry it according to current > descriptor definition. So the descriptor type should be `simple` > instead of `gather`, the latter requires more than one descriptor, > otherwise it'll be dropped by application firmware. > > [...] Here is the summary with links: - [net] nfp: correct desc type when header dma len is 4096 https://git.kernel.org/netdev/net/c/5c306de8f787 You are awesome, thank you!
diff --git a/drivers/net/ethernet/netronome/nfp/nfdk/dp.c b/drivers/net/ethernet/netronome/nfp/nfdk/dp.c index 2b427d8ccb2f..ccacb6ab6c39 100644 --- a/drivers/net/ethernet/netronome/nfp/nfdk/dp.c +++ b/drivers/net/ethernet/netronome/nfp/nfdk/dp.c @@ -282,7 +282,7 @@ netdev_tx_t nfp_nfdk_tx(struct sk_buff *skb, struct net_device *netdev) dma_len = skb_headlen(skb); if (skb_is_gso(skb)) type = NFDK_DESC_TX_TYPE_TSO; - else if (!nr_frags && dma_len < NFDK_TX_MAX_DATA_PER_HEAD) + else if (!nr_frags && dma_len <= NFDK_TX_MAX_DATA_PER_HEAD) type = NFDK_DESC_TX_TYPE_SIMPLE; else type = NFDK_DESC_TX_TYPE_GATHER; @@ -927,7 +927,7 @@ nfp_nfdk_tx_xdp_buf(struct nfp_net_dp *dp, struct nfp_net_rx_ring *rx_ring, dma_len = pkt_len; dma_addr = rxbuf->dma_addr + dma_off; - if (dma_len < NFDK_TX_MAX_DATA_PER_HEAD) + if (dma_len <= NFDK_TX_MAX_DATA_PER_HEAD) type = NFDK_DESC_TX_TYPE_SIMPLE; else type = NFDK_DESC_TX_TYPE_GATHER; @@ -1325,7 +1325,7 @@ nfp_nfdk_ctrl_tx_one(struct nfp_net *nn, struct nfp_net_r_vector *r_vec, txbuf = &tx_ring->ktxbufs[wr_idx]; dma_len = skb_headlen(skb); - if (dma_len < NFDK_TX_MAX_DATA_PER_HEAD) + if (dma_len <= NFDK_TX_MAX_DATA_PER_HEAD) type = NFDK_DESC_TX_TYPE_SIMPLE; else type = NFDK_DESC_TX_TYPE_GATHER;