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
|
#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)
|
||||||
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 @@ err_out_free_dev:
|
||||||
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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)
|
||||||
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,
|
||||||
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)
|
||||||
|
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue