mbox series

[net-next,v11,0/8] Add Auxiliary driver support

Message ID 20230202033809.3989-1-ajit.khaparde@broadcom.com (mailing list archive)
Headers show
Series Add Auxiliary driver support | expand

Message

Ajit Khaparde Feb. 2, 2023, 3:38 a.m. UTC
Add auxiliary device driver for Broadcom devices.
The bnxt_en driver will register and initialize an aux device
if RDMA is enabled in the underlying device.
The bnxt_re driver will then probe and initialize the
RoCE interfaces with the infiniband stack.

We got rid of the bnxt_en_ops which the bnxt_re driver used to
communicate with bnxt_en.
Similarly  We have tried to clean up most of the bnxt_ulp_ops.
In most of the cases we used the functions and entry points provided
by the auxiliary bus driver framework.
And now these are the minimal functions needed to support the functionality.

We will try to work on getting rid of the remaining if we find any
other viable option in future.

v1->v2:
- Incorporated review comments including usage of ulp_id &
  complex function indirections.
- Used function calls provided by the auxiliary bus interface
  instead of proprietary calls.
- Refactor code to remove ROCE driver's access to bnxt structure.

v2->v3:
- Addressed review comments including cleanup of some unnecessary wrappers
- Fixed warnings seen during cross compilation

v3->v4:
- Cleaned up bnxt_ulp.c and bnxt_ulp.h further
- Removed some more dead code
- Sending the patchset as a standalone series

v4->v5:
- Removed the SRIOV config callback which bnxt_en driver was calling into
  bnxt_re driver.
- Removed excessive checks for rdev and other pointers.

v5->v6:
- Removed excessive checks for dev and other pointers
- Remove runtime interrupt vector allocation. bnxt_en preallocates
interrupt vectors for bnxt_re to use.

v6->v7:
- Removed incorrect usage of inline
- Updated Kconfig to select AUXILIARY BUS support
- Addressed various comments including removal of unnecessary forward
  declaration, using static functions where possible, unnecessary jump,
  cleanup logic, etc..
- Added Leon's Reviewed-by, to the commit log in the patches, from
  previous version.

v7->v8:
- Addressed various comments to remove unnecessary check for id, removed
  setting pointer to NULL after free, renamed private pointers to avoid
  confusing them with the auxiliary device names and refactored some
  code accordingly.
- Auxiliary device will be released through auxiliary_device_uninit();

v8->v9:
- Fixed the cleanup code to use the auxiliary driver release function to
  free allocated memory. This allows the cleanup to be performed once
  the device reference count drops to 0.
- Refactored the code to address the above.

v9->v10:
- Fixed residual comments like useless NULL assignments and variable
  initializations.

v10->v11:
- Addressed unused variable warning in patch 1 reported by kernel test
  robot.

Commit message uses Leon's Reviewed-by from earlier version.

Please apply. Thanks.

The following are changes since commit 9f266ccaa2f5228bfe67ad58a94ca4e0109b954a:
   Merge tag 'for_linus' in Linus's tree
and are available in the git repository at:
  https://github.com/ajitkhaparde1/linux aux-bus-v11
for you to fetch changes upto 30343221132430c24b468493c861f71e2bad131f:
   bnxt_en: Remove runtime interrupt vector allocation

----

Ajit Khaparde (7):
  bnxt_en: Add auxiliary driver support
  RDMA/bnxt_re: Use auxiliary driver interface
  bnxt_en: Remove usage of ulp_id
  bnxt_en: Use direct API instead of indirection
  bnxt_en: Use auxiliary bus calls over proprietary calls
  RDMA/bnxt_re: Remove the sriov config callback
  bnxt_en: Remove runtime interrupt vector allocation

Hongguang Gao (1):
  bnxt_en: Remove struct bnxt access from RoCE driver

 drivers/infiniband/hw/bnxt_re/bnxt_re.h       |  10 +-
 drivers/infiniband/hw/bnxt_re/main.c          | 635 +++++++-----------
 drivers/net/ethernet/broadcom/Kconfig         |   1 +
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     |  10 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt.h     |   8 +
 .../net/ethernet/broadcom/bnxt/bnxt_sriov.c   |   7 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 474 ++++++-------
 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h |  51 +-
 8 files changed, 461 insertions(+), 735 deletions(-)

Comments

Jakub Kicinski Feb. 2, 2023, 3:49 a.m. UTC | #1
On Wed,  1 Feb 2023 19:38:01 -0800 Ajit Khaparde wrote:
> v10->v11:
> - Addressed unused variable warning in patch 1 reported by kernel test
>   robot.

:/ Why are you reposting this so early, read the rules please:

https://www.kernel.org/doc/html/next/process/maintainer-netdev.html

We should bump that to 48h for those who can't be bothered to compile
their code before reposting, if you ask me.

I'm discarding your series, come back next week.
Ajit Khaparde Feb. 6, 2023, 4:58 p.m. UTC | #2
On Wed, Feb 1, 2023 at 7:49 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Wed,  1 Feb 2023 19:38:01 -0800 Ajit Khaparde wrote:
> > v10->v11:
> > - Addressed unused variable warning in patch 1 reported by kernel test
> >   robot.
>
> :/ Why are you reposting this so early, read the rules please:
>
> https://www.kernel.org/doc/html/next/process/maintainer-netdev.html
>
> We should bump that to 48h for those who can't be bothered to compile
> their code before reposting, if you ask me.
>
> I'm discarding your series, come back next week.
Please let me know if I should rebase and send a new version.
FYI - I rebased the v11 patchset against the latest and it applied fine.

Thanks
Ajit
patchwork-bot+netdevbpf@kernel.org Feb. 7, 2023, 6:40 a.m. UTC | #3
Hello:

This series was applied to netdev/net-next.git (master)
by Ajit Khaparde <ajit.khaparde@broadcom.com>:

On Wed,  1 Feb 2023 19:38:01 -0800 you wrote:
> Add auxiliary device driver for Broadcom devices.
> The bnxt_en driver will register and initialize an aux device
> if RDMA is enabled in the underlying device.
> The bnxt_re driver will then probe and initialize the
> RoCE interfaces with the infiniband stack.
> 
> We got rid of the bnxt_en_ops which the bnxt_re driver used to
> communicate with bnxt_en.
> Similarly  We have tried to clean up most of the bnxt_ulp_ops.
> In most of the cases we used the functions and entry points provided
> by the auxiliary bus driver framework.
> And now these are the minimal functions needed to support the functionality.
> 
> [...]

Here is the summary with links:
  - [net-next,v11,1/8] bnxt_en: Add auxiliary driver support
    https://git.kernel.org/netdev/net-next/c/d80d88b0dfff
  - [net-next,v11,2/8] RDMA/bnxt_re: Use auxiliary driver interface
    https://git.kernel.org/netdev/net-next/c/6d758147c7b8
  - [net-next,v11,3/8] bnxt_en: Remove usage of ulp_id
    https://git.kernel.org/netdev/net-next/c/dafcdf5e2bd0
  - [net-next,v11,4/8] bnxt_en: Use direct API instead of indirection
    https://git.kernel.org/netdev/net-next/c/63669ab384ea
  - [net-next,v11,5/8] bnxt_en: Use auxiliary bus calls over proprietary calls
    https://git.kernel.org/netdev/net-next/c/3b65e9456c29
  - [net-next,v11,6/8] bnxt_en: Remove struct bnxt access from RoCE driver
    https://git.kernel.org/netdev/net-next/c/848dc857c8de
  - [net-next,v11,7/8] RDMA/bnxt_re: Remove the sriov config callback
    https://git.kernel.org/netdev/net-next/c/a43c26fa2e6c
  - [net-next,v11,8/8] bnxt_en: Remove runtime interrupt vector allocation
    https://git.kernel.org/netdev/net-next/c/303432211324

You are awesome, thank you!