Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 1 Sep 2023 23:49:33 +0000 (16:49 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 1 Sep 2023 23:49:33 +0000 (16:49 -0700)
Pull rdma updates from Jason Gunthorpe:
 "Many small changes across the subystem, some highlights:

   - Usual driver cleanups in qedr, siw, erdma, hfi1, mlx4/5, irdma,
     mthca, hns, and bnxt_re

   - siw now works over tunnel and other netdevs with a MAC address by
     removing assumptions about a MAC/GID from the connection manager

   - "Doorbell Pacing" for bnxt_re - this is a best effort scheme to
     allow userspace to slow down the doorbell rings if the HW gets full

   - irdma egress VLAN priority, better QP/WQ sizing

   - rxe bug fixes in queue draining and srq resizing

   - Support more ethernet speed options in the core layer

   - DMABUF support for bnxt_re

   - Multi-stage MTT support for erdma to allow much bigger MR
     registrations

   - A irdma fix with a CVE that came in too late to go to -rc, missing
     bounds checking for 0 length MRs"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (87 commits)
  IB/hfi1: Reduce printing of errors during driver shut down
  RDMA/hfi1: Move user SDMA system memory pinning code to its own file
  RDMA/hfi1: Use list_for_each_entry() helper
  RDMA/mlx5: Fix trailing */ formatting in block comment
  RDMA/rxe: Fix redundant break statement in switch-case.
  RDMA/efa: Fix wrong resources deallocation order
  RDMA/siw: Call llist_reverse_order in siw_run_sq
  RDMA/siw: Correct wrong debug message
  RDMA/siw: Balance the reference of cep->kref in the error path
  Revert "IB/isert: Fix incorrect release of isert connection"
  RDMA/bnxt_re: Fix kernel doc errors
  RDMA/irdma: Prevent zero-length STAG registration
  RDMA/erdma: Implement hierarchical MTT
  RDMA/erdma: Refactor the storage structure of MTT entries
  RDMA/erdma: Renaming variable names and field names of struct erdma_mem
  RDMA/hns: Support hns HW stats
  RDMA/hns: Dump whole QP/CQ/MR resource in raw
  RDMA/irdma: Add missing kernel-doc in irdma_setup_umode_qp()
  RDMA/mlx4: Copy union directly
  RDMA/irdma: Drop unused kernel push code
  ...

16 files changed:
1  2 
drivers/infiniband/core/cache.c
drivers/infiniband/core/cma.c
drivers/infiniband/hw/bnxt_re/ib_verbs.c
drivers/infiniband/hw/bnxt_re/main.c
drivers/infiniband/hw/bnxt_re/qplib_fp.c
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
drivers/infiniband/hw/bnxt_re/qplib_res.c
drivers/infiniband/hw/hfi1/chip.c
drivers/infiniband/hw/irdma/ctrl.c
drivers/infiniband/hw/irdma/hw.c
drivers/infiniband/hw/irdma/main.h
drivers/infiniband/hw/irdma/type.h
drivers/infiniband/hw/irdma/uk.c
drivers/infiniband/hw/irdma/utils.c
drivers/infiniband/hw/mlx4/main.c
drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -127,16 -125,14 +127,16 @@@ static struct net_device *mlx4_ib_get_n
                                             u32 port_num)
  {
        struct mlx4_ib_dev *ibdev = to_mdev(device);
 -      struct net_device *dev;
 +      struct net_device *dev, *ret = NULL;
  
        rcu_read_lock();
 -      dev = mlx4_get_protocol_dev(ibdev->dev, MLX4_PROT_ETH, port_num);
 +      for_each_netdev_rcu(&init_net, dev) {
 +              if (dev->dev.parent != ibdev->ib_dev.dev.parent ||
 +                  dev->dev_port + 1 != port_num)
 +                      continue;
  
 -      if (dev) {
                if (mlx4_is_bonded(ibdev->dev)) {
-                       struct net_device *upper = NULL;
+                       struct net_device *upper;
  
                        upper = netdev_master_upper_dev_get_rcu(dev);
                        if (upper) {
@@@ -2966,18 -2942,16 +2965,18 @@@ int mlx4_ib_steer_qp_reg(struct mlx4_ib
  
                err = __mlx4_ib_create_flow(&mqp->ibqp, flow, MLX4_DOMAIN_NIC,
                                            MLX4_FS_REGULAR, &mqp->reg_id);
-       } else {
-               err = __mlx4_ib_destroy_flow(mdev->dev, mqp->reg_id);
+               kfree(flow);
+               return err;
        }
-       kfree(flow);
-       return err;
+       
+       return __mlx4_ib_destroy_flow(mdev->dev, mqp->reg_id);
  }
  
 -static void mlx4_ib_remove(struct mlx4_dev *dev, void *ibdev_ptr)
 +static void mlx4_ib_remove(struct auxiliary_device *adev)
  {
 -      struct mlx4_ib_dev *ibdev = ibdev_ptr;
 +      struct mlx4_adev *madev = container_of(adev, struct mlx4_adev, adev);
 +      struct mlx4_dev *dev = madev->mdev;
 +      struct mlx4_ib_dev *ibdev = auxiliary_get_drvdata(adev);
        int p;
        int i;