Commit 4c5d283a authored by Sowmini Varadhan's avatar Sowmini Varadhan Committed by David S. Miller

sunvnet: Invoke SET_NETDEV_DEV() to set up the vdev in vnet_new()

`ls /sys/devices/channel-devices/vnet-port-0-0/net' is missing without
this change, and applications like NetworkManager are looking in
sysfs for the information.
Signed-off-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5eb8f289
...@@ -1756,7 +1756,8 @@ static const struct net_device_ops vnet_ops = { ...@@ -1756,7 +1756,8 @@ static const struct net_device_ops vnet_ops = {
#endif #endif
}; };
static struct vnet *vnet_new(const u64 *local_mac) static struct vnet *vnet_new(const u64 *local_mac,
struct vio_dev *vdev)
{ {
struct net_device *dev; struct net_device *dev;
struct vnet *vp; struct vnet *vp;
...@@ -1790,6 +1791,8 @@ static struct vnet *vnet_new(const u64 *local_mac) ...@@ -1790,6 +1791,8 @@ static struct vnet *vnet_new(const u64 *local_mac)
NETIF_F_HW_CSUM | NETIF_F_SG; NETIF_F_HW_CSUM | NETIF_F_SG;
dev->features = dev->hw_features; dev->features = dev->hw_features;
SET_NETDEV_DEV(dev, &vdev->dev);
err = register_netdev(dev); err = register_netdev(dev);
if (err) { if (err) {
pr_err("Cannot register net device, aborting\n"); pr_err("Cannot register net device, aborting\n");
...@@ -1808,7 +1811,8 @@ static struct vnet *vnet_new(const u64 *local_mac) ...@@ -1808,7 +1811,8 @@ static struct vnet *vnet_new(const u64 *local_mac)
return ERR_PTR(err); return ERR_PTR(err);
} }
static struct vnet *vnet_find_or_create(const u64 *local_mac) static struct vnet *vnet_find_or_create(const u64 *local_mac,
struct vio_dev *vdev)
{ {
struct vnet *iter, *vp; struct vnet *iter, *vp;
...@@ -1821,7 +1825,7 @@ static struct vnet *vnet_find_or_create(const u64 *local_mac) ...@@ -1821,7 +1825,7 @@ static struct vnet *vnet_find_or_create(const u64 *local_mac)
} }
} }
if (!vp) if (!vp)
vp = vnet_new(local_mac); vp = vnet_new(local_mac, vdev);
mutex_unlock(&vnet_list_mutex); mutex_unlock(&vnet_list_mutex);
return vp; return vp;
...@@ -1848,7 +1852,8 @@ static void vnet_cleanup(void) ...@@ -1848,7 +1852,8 @@ static void vnet_cleanup(void)
static const char *local_mac_prop = "local-mac-address"; static const char *local_mac_prop = "local-mac-address";
static struct vnet *vnet_find_parent(struct mdesc_handle *hp, static struct vnet *vnet_find_parent(struct mdesc_handle *hp,
u64 port_node) u64 port_node,
struct vio_dev *vdev)
{ {
const u64 *local_mac = NULL; const u64 *local_mac = NULL;
u64 a; u64 a;
...@@ -1869,7 +1874,7 @@ static struct vnet *vnet_find_parent(struct mdesc_handle *hp, ...@@ -1869,7 +1874,7 @@ static struct vnet *vnet_find_parent(struct mdesc_handle *hp,
if (!local_mac) if (!local_mac)
return ERR_PTR(-ENODEV); return ERR_PTR(-ENODEV);
return vnet_find_or_create(local_mac); return vnet_find_or_create(local_mac, vdev);
} }
static struct ldc_channel_config vnet_ldc_cfg = { static struct ldc_channel_config vnet_ldc_cfg = {
...@@ -1923,7 +1928,7 @@ static int vnet_port_probe(struct vio_dev *vdev, const struct vio_device_id *id) ...@@ -1923,7 +1928,7 @@ static int vnet_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
hp = mdesc_grab(); hp = mdesc_grab();
vp = vnet_find_parent(hp, vdev->mp); vp = vnet_find_parent(hp, vdev->mp, vdev);
if (IS_ERR(vp)) { if (IS_ERR(vp)) {
pr_err("Cannot find port parent vnet\n"); pr_err("Cannot find port parent vnet\n");
err = PTR_ERR(vp); err = PTR_ERR(vp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment