diff options
Diffstat (limited to 'drivers/net/tun.c')
| -rw-r--r-- | drivers/net/tun.c | 10 | 
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 63042596f0c..55f3a3e667a 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -149,6 +149,7 @@ static int tun_attach(struct tun_struct *tun, struct file *file)  	tfile->tun = tun;  	tun->tfile = tfile;  	tun->socket.file = file; +	netif_carrier_on(tun->dev);  	dev_hold(tun->dev);  	sock_hold(tun->socket.sk);  	atomic_inc(&tfile->count); @@ -162,6 +163,7 @@ static void __tun_detach(struct tun_struct *tun)  {  	/* Detach from net device */  	netif_tx_lock_bh(tun->dev); +	netif_carrier_off(tun->dev);  	tun->tfile = NULL;  	tun->socket.file = NULL;  	netif_tx_unlock_bh(tun->dev); @@ -1574,12 +1576,6 @@ static void tun_set_msglevel(struct net_device *dev, u32 value)  #endif  } -static u32 tun_get_link(struct net_device *dev) -{ -	struct tun_struct *tun = netdev_priv(dev); -	return !!tun->tfile; -} -  static u32 tun_get_rx_csum(struct net_device *dev)  {  	struct tun_struct *tun = netdev_priv(dev); @@ -1601,7 +1597,7 @@ static const struct ethtool_ops tun_ethtool_ops = {  	.get_drvinfo	= tun_get_drvinfo,  	.get_msglevel	= tun_get_msglevel,  	.set_msglevel	= tun_set_msglevel, -	.get_link	= tun_get_link, +	.get_link	= ethtool_op_get_link,  	.get_rx_csum	= tun_get_rx_csum,  	.set_rx_csum	= tun_set_rx_csum  };  |