]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 24 Jan 2025 20:21:28 +0000 (12:21 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 24 Jan 2025 20:21:28 +0000 (12:21 -0800)
Pull rdma updates from Jason Gunthorpe:
 "Lighter that normal, but the now usual collection of driver fixes and
  small improvements:

   - Small fixes and minor improvements to cxgb4, bnxt_re, rxe, srp,
     efa, cxgb4

   - Update mlx4 to use the new umem APIs, avoiding direct use of
     scatterlist

   - Support ROCEv2 in erdma

   - Remove various uncalled functions, constify bin_attribute

   - Provide core infrastructure to catch netdev events and route them
     to drivers, consolidating duplicated driver code

   - Fix rare race condition crashes in mlx5 ODP flows"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (63 commits)
  RDMA/mlx5: Fix implicit ODP use after free
  RDMA/mlx5: Fix a race for an ODP MR which leads to CQE with error
  RDMA/qib: Constify 'struct bin_attribute'
  RDMA/hfi1: Constify 'struct bin_attribute'
  RDMA/rxe: Fix the warning "__rxe_cleanup+0x12c/0x170 [rdma_rxe]"
  RDMA/cxgb4: Notify rdma stack for IB_EVENT_QP_LAST_WQE_REACHED event
  RDMA/bnxt_re: Allocate dev_attr information dynamically
  RDMA/bnxt_re: Pass the context for ulp_irq_stop
  RDMA/bnxt_re: Add support to handle DCB_CONFIG_CHANGE event
  RDMA/bnxt_re: Query firmware defaults of CC params during probe
  RDMA/bnxt_re: Add Async event handling support
  bnxt_en: Add ULP call to notify async events
  RDMA/mlx5: Fix indirect mkey ODP page count
  MAINTAINERS: Update the bnxt_re maintainers
  RDMA/hns: Clean up the legacy CONFIG_INFINIBAND_HNS
  RDMA/rtrs: Add missing deinit() call
  RDMA/efa: Align interrupt related fields to same type
  RDMA/bnxt_re: Fix to drop reference to the mmap entry in case of error
  RDMA/mlx5: Fix link status down event for MPV
  RDMA/erdma: Support create_ah/destroy_ah in non-sleepable contexts
  ...

15 files changed:
1  2 
MAINTAINERS
drivers/infiniband/hw/bnxt_re/ib_verbs.c
drivers/infiniband/hw/bnxt_re/main.c
drivers/infiniband/hw/bnxt_re/qplib_fp.h
drivers/infiniband/hw/bnxt_re/qplib_res.h
drivers/infiniband/hw/bnxt_re/qplib_sp.c
drivers/infiniband/hw/hns/hns_roce_hw_v2.c
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/sw/rxe/rxe_net.c
drivers/infiniband/sw/rxe/rxe_verbs.c
drivers/infiniband/sw/siw/siw_main.c
drivers/infiniband/sw/siw/siw_verbs.c
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
index 8cc64ceeb3569b906faac7131fe9358163eb509b,d400aaab0e70003da71c999bfdb3e5c88daa1010..132a87e52d5c7e9a63ea7eddc10d410eb15c83a4
@@@ -595,13 -577,7 +585,13 @@@ void rxe_port_down(struct rxe_dev *rxe
  
  void rxe_set_port_state(struct rxe_dev *rxe)
  {
 -      if (ib_get_curr_port_state(rxe->ndev) == IB_PORT_ACTIVE)
 +      struct net_device *ndev;
 +
 +      ndev = rxe_ib_device_get_netdev(&rxe->ib_dev);
 +      if (!ndev)
 +              return;
 +
-       if (netif_running(ndev) && netif_carrier_ok(ndev))
++      if (ib_get_curr_port_state(ndev) == IB_PORT_ACTIVE)
                rxe_port_up(rxe);
        else
                rxe_port_down(rxe);
index 8a5fc20fd186927ab00ae13a77a53222a90c3239,dad3cacb904880644cd8c62abd869e32ba7102f5..6152a0fdfc8caa0026bc0b888edb8dbfb8cfdf50
@@@ -62,9 -55,10 +62,10 @@@ static int rxe_query_port(struct ib_dev
        ret = ib_get_eth_speed(ibdev, port_num, &attr->active_speed,
                               &attr->active_width);
  
 -      attr->state = ib_get_curr_port_state(rxe->ndev);
++      attr->state = ib_get_curr_port_state(ndev);
        if (attr->state == IB_PORT_ACTIVE)
                attr->phys_state = IB_PORT_PHYS_STATE_LINK_UP;
 -      else if (dev_get_flags(rxe->ndev) & IFF_UP)
 +      else if (dev_get_flags(ndev) & IFF_UP)
                attr->phys_state = IB_PORT_PHYS_STATE_POLLING;
        else
                attr->phys_state = IB_PORT_PHYS_STATE_DISABLED;
Simple merge
index 7ca0297d68a4a70fcccb1ec5df12f6ecd3296c9d,592a015cc4c6a09c684cb0862da8d14e2987dab0..5ac8bd450d240724d55de641fd0aef2f07a7b68d
@@@ -178,21 -178,13 +178,20 @@@ int siw_query_port(struct ib_device *ba
  
        rv = ib_get_eth_speed(base_dev, port, &attr->active_speed,
                         &attr->active_width);
 +      if (rv)
 +              return rv;
 +
 +      ndev = ib_device_get_netdev(base_dev, SIW_PORT);
 +      if (!ndev)
 +              return -ENODEV;
 +
        attr->gid_tbl_len = 1;
        attr->max_msg_sz = -1;
 -      attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
 -      attr->active_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
 -      attr->state = ib_get_curr_port_state(sdev->netdev);
 +      attr->max_mtu = ib_mtu_int_to_enum(ndev->max_mtu);
 +      attr->active_mtu = ib_mtu_int_to_enum(READ_ONCE(ndev->mtu));
-       attr->phys_state = (netif_running(ndev) && netif_carrier_ok(ndev)) ?
++      attr->state = ib_get_curr_port_state(ndev);
+       attr->phys_state = attr->state == IB_PORT_ACTIVE ?
                IB_PORT_PHYS_STATE_LINK_UP : IB_PORT_PHYS_STATE_DISABLED;
-       attr->state = attr->phys_state == IB_PORT_PHYS_STATE_LINK_UP ?
-               IB_PORT_ACTIVE : IB_PORT_DOWN;
        attr->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_DEVICE_MGMT_SUP;
        /*
         * All zero