|
@@ -744,10 +744,23 @@ static void rx_queue_release(struct kobject *kobj)
|
|
|
dev_put(queue->dev);
|
|
|
}
|
|
|
|
|
|
+static const void *rx_queue_namespace(struct kobject *kobj)
|
|
|
+{
|
|
|
+ struct netdev_rx_queue *queue = to_rx_queue(kobj);
|
|
|
+ struct device *dev = &queue->dev->dev;
|
|
|
+ const void *ns = NULL;
|
|
|
+
|
|
|
+ if (dev->class && dev->class->ns_type)
|
|
|
+ ns = dev->class->namespace(dev);
|
|
|
+
|
|
|
+ return ns;
|
|
|
+}
|
|
|
+
|
|
|
static struct kobj_type rx_queue_ktype = {
|
|
|
.sysfs_ops = &rx_queue_sysfs_ops,
|
|
|
.release = rx_queue_release,
|
|
|
.default_attrs = rx_queue_default_attrs,
|
|
|
+ .namespace = rx_queue_namespace
|
|
|
};
|
|
|
|
|
|
static int rx_queue_add_kobject(struct net_device *net, int index)
|
|
@@ -1093,10 +1106,23 @@ static void netdev_queue_release(struct kobject *kobj)
|
|
|
dev_put(queue->dev);
|
|
|
}
|
|
|
|
|
|
+static const void *netdev_queue_namespace(struct kobject *kobj)
|
|
|
+{
|
|
|
+ struct netdev_queue *queue = to_netdev_queue(kobj);
|
|
|
+ struct device *dev = &queue->dev->dev;
|
|
|
+ const void *ns = NULL;
|
|
|
+
|
|
|
+ if (dev->class && dev->class->ns_type)
|
|
|
+ ns = dev->class->namespace(dev);
|
|
|
+
|
|
|
+ return ns;
|
|
|
+}
|
|
|
+
|
|
|
static struct kobj_type netdev_queue_ktype = {
|
|
|
.sysfs_ops = &netdev_queue_sysfs_ops,
|
|
|
.release = netdev_queue_release,
|
|
|
.default_attrs = netdev_queue_default_attrs,
|
|
|
+ .namespace = netdev_queue_namespace,
|
|
|
};
|
|
|
|
|
|
static int netdev_queue_add_kobject(struct net_device *net, int index)
|