2024-03-07 14:26:29

by David Gouarin

[permalink] [raw]
Subject: [PATCH net v2] dpaa_eth: fix XDP queue index

Make it possible to bind a XDP socket to a queue id.
The DPAA FQ Id was passed to the XDP program in the XDP packet metadata
which made it unusable with bpf_map_redirect.
Instead of the DPAA FQ Id, initialise the XDP rx queue with the channel id.

Fixes: d57e57d0cd04 ("dpaa_eth: add XDP_TX support")

Signed-off-by: David Gouarin <[email protected]>
---
v2: add Fixes: in description
---
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index dcbc598b11c6..988dc9237368 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -1154,7 +1154,7 @@ static int dpaa_fq_init(struct dpaa_fq *dpaa_fq, bool td_enable)
if (dpaa_fq->fq_type == FQ_TYPE_RX_DEFAULT ||
dpaa_fq->fq_type == FQ_TYPE_RX_PCD) {
err = xdp_rxq_info_reg(&dpaa_fq->xdp_rxq, dpaa_fq->net_dev,
- dpaa_fq->fqid, 0);
+ dpaa_fq->channel, 0);
if (err) {
dev_err(dev, "xdp_rxq_info_reg() = %d\n", err);
return err;
--
2.34.1



2024-03-07 15:51:48

by Maciej Fijalkowski

[permalink] [raw]
Subject: Re: [PATCH net v2] dpaa_eth: fix XDP queue index

On Thu, Mar 07, 2024 at 03:24:02PM +0100, David Gouarin wrote:
> Make it possible to bind a XDP socket to a queue id.
> The DPAA FQ Id was passed to the XDP program in the XDP packet metadata
> which made it unusable with bpf_map_redirect.

I think that referring to a member from xdp_rxq_info struct as 'packet
metadata' is confusing. I was trying to find a place where you are
actually storing this id at xdp_buff::data_meta. This is not happening
AFAICT. Thing is that xsk_rcv_check() picks xdp->rxq->queue_index which
holds fqid which is not related to queue number, right?

> Instead of the DPAA FQ Id, initialise the XDP rx queue with the channel id.
>
> Fixes: d57e57d0cd04 ("dpaa_eth: add XDP_TX support")
>
> Signed-off-by: David Gouarin <[email protected]>
> ---
> v2: add Fixes: in description
> ---
> drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> index dcbc598b11c6..988dc9237368 100644
> --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> @@ -1154,7 +1154,7 @@ static int dpaa_fq_init(struct dpaa_fq *dpaa_fq, bool td_enable)
> if (dpaa_fq->fq_type == FQ_TYPE_RX_DEFAULT ||
> dpaa_fq->fq_type == FQ_TYPE_RX_PCD) {
> err = xdp_rxq_info_reg(&dpaa_fq->xdp_rxq, dpaa_fq->net_dev,
> - dpaa_fq->fqid, 0);
> + dpaa_fq->channel, 0);
> if (err) {
> dev_err(dev, "xdp_rxq_info_reg() = %d\n", err);
> return err;
> --
> 2.34.1
>

2024-03-07 17:49:15

by David Gouarin

[permalink] [raw]
Subject: Re: [PATCH net v2] dpaa_eth: fix XDP queue index

Le jeu. 7 mars 2024 à 16:51, Maciej Fijalkowski
<[email protected]> a écrit :
>
> On Thu, Mar 07, 2024 at 03:24:02PM +0100, David Gouarin wrote:
> > Make it possible to bind a XDP socket to a queue id.
> > The DPAA FQ Id was passed to the XDP program in the XDP packet metadata
> > which made it unusable with bpf_map_redirect.
>
> I think that referring to a member from xdp_rxq_info struct as 'packet
> metadata' is confusing. I was trying to find a place where you are
> actually storing this id at xdp_buff::data_meta. This is not happening
> AFAICT. Thing is that xsk_rcv_check() picks xdp->rxq->queue_index which
> holds fqid which is not related to queue number, right?

Correct. I have used the term xdp metadata because that is the terminology
used in the xdp program (struct xdp_md).
I should have said instead :
The DPAA FQ Id was passed to the XDP program in the xdp_rxq_info->queue_index
instead of the queue number [...]

Maciej please forgive me for the double send and formatting mistakes,
kernel mailing lists are new to me.

>
> > Instead of the DPAA FQ Id, initialise the XDP rx queue with the channel id.
> >
> > Fixes: d57e57d0cd04 ("dpaa_eth: add XDP_TX support")
> >
> > Signed-off-by: David Gouarin <[email protected]>
> > ---
> > v2: add Fixes: in description
> > ---
> > drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> > index dcbc598b11c6..988dc9237368 100644
> > --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> > +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> > @@ -1154,7 +1154,7 @@ static int dpaa_fq_init(struct dpaa_fq *dpaa_fq, bool td_enable)
> > if (dpaa_fq->fq_type == FQ_TYPE_RX_DEFAULT ||
> > dpaa_fq->fq_type == FQ_TYPE_RX_PCD) {
> > err = xdp_rxq_info_reg(&dpaa_fq->xdp_rxq, dpaa_fq->net_dev,
> > - dpaa_fq->fqid, 0);
> > + dpaa_fq->channel, 0);
> > if (err) {
> > dev_err(dev, "xdp_rxq_info_reg() = %d\n", err);
> > return err;
> > --
> > 2.34.1
> >

2024-03-20 11:26:16

by David Gouarin

[permalink] [raw]
Subject: [PATCH net v3] dpaa_eth: fix XDP queue index

Make it possible to bind a XDP socket to a queue id.
The DPAA FQ Id was passed to the XDP program in the
xdp_rxq_info->queue_index instead of the Ethernet device queue number,
which made it unusable with bpf_map_redirect.
Instead of the DPAA FQ Id, initialise the XDP rx queue with the queue number.

Fixes: d57e57d0cd04 ("dpaa_eth: add XDP_TX support")

Signed-off-by: David Gouarin <[email protected]>
---
v3: reword commit message
v2: add Fixes: in description
---
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index dcbc598b11c6..988dc9237368 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -1154,7 +1154,7 @@ static int dpaa_fq_init(struct dpaa_fq *dpaa_fq, bool td_enable)
if (dpaa_fq->fq_type == FQ_TYPE_RX_DEFAULT ||
dpaa_fq->fq_type == FQ_TYPE_RX_PCD) {
err = xdp_rxq_info_reg(&dpaa_fq->xdp_rxq, dpaa_fq->net_dev,
- dpaa_fq->fqid, 0);
+ dpaa_fq->channel, 0);
if (err) {
dev_err(dev, "xdp_rxq_info_reg() = %d\n", err);
return err;
--
2.34.1


2024-03-21 12:26:26

by Paolo Abeni

[permalink] [raw]
Subject: Re: [PATCH net v3] dpaa_eth: fix XDP queue index

On Wed, 2024-03-20 at 12:25 +0100, David Gouarin wrote:
> Make it possible to bind a XDP socket to a queue id.
> The DPAA FQ Id was passed to the XDP program in the
> xdp_rxq_info->queue_index instead of the Ethernet device queue number,
> which made it unusable with bpf_map_redirect.
> Instead of the DPAA FQ Id, initialise the XDP rx queue with the queue number.
>
> Fixes: d57e57d0cd04 ("dpaa_eth: add XDP_TX support")
>
> Signed-off-by: David Gouarin <[email protected]>

The patch LGTM, but you must avoid empty lines in after the 'Fixes'
tag.

Please have an accurate reading of the process documentation.

Thanks,

Paolo


2024-04-09 09:31:06

by David Gouarin

[permalink] [raw]
Subject: [PATCH net v4] dpaa_eth: fix XDP queue index

Make it possible to bind a XDP socket to a queue id.
The DPAA FQ Id was passed to the XDP program in the
xdp_rxq_info->queue_index instead of the Ethernet device queue number,
which made it unusable with bpf_map_redirect.
Instead of the DPAA FQ Id, initialise the XDP rx queue with the queue number.

Fixes: d57e57d0cd04 ("dpaa_eth: add XDP_TX support")
Signed-off-by: David Gouarin <[email protected]>
---
v4: fix patch formatting
v3: reword commit message
v2: add Fixes: in description
---
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index dcbc598b11c6..988dc9237368 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -1154,7 +1154,7 @@ static int dpaa_fq_init(struct dpaa_fq *dpaa_fq, bool td_enable)
if (dpaa_fq->fq_type == FQ_TYPE_RX_DEFAULT ||
dpaa_fq->fq_type == FQ_TYPE_RX_PCD) {
err = xdp_rxq_info_reg(&dpaa_fq->xdp_rxq, dpaa_fq->net_dev,
- dpaa_fq->fqid, 0);
+ dpaa_fq->channel, 0);
if (err) {
dev_err(dev, "xdp_rxq_info_reg() = %d\n", err);
return err;
--
2.34.1


2024-04-11 02:41:09

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH net v4] dpaa_eth: fix XDP queue index

On Tue, 9 Apr 2024 11:30:46 +0200 David Gouarin wrote:
> Make it possible to bind a XDP socket to a queue id.
> The DPAA FQ Id was passed to the XDP program in the
> xdp_rxq_info->queue_index instead of the Ethernet device queue number,
> which made it unusable with bpf_map_redirect.
> Instead of the DPAA FQ Id, initialise the XDP rx queue with the queue number.

Camelia, looks good?

2024-04-11 11:46:44

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net v4] dpaa_eth: fix XDP queue index

On Wed, Apr 10, 2024 at 07:40:55PM -0700, Jakub Kicinski wrote:
> On Tue, 9 Apr 2024 11:30:46 +0200 David Gouarin wrote:
> > Make it possible to bind a XDP socket to a queue id.
> > The DPAA FQ Id was passed to the XDP program in the
> > xdp_rxq_info->queue_index instead of the Ethernet device queue number,
> > which made it unusable with bpf_map_redirect.
> > Instead of the DPAA FQ Id, initialise the XDP rx queue with the queue number.
>
> Camelia, looks good?

Please allow me some time to prepare a response, even if this means the
patch misses this week's 'net' pull request.

2024-04-18 01:17:49

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH net v4] dpaa_eth: fix XDP queue index

On Thu, 11 Apr 2024 14:34:33 +0300 Vladimir Oltean wrote:
> On Wed, Apr 10, 2024 at 07:40:55PM -0700, Jakub Kicinski wrote:
> > On Tue, 9 Apr 2024 11:30:46 +0200 David Gouarin wrote:
> > > Make it possible to bind a XDP socket to a queue id.
> > > The DPAA FQ Id was passed to the XDP program in the
> > > xdp_rxq_info->queue_index instead of the Ethernet device queue number,
> > > which made it unusable with bpf_map_redirect.
> > > Instead of the DPAA FQ Id, initialise the XDP rx queue with the queue number.
> >
> > Camelia, looks good?
>
> Please allow me some time to prepare a response, even if this means the
> patch misses this week's 'net' pull request.

We're getting close to the 'net' pull request of the following week :)
The bug has been around for a while so no huge rush, but would be nice
to get rid of this from patchwork. If you don't have time - would you
be willing to repost it once you found the time to investigate?

2024-04-18 07:52:31

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net v4] dpaa_eth: fix XDP queue index

On Wed, Apr 17, 2024 at 06:17:34PM -0700, Jakub Kicinski wrote:
> On Thu, 11 Apr 2024 14:34:33 +0300 Vladimir Oltean wrote:
> > On Wed, Apr 10, 2024 at 07:40:55PM -0700, Jakub Kicinski wrote:
> > > On Tue, 9 Apr 2024 11:30:46 +0200 David Gouarin wrote:
> > > > Make it possible to bind a XDP socket to a queue id.
> > > > The DPAA FQ Id was passed to the XDP program in the
> > > > xdp_rxq_info->queue_index instead of the Ethernet device queue number,
> > > > which made it unusable with bpf_map_redirect.
> > > > Instead of the DPAA FQ Id, initialise the XDP rx queue with the queue number.
> > >
> > > Camelia, looks good?
> >
> > Please allow me some time to prepare a response, even if this means the
> > patch misses this week's 'net' pull request.
>
> We're getting close to the 'net' pull request of the following week :)
> The bug has been around for a while so no huge rush, but would be nice
> to get rid of this from patchwork. If you don't have time - would you
> be willing to repost it once you found the time to investigate?

I have been looking into this, but I do not have a definitive response yet.
The dpaa_fq->channel replacement is not the zero-based RX queue number
that David is looking for, either.

We will work this out. Please remove this patch from patchwork for now.