Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
52e6882
RDMA/cxgb4: Notify rdma stack for IB_EVENT_QP_LAST_WQE_REACHED event
PlaidCat Oct 11, 2025
7697699
smb: client: allow parsing zero-length AV pairs
PlaidCat Oct 11, 2025
54c4fce
smb: client: fix session setup against servers that require SPN
PlaidCat Oct 11, 2025
8b03690
nfsd: don't ignore the return code of svc_proc_register()
PlaidCat Oct 11, 2025
b5f21fa
sctp: linearize cloned gso packets in sctp_rcv
PlaidCat Oct 11, 2025
d5400ef
hv_netvsc: Link queues to NAPIs
PlaidCat Oct 11, 2025
2631692
RDMA/mana_ib: Allocate PAGE aligned doorbell index
PlaidCat Oct 11, 2025
d185128
net: mana: Support holes in device list reply msg
PlaidCat Oct 11, 2025
e52c63f
RDMA/mana_ib: Query feature_flags bitmask from FW
PlaidCat Oct 11, 2025
4e09c90
RDMA/mana_ib: request error CQEs when supported
PlaidCat Oct 11, 2025
12f3773
net: mana: Allow tso_max_size to go up-to GSO_MAX_SIZE
PlaidCat Oct 11, 2025
43ca2a0
hv_netvsc: Use VF's tso_max_size value when data path is VF
PlaidCat Oct 11, 2025
17ef201
net: mana: Add debug logs in MANA network driver
PlaidCat Oct 11, 2025
6253867
RDMA/mana_ib: Ensure variable err is initialized
PlaidCat Oct 11, 2025
8f0db56
net: mana: Change the function signature of mana_get_primary_netdev_rcu
PlaidCat Oct 11, 2025
f96450e
RDMA/mana_ib: Handle net event for pointing to the current netdev
PlaidCat Oct 11, 2025
885a5df
net: mana: Add metadata support for xdp mode
PlaidCat Oct 11, 2025
ea2247f
net: mana: Switch to page pool for jumbo frames
PlaidCat Oct 11, 2025
4be1465
net: mana: Add support for Multi Vports on Bare metal
PlaidCat Oct 11, 2025
c80ad53
net: mana: Record doorbell physical address in PF mode
PlaidCat Oct 11, 2025
69a343b
hv_netvsc: Set VF priv_flags to IFF_NO_ADDRCONF before open to preven…
PlaidCat Oct 11, 2025
bc28fd4
net: mana: Expose additional hardware counters for drop and TC via et…
PlaidCat Oct 11, 2025
193ac9c
net: mana: Add handler for hardware servicing events
PlaidCat Oct 11, 2025
ac3647b
net: mana: Handle unsupported HWC commands
PlaidCat Oct 11, 2025
10dec71
net: mana: Set tx_packets to post gso processing packet count
PlaidCat Oct 11, 2025
8285c64
net: mana: Handle Reset Request from MANA NIC
PlaidCat Oct 11, 2025
f8adaac
RDMA/mana_ib: Fix DSCP value in modify QP
PlaidCat Oct 11, 2025
cb66817
hv_netvsc: Fix panic during namespace deletion with VF
PlaidCat Oct 11, 2025
352fd0c
Rebuild rocky10_0 with kernel-6.12.0-55.38.1.el10_0
PlaidCat Oct 11, 2025
877959e
cxl: core/region - ignore interleave granularity when ways=1
PlaidCat Oct 14, 2025
5b4fd69
HID: simplify snto32()
PlaidCat Oct 14, 2025
bdd853b
HID: stop exporting hid_snto32()
PlaidCat Oct 14, 2025
e7ebfbb
HID: core: Harden s32ton() against conversion to 0 bits
PlaidCat Oct 14, 2025
e5e168e
ALSA: usb-audio: Validate UAC3 cluster segment descriptors
PlaidCat Oct 14, 2025
61b035f
ALSA: usb-audio: Fix size validation in convert_chmap_v3()
PlaidCat Oct 14, 2025
1e3ceda
ALSA: usb-audio: Validate UAC3 power domain descriptors, too
PlaidCat Oct 14, 2025
793eed6
wifi: ath12k: Decrement TID on RX peer frag setup error handling
PlaidCat Oct 14, 2025
6426215
Rebuild rocky10_0 with kernel-6.12.0-55.39.1.el10_0
PlaidCat Oct 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
2 changes: 1 addition & 1 deletion Makefile.rhelver
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ RHEL_MINOR = 0
#
# Use this spot to avoid future merge conflicts.
# Do not trim this comment.
RHEL_RELEASE = 55.37.1
RHEL_RELEASE = 55.39.1

#
# RHEL_REBASE_NUM
Expand Down
127 changes: 127 additions & 0 deletions ciq/ciq_backports/kernel-6.12.0-55.38.1.el10_0/a8445cfe.failed
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
net: mana: Change the function signature of mana_get_primary_netdev_rcu

jira LE-4365
Rebuild_History Non-Buildable kernel-6.12.0-55.38.1.el10_0
commit-author Long Li <longli@microsoft.com>
commit a8445cfec101c42e9d64cdb2dac13973b22c205c
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-55.38.1.el10_0/a8445cfe.failed

Change mana_get_primary_netdev_rcu() to mana_get_primary_netdev(), and
return the ndev with refcount held. The caller is responsible for dropping
the refcount.

Also drop the check for IFF_SLAVE as it is not necessary if the upper
device is present.

Signed-off-by: Long Li <longli@microsoft.com>
Link: https://patch.msgid.link/1741821332-9392-1-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
(cherry picked from commit a8445cfec101c42e9d64cdb2dac13973b22c205c)
Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
# drivers/infiniband/hw/mana/mana_ib.h
# drivers/net/ethernet/microsoft/mana/mana_en.c
diff --cc drivers/infiniband/hw/mana/mana_ib.h
index c3c9dc1c8d8b,81a7e7474462..000000000000
--- a/drivers/infiniband/hw/mana/mana_ib.h
+++ b/drivers/infiniband/hw/mana/mana_ib.h
@@@ -65,6 -77,8 +65,11 @@@ struct mana_ib_dev
struct gdma_queue **eqs;
struct xarray qp_table_wq;
struct mana_ib_adapter_caps adapter_caps;
++<<<<<<< HEAD
++=======
+ struct dma_pool *av_pool;
+ netdevice_tracker dev_tracker;
++>>>>>>> a8445cfec101 (net: mana: Change the function signature of mana_get_primary_netdev_rcu)
};

struct mana_ib_wq {
diff --cc drivers/net/ethernet/microsoft/mana/mana_en.c
index ac16342dfa35,4e870b11f946..000000000000
--- a/drivers/net/ethernet/microsoft/mana/mana_en.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
@@@ -3171,24 -3129,29 +3171,34 @@@ out
gd->driver_data = NULL;
gd->gdma_context = NULL;
kfree(ac);
+ dev_dbg(dev, "%s succeeded\n", __func__);
}

- struct net_device *mana_get_primary_netdev_rcu(struct mana_context *ac, u32 port_index)
+ struct net_device *mana_get_primary_netdev(struct mana_context *ac,
+ u32 port_index,
+ netdevice_tracker *tracker)
{
struct net_device *ndev;

if (port_index >= ac->num_ports)
return NULL;

- /* When mana is used in netvsc, the upper netdevice should be returned. */
- if (ac->ports[port_index]->flags & IFF_SLAVE)
- ndev = netdev_master_upper_dev_get_rcu(ac->ports[port_index]);
- else
+ rcu_read_lock();
+
+ /* If mana is used in netvsc, the upper netdevice should be returned. */
+ ndev = netdev_master_upper_dev_get_rcu(ac->ports[port_index]);
+
+ /* If there is no upper device, use the parent Ethernet device */
+ if (!ndev)
ndev = ac->ports[port_index];

+ netdev_hold(ndev, tracker, GFP_ATOMIC);
+ rcu_read_unlock();
+
return ndev;
}
++<<<<<<< HEAD
+EXPORT_SYMBOL_NS(mana_get_primary_netdev_rcu, NET_MANA);
++=======
+ EXPORT_SYMBOL_NS(mana_get_primary_netdev, "NET_MANA");
++>>>>>>> a8445cfec101 (net: mana: Change the function signature of mana_get_primary_netdev_rcu)
diff --git a/drivers/infiniband/hw/mana/device.c b/drivers/infiniband/hw/mana/device.c
index 7ac01918ef7c..7a1d5c250965 100644
--- a/drivers/infiniband/hw/mana/device.c
+++ b/drivers/infiniband/hw/mana/device.c
@@ -84,10 +84,8 @@ static int mana_ib_probe(struct auxiliary_device *adev,
dev->ib_dev.num_comp_vectors = mdev->gdma_context->max_num_queues;
dev->ib_dev.dev.parent = mdev->gdma_context->dev;

- rcu_read_lock(); /* required to get primary netdev */
- ndev = mana_get_primary_netdev_rcu(mc, 0);
+ ndev = mana_get_primary_netdev(mc, 0, &dev->dev_tracker);
if (!ndev) {
- rcu_read_unlock();
ret = -ENODEV;
ibdev_err(&dev->ib_dev, "Failed to get netdev for IB port 1");
goto free_ib_device;
@@ -95,7 +93,8 @@ static int mana_ib_probe(struct auxiliary_device *adev,
ether_addr_copy(mac_addr, ndev->dev_addr);
addrconf_addr_eui48((u8 *)&dev->ib_dev.node_guid, ndev->dev_addr);
ret = ib_device_set_netdev(&dev->ib_dev, ndev, 1);
- rcu_read_unlock();
+ /* mana_get_primary_netdev() returns ndev with refcount held */
+ netdev_put(ndev, &dev->dev_tracker);
if (ret) {
ibdev_err(&dev->ib_dev, "Failed to set ib netdev, ret %d", ret);
goto free_ib_device;
* Unmerged path drivers/infiniband/hw/mana/mana_ib.h
* Unmerged path drivers/net/ethernet/microsoft/mana/mana_en.c
diff --git a/include/net/mana/mana.h b/include/net/mana/mana.h
index 0d00b24eacaf..0f78065de8fe 100644
--- a/include/net/mana/mana.h
+++ b/include/net/mana/mana.h
@@ -827,5 +827,7 @@ int mana_cfg_vport(struct mana_port_context *apc, u32 protection_dom_id,
u32 doorbell_pg_id);
void mana_uncfg_vport(struct mana_port_context *apc);

-struct net_device *mana_get_primary_netdev_rcu(struct mana_context *ac, u32 port_index);
+struct net_device *mana_get_primary_netdev(struct mana_context *ac,
+ u32 port_index,
+ netdevice_tracker *tracker);
#endif /* _MANA_H */
109 changes: 109 additions & 0 deletions ciq/ciq_backports/kernel-6.12.0-55.38.1.el10_0/bee35b71.failed
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
RDMA/mana_ib: Handle net event for pointing to the current netdev

jira LE-4365
Rebuild_History Non-Buildable kernel-6.12.0-55.38.1.el10_0
commit-author Long Li <longli@microsoft.com>
commit bee35b7161aaaed9831e2f14876c374b9c566952
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-55.38.1.el10_0/bee35b71.failed

When running under Hyper-V, the master device to the RDMA device is always
bonded to this RDMA device. This is not user-configurable.

The master device can be unbind/bind from the kernel. During those events,
the RDMA device should set to the current netdev to reflect the change of
master device from those events.

Signed-off-by: Long Li <longli@microsoft.com>
Link: https://patch.msgid.link/1741821332-9392-2-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
(cherry picked from commit bee35b7161aaaed9831e2f14876c374b9c566952)
Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
# drivers/infiniband/hw/mana/device.c
# drivers/infiniband/hw/mana/mana_ib.h
diff --cc drivers/infiniband/hw/mana/device.c
index 7ac01918ef7c,b31089320aa5..000000000000
--- a/drivers/infiniband/hw/mana/device.c
+++ b/drivers/infiniband/hw/mana/device.c
@@@ -51,6 -60,43 +51,46 @@@ static const struct ib_device_ops mana_
ib_ind_table),
};

++<<<<<<< HEAD
++=======
+ static const struct ib_device_ops mana_ib_stats_ops = {
+ .alloc_hw_port_stats = mana_ib_alloc_hw_port_stats,
+ .get_hw_stats = mana_ib_get_hw_stats,
+ };
+
+ static int mana_ib_netdev_event(struct notifier_block *this,
+ unsigned long event, void *ptr)
+ {
+ struct mana_ib_dev *dev = container_of(this, struct mana_ib_dev, nb);
+ struct net_device *event_dev = netdev_notifier_info_to_dev(ptr);
+ struct gdma_context *gc = dev->gdma_dev->gdma_context;
+ struct mana_context *mc = gc->mana.driver_data;
+ struct net_device *ndev;
+
+ /* Only process events from our parent device */
+ if (event_dev != mc->ports[0])
+ return NOTIFY_DONE;
+
+ switch (event) {
+ case NETDEV_CHANGEUPPER:
+ ndev = mana_get_primary_netdev(mc, 0, &dev->dev_tracker);
+ /*
+ * RDMA core will setup GID based on updated netdev.
+ * It's not possible to race with the core as rtnl lock is being
+ * held.
+ */
+ ib_device_set_netdev(&dev->ib_dev, ndev, 1);
+
+ /* mana_get_primary_netdev() returns ndev with refcount held */
+ netdev_put(ndev, &dev->dev_tracker);
+
+ return NOTIFY_OK;
+ default:
+ return NOTIFY_DONE;
+ }
+ }
+
++>>>>>>> bee35b7161aa (RDMA/mana_ib: Handle net event for pointing to the current netdev)
static int mana_ib_probe(struct auxiliary_device *adev,
const struct auxiliary_device_id *id)
{
@@@ -113,9 -166,11 +161,9 @@@
if (ret) {
ibdev_err(&dev->ib_dev, "Failed to query device caps, ret %d",
ret);
- goto deregister_device;
+ goto deregister_net_notifier;
}

- ib_set_device_ops(&dev->ib_dev, &mana_ib_stats_ops);
-
ret = mana_ib_create_eqs(dev);
if (ret) {
ibdev_err(&dev->ib_dev, "Failed to create EQs, ret %d", ret);
diff --cc drivers/infiniband/hw/mana/mana_ib.h
index c3c9dc1c8d8b,6903946677e5..000000000000
--- a/drivers/infiniband/hw/mana/mana_ib.h
+++ b/drivers/infiniband/hw/mana/mana_ib.h
@@@ -65,6 -77,9 +65,12 @@@ struct mana_ib_dev
struct gdma_queue **eqs;
struct xarray qp_table_wq;
struct mana_ib_adapter_caps adapter_caps;
++<<<<<<< HEAD
++=======
+ struct dma_pool *av_pool;
+ netdevice_tracker dev_tracker;
+ struct notifier_block nb;
++>>>>>>> bee35b7161aa (RDMA/mana_ib: Handle net event for pointing to the current netdev)
};

struct mana_ib_wq {
* Unmerged path drivers/infiniband/hw/mana/device.c
* Unmerged path drivers/infiniband/hw/mana/mana_ib.h
Loading