diff options
author | Jiri Pirko <jiri@resnulli.us> | 2012-07-19 22:28:47 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-20 14:06:59 -0400 |
commit | d40156aa5ecbd51fed932ed4813df82b56e5ff4d (patch) | |
tree | 34b9d6b16ab469bde1998a20c9b26b9388578bd9 | |
parent | ee6ae1a1d58c70fc864bc777a36be56b0880ebff (diff) |
rtnl: allow to specify different num for rx and tx queue count
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>
-rw-r--r-- | drivers/net/bonding/bond_main.c | 14 | ||||
-rw-r--r-- | include/net/rtnetlink.h | 10 | ||||
-rw-r--r-- | net/core/rtnetlink.c | 16 |
3 files changed, 22 insertions, 18 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 3960b1b26178..f41ddc2d48be 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -4845,17 +4845,19 @@ static int bond_validate(struct nlattr *tb[], struct nlattr *data[]) | |||
4845 | return 0; | 4845 | return 0; |
4846 | } | 4846 | } |
4847 | 4847 | ||
4848 | static int bond_get_tx_queues(struct net *net, struct nlattr *tb[]) | 4848 | static unsigned int bond_get_num_tx_queues(void) |
4849 | { | 4849 | { |
4850 | return tx_queues; | 4850 | return tx_queues; |
4851 | } | 4851 | } |
4852 | 4852 | ||
4853 | static struct rtnl_link_ops bond_link_ops __read_mostly = { | 4853 | static struct rtnl_link_ops bond_link_ops __read_mostly = { |
4854 | .kind = "bond", | 4854 | .kind = "bond", |
4855 | .priv_size = sizeof(struct bonding), | 4855 | .priv_size = sizeof(struct bonding), |
4856 | .setup = bond_setup, | 4856 | .setup = bond_setup, |
4857 | .validate = bond_validate, | 4857 | .validate = bond_validate, |
4858 | .get_tx_queues = bond_get_tx_queues, | 4858 | .get_num_tx_queues = bond_get_num_tx_queues, |
4859 | .get_num_rx_queues = bond_get_num_tx_queues, /* Use the same number | ||
4860 | as for TX queues */ | ||
4859 | }; | 4861 | }; |
4860 | 4862 | ||
4861 | /* Create a new bond based on the specified name and bonding parameters. | 4863 | /* Create a new bond based on the specified name and bonding parameters. |
diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h index bbcfd0993432..6b00c4fc4291 100644 --- a/include/net/rtnetlink.h +++ b/include/net/rtnetlink.h | |||
@@ -44,8 +44,10 @@ static inline int rtnl_msg_family(const struct nlmsghdr *nlh) | |||
44 | * @get_xstats_size: Function to calculate required room for dumping device | 44 | * @get_xstats_size: Function to calculate required room for dumping device |
45 | * specific statistics | 45 | * specific statistics |
46 | * @fill_xstats: Function to dump device specific statistics | 46 | * @fill_xstats: Function to dump device specific statistics |
47 | * @get_tx_queues: Function to determine number of transmit queues to create when | 47 | * @get_num_tx_queues: Function to determine number of transmit queues |
48 | * creating a new device. | 48 | * to create when creating a new device. |
49 | * @get_num_rx_queues: Function to determine number of receive queues | ||
50 | * to create when creating a new device. | ||
49 | */ | 51 | */ |
50 | struct rtnl_link_ops { | 52 | struct rtnl_link_ops { |
51 | struct list_head list; | 53 | struct list_head list; |
@@ -77,8 +79,8 @@ struct rtnl_link_ops { | |||
77 | size_t (*get_xstats_size)(const struct net_device *dev); | 79 | size_t (*get_xstats_size)(const struct net_device *dev); |
78 | int (*fill_xstats)(struct sk_buff *skb, | 80 | int (*fill_xstats)(struct sk_buff *skb, |
79 | const struct net_device *dev); | 81 | const struct net_device *dev); |
80 | int (*get_tx_queues)(struct net *net, | 82 | unsigned int (*get_num_tx_queues)(void); |
81 | struct nlattr *tb[]); | 83 | unsigned int (*get_num_rx_queues)(void); |
82 | }; | 84 | }; |
83 | 85 | ||
84 | extern int __rtnl_link_register(struct rtnl_link_ops *ops); | 86 | extern int __rtnl_link_register(struct rtnl_link_ops *ops); |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 045db8ad87c8..db5a8ad8a79b 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -1624,17 +1624,17 @@ struct net_device *rtnl_create_link(struct net *src_net, struct net *net, | |||
1624 | { | 1624 | { |
1625 | int err; | 1625 | int err; |
1626 | struct net_device *dev; | 1626 | struct net_device *dev; |
1627 | unsigned int num_queues = 1; | 1627 | unsigned int num_tx_queues = 1; |
1628 | unsigned int num_rx_queues = 1; | ||
1628 | 1629 | ||
1629 | if (ops->get_tx_queues) { | 1630 | if (ops->get_num_tx_queues) |
1630 | err = ops->get_tx_queues(src_net, tb); | 1631 | num_tx_queues = ops->get_num_tx_queues(); |
1631 | if (err < 0) | 1632 | if (ops->get_num_rx_queues) |
1632 | goto err; | 1633 | num_rx_queues = ops->get_num_rx_queues(); |
1633 | num_queues = err; | ||
1634 | } | ||
1635 | 1634 | ||
1636 | err = -ENOMEM; | 1635 | err = -ENOMEM; |
1637 | dev = alloc_netdev_mq(ops->priv_size, ifname, ops->setup, num_queues); | 1636 | dev = alloc_netdev_mqs(ops->priv_size, ifname, ops->setup, |
1637 | num_tx_queues, num_rx_queues); | ||
1638 | if (!dev) | 1638 | if (!dev) |
1639 | goto err; | 1639 | goto err; |
1640 | 1640 | ||