Patch "IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces" has been added to the 4.19-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces

to the 4.19-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ib-ipoib-fix-queue-count-inconsistency-for-pkey-chil.patch
and it can be found in the queue-4.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit e87afb78c0a476b71872129ab21473b8d5c4243c
Author: Dragos Tatulea <dtatulea@xxxxxxxxxx>
Date:   Thu Dec 8 09:52:54 2022 +0200

    IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces
    
    [ Upstream commit dbc94a0fb81771a38733c0e8f2ea8c4fa6934dc1 ]
    
    There are 2 ways to create IPoIB PKEY child interfaces:
    1) Writing a PKEY to /sys/class/net/<ib parent interface>/create_child.
    2) Using netlink with iproute.
    
    While with sysfs the child interface has the same number of tx and
    rx queues as the parent, with netlink there will always be 1 tx
    and 1 rx queue for the child interface. That's because the
    get_num_tx/rx_queues() netlink ops are missing and the default value
    of 1 is taken for the number of queues (in rtnl_create_link()).
    
    This change adds the get_num_tx/rx_queues() ops which allows for
    interfaces with multiple queues to be created over netlink. This
    constant only represents the max number of tx and rx queues on that
    net device.
    
    Fixes: 9baa0b036410 ("IB/ipoib: Add rtnl_link_ops support")
    Signed-off-by: Dragos Tatulea <dtatulea@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/f4a42c8aa43c02d5ae5559a60c3e5e0f18c82531.1670485816.git.leonro@xxxxxxxxxx
    Signed-off-by: Leon Romanovsky <leon@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_netlink.c b/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
index d4d553a51fa9..285cb28bf14a 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
@@ -42,6 +42,11 @@ static const struct nla_policy ipoib_policy[IFLA_IPOIB_MAX + 1] = {
 	[IFLA_IPOIB_UMCAST]	= { .type = NLA_U16 },
 };
 
+static unsigned int ipoib_get_max_num_queues(void)
+{
+	return min_t(unsigned int, num_possible_cpus(), 128);
+}
+
 static int ipoib_fill_info(struct sk_buff *skb, const struct net_device *dev)
 {
 	struct ipoib_dev_priv *priv = ipoib_priv(dev);
@@ -147,6 +152,8 @@ static struct rtnl_link_ops ipoib_link_ops __read_mostly = {
 	.changelink	= ipoib_changelink,
 	.get_size	= ipoib_get_size,
 	.fill_info	= ipoib_fill_info,
+	.get_num_rx_queues = ipoib_get_max_num_queues,
+	.get_num_tx_queues = ipoib_get_max_num_queues,
 };
 
 int __init ipoib_netlink_init(void)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux