diff options
author | Sowmini Varadhan <sowmini.varadhan@oracle.com> | 2015-09-18 17:47:55 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-09-21 19:28:36 -0400 |
commit | 4c5d283acc997a1bd7bc37cddcf7d284521cffff (patch) | |
tree | f595db8535cd9f373f7302a88689b005600737b2 /drivers/net/ethernet | |
parent | 5eb8f289ac3020a9abad1c3c532ceca83284b6ed (diff) |
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>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r-- | drivers/net/ethernet/sun/sunvnet.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c index 53fe200e0b79..cc106d892e29 100644 --- a/drivers/net/ethernet/sun/sunvnet.c +++ b/drivers/net/ethernet/sun/sunvnet.c | |||
@@ -1756,7 +1756,8 @@ static const struct net_device_ops vnet_ops = { | |||
1756 | #endif | 1756 | #endif |
1757 | }; | 1757 | }; |
1758 | 1758 | ||
1759 | static struct vnet *vnet_new(const u64 *local_mac) | 1759 | static struct vnet *vnet_new(const u64 *local_mac, |
1760 | struct vio_dev *vdev) | ||
1760 | { | 1761 | { |
1761 | struct net_device *dev; | 1762 | struct net_device *dev; |
1762 | struct vnet *vp; | 1763 | struct vnet *vp; |
@@ -1790,6 +1791,8 @@ static struct vnet *vnet_new(const u64 *local_mac) | |||
1790 | NETIF_F_HW_CSUM | NETIF_F_SG; | 1791 | NETIF_F_HW_CSUM | NETIF_F_SG; |
1791 | dev->features = dev->hw_features; | 1792 | dev->features = dev->hw_features; |
1792 | 1793 | ||
1794 | SET_NETDEV_DEV(dev, &vdev->dev); | ||
1795 | |||
1793 | err = register_netdev(dev); | 1796 | err = register_netdev(dev); |
1794 | if (err) { | 1797 | if (err) { |
1795 | pr_err("Cannot register net device, aborting\n"); | 1798 | pr_err("Cannot register net device, aborting\n"); |
@@ -1808,7 +1811,8 @@ err_out_free_dev: | |||
1808 | return ERR_PTR(err); | 1811 | return ERR_PTR(err); |
1809 | } | 1812 | } |
1810 | 1813 | ||
1811 | static struct vnet *vnet_find_or_create(const u64 *local_mac) | 1814 | static struct vnet *vnet_find_or_create(const u64 *local_mac, |
1815 | struct vio_dev *vdev) | ||
1812 | { | 1816 | { |
1813 | struct vnet *iter, *vp; | 1817 | struct vnet *iter, *vp; |
1814 | 1818 | ||
@@ -1821,7 +1825,7 @@ static struct vnet *vnet_find_or_create(const u64 *local_mac) | |||
1821 | } | 1825 | } |
1822 | } | 1826 | } |
1823 | if (!vp) | 1827 | if (!vp) |
1824 | vp = vnet_new(local_mac); | 1828 | vp = vnet_new(local_mac, vdev); |
1825 | mutex_unlock(&vnet_list_mutex); | 1829 | mutex_unlock(&vnet_list_mutex); |
1826 | 1830 | ||
1827 | return vp; | 1831 | return vp; |
@@ -1848,7 +1852,8 @@ static void vnet_cleanup(void) | |||
1848 | static const char *local_mac_prop = "local-mac-address"; | 1852 | static const char *local_mac_prop = "local-mac-address"; |
1849 | 1853 | ||
1850 | static struct vnet *vnet_find_parent(struct mdesc_handle *hp, | 1854 | static struct vnet *vnet_find_parent(struct mdesc_handle *hp, |
1851 | u64 port_node) | 1855 | u64 port_node, |
1856 | struct vio_dev *vdev) | ||
1852 | { | 1857 | { |
1853 | const u64 *local_mac = NULL; | 1858 | const u64 *local_mac = NULL; |
1854 | u64 a; | 1859 | u64 a; |
@@ -1869,7 +1874,7 @@ static struct vnet *vnet_find_parent(struct mdesc_handle *hp, | |||
1869 | if (!local_mac) | 1874 | if (!local_mac) |
1870 | return ERR_PTR(-ENODEV); | 1875 | return ERR_PTR(-ENODEV); |
1871 | 1876 | ||
1872 | return vnet_find_or_create(local_mac); | 1877 | return vnet_find_or_create(local_mac, vdev); |
1873 | } | 1878 | } |
1874 | 1879 | ||
1875 | static struct ldc_channel_config vnet_ldc_cfg = { | 1880 | 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 | 1928 | ||
1924 | hp = mdesc_grab(); | 1929 | hp = mdesc_grab(); |
1925 | 1930 | ||
1926 | vp = vnet_find_parent(hp, vdev->mp); | 1931 | vp = vnet_find_parent(hp, vdev->mp, vdev); |
1927 | if (IS_ERR(vp)) { | 1932 | if (IS_ERR(vp)) { |
1928 | pr_err("Cannot find port parent vnet\n"); | 1933 | pr_err("Cannot find port parent vnet\n"); |
1929 | err = PTR_ERR(vp); | 1934 | err = PTR_ERR(vp); |