rtnl: allow to specify different num for rx and tx queue count
authorJiri Pirko <jiri@resnulli.us>
Fri, 20 Jul 2012 02:28:47 +0000 (02:28 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Jul 2012 18:06:59 +0000 (11:06 -0700)
Also cut out unused function parameters and possible err in return
value.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c
include/net/rtnetlink.h
net/core/rtnetlink.c

index 3960b1b2617814f7c32f21a6ec99e2aa39957e1a..f41ddc2d48be71d649f8b178466f46767f5921d1 100644 (file)
@@ -4845,17 +4845,19 @@ static int bond_validate(struct nlattr *tb[], struct nlattr *data[])
        return 0;
 }
 
-static int bond_get_tx_queues(struct net *net, struct nlattr *tb[])
+static unsigned int bond_get_num_tx_queues(void)
 {
        return tx_queues;
 }
 
 static struct rtnl_link_ops bond_link_ops __read_mostly = {
-       .kind           = "bond",
-       .priv_size      = sizeof(struct bonding),
-       .setup          = bond_setup,
-       .validate       = bond_validate,
-       .get_tx_queues  = bond_get_tx_queues,
+       .kind                   = "bond",
+       .priv_size              = sizeof(struct bonding),
+       .setup                  = bond_setup,
+       .validate               = bond_validate,
+       .get_num_tx_queues      = bond_get_num_tx_queues,
+       .get_num_rx_queues      = bond_get_num_tx_queues, /* Use the same number
+                                                            as for TX queues */
 };
 
 /* Create a new bond based on the specified name and bonding parameters.
index bbcfd09934324ba95f05f013d729d579a8e4410d..6b00c4fc4291f1704e439e4a5db217b6f0a3db2d 100644 (file)
@@ -44,8 +44,10 @@ static inline int rtnl_msg_family(const struct nlmsghdr *nlh)
  *     @get_xstats_size: Function to calculate required room for dumping device
  *                       specific statistics
  *     @fill_xstats: Function to dump device specific statistics
- *     @get_tx_queues: Function to determine number of transmit queues to create when
- *                     creating a new device.
+ *     @get_num_tx_queues: Function to determine number of transmit queues
+ *                         to create when creating a new device.
+ *     @get_num_rx_queues: Function to determine number of receive queues
+ *                         to create when creating a new device.
  */
 struct rtnl_link_ops {
        struct list_head        list;
@@ -77,8 +79,8 @@ struct rtnl_link_ops {
        size_t                  (*get_xstats_size)(const struct net_device *dev);
        int                     (*fill_xstats)(struct sk_buff *skb,
                                               const struct net_device *dev);
-       int                     (*get_tx_queues)(struct net *net,
-                                                struct nlattr *tb[]);
+       unsigned int            (*get_num_tx_queues)(void);
+       unsigned int            (*get_num_rx_queues)(void);
 };
 
 extern int     __rtnl_link_register(struct rtnl_link_ops *ops);
index 045db8ad87c83180acddc9c8b0a80ab6b6aa1876..db5a8ad8a79ba694fb9934cebf99423327e69d0a 100644 (file)
@@ -1624,17 +1624,17 @@ struct net_device *rtnl_create_link(struct net *src_net, struct net *net,
 {
        int err;
        struct net_device *dev;
-       unsigned int num_queues = 1;
+       unsigned int num_tx_queues = 1;
+       unsigned int num_rx_queues = 1;
 
-       if (ops->get_tx_queues) {
-               err = ops->get_tx_queues(src_net, tb);
-               if (err < 0)
-                       goto err;
-               num_queues = err;
-       }
+       if (ops->get_num_tx_queues)
+               num_tx_queues = ops->get_num_tx_queues();
+       if (ops->get_num_rx_queues)
+               num_rx_queues = ops->get_num_rx_queues();
 
        err = -ENOMEM;
-       dev = alloc_netdev_mq(ops->priv_size, ifname, ops->setup, num_queues);
+       dev = alloc_netdev_mqs(ops->priv_size, ifname, ops->setup,
+                              num_tx_queues, num_rx_queues);
        if (!dev)
                goto err;