backports: move netif_set_real_num_rx_queues() to compat-2.6.37.c
authorHauke Mehrtens <hauke@hauke-m.de>
Sat, 15 Jun 2013 13:17:50 +0000 (15:17 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Wed, 19 Jun 2013 20:22:28 +0000 (22:22 +0200)
netif_set_real_num_rx_queues() was added to kernel version 2.6.37 and
not to kernel 2.6.35 therefore it should also be added to the
corresponding compat-*.c file.

This also adds a missing EXPORT_SYMBOL, documentation and a check.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
backport/compat/compat-2.6.35.c
backport/compat/compat-2.6.37.c

index 86ea5570b81ee86cf3e992470db4c62fcee133d8..e59cdc1cfab0cb943cc52621d36bf361d314c39d 100644 (file)
 #include <linux/uaccess.h>
 #include <net/sch_generic.h>
 
-#if (RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(6,4))
-#ifdef CONFIG_RPS
-int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq)
-{
-       int rc;
-
-       /* we can't update the sysfs object for older kernels */
-       if (dev->reg_state == NETREG_REGISTERED)
-               return -EINVAL;
-       dev->num_rx_queues = rxq;
-       return 0;
-}
-#endif
-#endif
-
 /*
  * Routine to help set real_num_tx_queues. To avoid skbs mapped to queues
  * greater then real_num_tx_queues stale skbs on the qdisc must be flushed.
index 5c6cc7b236c954e7aa37262ca969d1475599bc3c..cc85b1505178da0197f921cfe4094bc737ae54f5 100644 (file)
@@ -357,3 +357,30 @@ void *vzalloc(unsigned long size)
        return buf;
 }
 EXPORT_SYMBOL_GPL(vzalloc);
+
+#if (RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(6,4))
+#ifdef CONFIG_RPS
+/**
+ *     netif_set_real_num_rx_queues - set actual number of RX queues used
+ *     @dev: Network device
+ *     @rxq: Actual number of RX queues
+ *
+ *     This must be called either with the rtnl_lock held or before
+ *     registration of the net device.  Returns 0 on success, or a
+ *     negative error code.  If called before registration, it always
+ *     succeeds.
+ */
+int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq)
+{
+       if (rxq < 1 || rxq > dev->num_rx_queues)
+               return -EINVAL;
+
+       /* we can't update the sysfs object for older kernels */
+       if (dev->reg_state == NETREG_REGISTERED)
+               return -EINVAL;
+       dev->num_rx_queues = rxq;
+       return 0;
+}
+EXPORT_SYMBOL(netif_set_real_num_rx_queues);
+#endif
+#endif