RE: [PATCH] RDMA/mana_ib: Use v2 version of cfg_rx_steer_req to enable RX coalescing

From: Long Li
Date: Wed May 10 2023 - 12:38:09 EST


>Subject: Re: [PATCH] RDMA/mana_ib: Use v2 version of cfg_rx_steer_req to
>enable RX coalescing
>
>On Tue, May 09, 2023 at 07:08:36PM +0000, Long Li wrote:
>> > Subject: Re: [PATCH] RDMA/mana_ib: Use v2 version of
>> > cfg_rx_steer_req to enable RX coalescing
>> >
>> > On Mon, May 08, 2023 at 02:45:44PM +0000, Haiyang Zhang wrote:
>> > >
>> > >
>> > > > -----Original Message-----
>> > > > From: Leon Romanovsky <leon@xxxxxxxxxx>
>> > > > Sent: Monday, May 8, 2023 2:10 AM
>> > > > To: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>
>> > > > Cc: Long Li <longli@xxxxxxxxxxxxx>; Jason Gunthorpe
>> > > > <jgg@xxxxxxxx>; Ajay Sharma <sharmaajay@xxxxxxxxxxxxx>; Dexuan
>> > > > Cui <decui@xxxxxxxxxxxxx>; KY Srinivasan <kys@xxxxxxxxxxxxx>;
>> > > > Wei Liu
>> > <wei.liu@xxxxxxxxxx>; David S.
>> > > > Miller <davem@xxxxxxxxxxxxx>; Eric Dumazet
>> > > > <edumazet@xxxxxxxxxx>; Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo
>> > > > Abeni <pabeni@xxxxxxxxxx>;
>> > > > linux- rdma@xxxxxxxxxxxxxxx; linux-hyperv@xxxxxxxxxxxxxxx;
>> > > > netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
>> > > > Subject: Re: [PATCH] RDMA/mana_ib: Use v2 version of
>> > > > cfg_rx_steer_req to enable RX coalescing
>> > > >
>> > > > On Sun, May 07, 2023 at 09:39:27PM +0000, Haiyang Zhang wrote:
>> > > > >
>> > > > >
>> > > > > > -----Original Message-----
>> > > > > > From: Leon Romanovsky <leon@xxxxxxxxxx>
>> > > > > > Sent: Sunday, May 7, 2023 4:11 AM
>> > > > > > To: Long Li <longli@xxxxxxxxxxxxx>
>> > > > > > Cc: Jason Gunthorpe <jgg@xxxxxxxx>; Ajay Sharma
>> > > > > > <sharmaajay@xxxxxxxxxxxxx>; Dexuan Cui
>> > > > > > <decui@xxxxxxxxxxxxx>; KY Srinivasan <kys@xxxxxxxxxxxxx>;
>> > > > > > Haiyang Zhang
>> > > > <haiyangz@xxxxxxxxxxxxx>;
>> > > > > > Wei Liu <wei.liu@xxxxxxxxxx>; David S. Miller
>> > > > > > <davem@xxxxxxxxxxxxx>; Eric Dumazet <edumazet@xxxxxxxxxx>;
>> > Jakub
>> > > > > > Kicinski <kuba@xxxxxxxxxx>;
>> > > > Paolo
>> > > > > > Abeni <pabeni@xxxxxxxxxx>; linux-rdma@xxxxxxxxxxxxxxx;
>> > > > > > linux- hyperv@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx;
>> > > > > > linux- kernel@xxxxxxxxxxxxxxx
>> > > > > > Subject: Re: [PATCH] RDMA/mana_ib: Use v2 version of
>> > > > > > cfg_rx_steer_req
>> > > > to
>> > > > > > enable RX coalescing
>> > > > > >
>> > > > > > On Fri, May 05, 2023 at 11:51:48AM -0700,
>> > > > > > longli@xxxxxxxxxxxxxxxxx
>> > > > > > wrote:
>> > > > > > > From: Long Li <longli@xxxxxxxxxxxxx>
>> > > > > > >
>> > > > > > > With RX coalescing, one CQE entry can be used to indicate
>> > > > > > > multiple
>> > > > packets
>> > > > > > > on the receive queue. This saves processing time and PCI
>> > > > > > > bandwidth over the CQ.
>> > > > > > >
>> > > > > > > Signed-off-by: Long Li <longli@xxxxxxxxxxxxx>
>> > > > > > > ---
>> > > > > > > drivers/infiniband/hw/mana/qp.c | 5 ++++-
>> > > > > > > include/net/mana/mana.h | 17 +++++++++++++++++
>> > > > > > > 2 files changed, 21 insertions(+), 1 deletion(-)
>> > > > > >
>> > > > > > Why didn't you change mana_cfg_vport_steering() too?
>> > > > >
>> > > > > The mana_cfg_vport_steering() is for mana_en (Enthernet)
>> > > > > driver, not the mana_ib driver.
>> > > > >
>> > > > > The changes for mana_en will be done in a separate patch
>> > > > > together with changes for mana_en RX code patch to support
>> > > > > multiple packets /
>> > CQE.
>> > > >
>> > > > I'm aware of the difference between mana_en and mana_ib.
>> > > >
>> > > > The change you proposed doesn't depend on "support multiple
>> > > > packets / CQE."
>> > > > and works perfectly with one packet/CQE also, does it?
>> > >
>> > > No.
>> > > If we add the following setting to the mana_en /
>> > > mana_cfg_vport_steering(), the NIC may put multiple packets in one
>> > > CQE, so we need to have the changes for mana_en RX code path to
>> > > support
>> > multiple packets / CQE.
>> > > + req->cqe_coalescing_enable = true;
>> >
>> > You can leave "cqe_coalescing_enable = false" for ETH and still
>> > reuse your new
>> > v2 struct.
>>
>> I think your proposal will work for both Ethernet and IB.
>>
>> The idea is that we want this patch to change the behavior of the IB driver. We
>plan to make another patch for the Ethernet driver. This makes it easier to track
>all changes for a driver.
>
>And I don't want to deal with deletion of v1 struct for two/three kernel cycles
>instead of one patch in one cycle.

I'm resubmitting this patch to replace v1 for both driver.

>
>>
>> >
>> > H>
>> > > So we plan to set this cqe_coalescing_enable, and the changes for
>> > > mana_en RX code path to support multiple packets / CQE in another
>patch.
>> >
>> > And how does it work with IB without changing anything except this
>> > proposed patch?
>>
>> The RX CQE Coalescing is implemented in the user-mode. This feature is
>always turned on from cluster. The user-mode code is written in a way that can
>deal with both CQE Coalescing and CQE non-coalescing, so it doesn't depend on
>kernel version for the correct behavior.
>
>Yes, but how does userspace know that CQE coalescing was enabled?

The user-mode doesn't know if CQE is enabled in advance. If this information is required I can modify the patch to pass this information along to rdma-core. However, this is not useful as the cluster is running with CQE coalescing enabled by default, there is no need to know this information.