]> Pileus Git - ~andy/linux/blobdiff - net/core/rtnetlink.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw
[~andy/linux] / net / core / rtnetlink.c
index 2b325c340b446c13fbe4ce15991678fc9fe327bd..334b930e0de31dd8b4781f31099abafc6695c014 100644 (file)
@@ -615,7 +615,7 @@ nla_put_failure:
 EXPORT_SYMBOL(rtnetlink_put_metrics);
 
 int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst, u32 id,
-                      u32 ts, u32 tsage, long expires, u32 error)
+                      long expires, u32 error)
 {
        struct rta_cacheinfo ci = {
                .rta_lastuse = jiffies_to_clock_t(jiffies - dst->lastuse),
@@ -623,8 +623,6 @@ int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst, u32 id,
                .rta_clntref = atomic_read(&(dst->__refcnt)),
                .rta_error = error,
                .rta_id =  id,
-               .rta_ts = ts,
-               .rta_tsage = tsage,
        };
 
        if (expires)
@@ -773,6 +771,8 @@ static noinline size_t if_nlmsg_size(const struct net_device *dev,
               + nla_total_size(4) /* IFLA_LINK */
               + nla_total_size(4) /* IFLA_MASTER */
               + nla_total_size(4) /* IFLA_PROMISCUITY */
+              + nla_total_size(4) /* IFLA_NUM_TX_QUEUES */
+              + nla_total_size(4) /* IFLA_NUM_RX_QUEUES */
               + nla_total_size(1) /* IFLA_OPERSTATE */
               + nla_total_size(1) /* IFLA_LINKMODE */
               + nla_total_size(ext_filter_mask
@@ -891,6 +891,10 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
            nla_put_u32(skb, IFLA_MTU, dev->mtu) ||
            nla_put_u32(skb, IFLA_GROUP, dev->group) ||
            nla_put_u32(skb, IFLA_PROMISCUITY, dev->promiscuity) ||
+           nla_put_u32(skb, IFLA_NUM_TX_QUEUES, dev->num_tx_queues) ||
+#ifdef CONFIG_RPS
+           nla_put_u32(skb, IFLA_NUM_RX_QUEUES, dev->num_rx_queues) ||
+#endif
            (dev->ifindex != dev->iflink &&
             nla_put_u32(skb, IFLA_LINK, dev->iflink)) ||
            (dev->master &&
@@ -1108,6 +1112,8 @@ const struct nla_policy ifla_policy[IFLA_MAX+1] = {
        [IFLA_AF_SPEC]          = { .type = NLA_NESTED },
        [IFLA_EXT_MASK]         = { .type = NLA_U32 },
        [IFLA_PROMISCUITY]      = { .type = NLA_U32 },
+       [IFLA_NUM_TX_QUEUES]    = { .type = NLA_U32 },
+       [IFLA_NUM_RX_QUEUES]    = { .type = NLA_U32 },
 };
 EXPORT_SYMBOL(ifla_policy);
 
@@ -1626,17 +1632,22 @@ 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 (tb[IFLA_NUM_TX_QUEUES])
+               num_tx_queues = nla_get_u32(tb[IFLA_NUM_TX_QUEUES]);
+       else if (ops->get_num_tx_queues)
+               num_tx_queues = ops->get_num_tx_queues();
+
+       if (tb[IFLA_NUM_RX_QUEUES])
+               num_rx_queues = nla_get_u32(tb[IFLA_NUM_RX_QUEUES]);
+       else 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;
 
@@ -2176,7 +2187,7 @@ skip:
 }
 
 /**
- * ndo_dflt_fdb_dump: default netdevice operation to dump an FDB table.
+ * ndo_dflt_fdb_dump - default netdevice operation to dump an FDB table.
  * @nlh: netlink message header
  * @dev: netdevice
  *