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: Sowmini Varadhan <sowmini.varadhan@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5eb8f289ac
commit
4c5d283acc
|
@ -1756,7 +1756,8 @@ static const struct net_device_ops vnet_ops = {
|
|||
#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 vnet *vp;
|
||||
|
@ -1790,6 +1791,8 @@ static struct vnet *vnet_new(const u64 *local_mac)
|
|||
NETIF_F_HW_CSUM | NETIF_F_SG;
|
||||
dev->features = dev->hw_features;
|
||||
|
||||
SET_NETDEV_DEV(dev, &vdev->dev);
|
||||
|
||||
err = register_netdev(dev);
|
||||
if (err) {
|
||||
pr_err("Cannot register net device, aborting\n");
|
||||
|
@ -1808,7 +1811,8 @@ err_out_free_dev:
|
|||
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;
|
||||
|
||||
|
@ -1821,7 +1825,7 @@ static struct vnet *vnet_find_or_create(const u64 *local_mac)
|
|||
}
|
||||
}
|
||||
if (!vp)
|
||||
vp = vnet_new(local_mac);
|
||||
vp = vnet_new(local_mac, vdev);
|
||||
mutex_unlock(&vnet_list_mutex);
|
||||
|
||||
return vp;
|
||||
|
@ -1848,7 +1852,8 @@ static void vnet_cleanup(void)
|
|||
static const char *local_mac_prop = "local-mac-address";
|
||||
|
||||
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;
|
||||
u64 a;
|
||||
|
@ -1869,7 +1874,7 @@ static struct vnet *vnet_find_parent(struct mdesc_handle *hp,
|
|||
if (!local_mac)
|
||||
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 = {
|
||||
|
@ -1923,7 +1928,7 @@ static int vnet_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
|
|||
|
||||
hp = mdesc_grab();
|
||||
|
||||
vp = vnet_find_parent(hp, vdev->mp);
|
||||
vp = vnet_find_parent(hp, vdev->mp, vdev);
|
||||
if (IS_ERR(vp)) {
|
||||
pr_err("Cannot find port parent vnet\n");
|
||||
err = PTR_ERR(vp);
|
||||
|
|
Loading…
Reference in New Issue