diff options
Diffstat (limited to 'drivers/net/wwan/iosm/iosm_ipc_wwan.c')
| -rw-r--r-- | drivers/net/wwan/iosm/iosm_ipc_wwan.c | 13 | 
1 files changed, 9 insertions, 4 deletions
| diff --git a/drivers/net/wwan/iosm/iosm_ipc_wwan.c b/drivers/net/wwan/iosm/iosm_ipc_wwan.c index c999c64001f4..b571d9cedba4 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_wwan.c +++ b/drivers/net/wwan/iosm/iosm_ipc_wwan.c @@ -107,6 +107,7 @@ static int ipc_wwan_link_transmit(struct sk_buff *skb,  {  	struct iosm_netdev_priv *priv = wwan_netdev_drvpriv(netdev);  	struct iosm_wwan *ipc_wwan = priv->ipc_wwan; +	unsigned int len = skb->len;  	int if_id = priv->if_id;  	int ret; @@ -123,6 +124,8 @@ static int ipc_wwan_link_transmit(struct sk_buff *skb,  	/* Return code of zero is success */  	if (ret == 0) { +		netdev->stats.tx_packets++; +		netdev->stats.tx_bytes += len;  		ret = NETDEV_TX_OK;  	} else if (ret == -EBUSY) {  		ret = NETDEV_TX_BUSY; @@ -140,7 +143,8 @@ exit:  			ret);  	dev_kfree_skb_any(skb); -	return ret; +	netdev->stats.tx_dropped++; +	return NETDEV_TX_OK;  }  /* Ops structure for wwan net link */ @@ -158,6 +162,7 @@ static void ipc_wwan_setup(struct net_device *iosm_dev)  	iosm_dev->priv_flags |= IFF_NO_QUEUE;  	iosm_dev->type = ARPHRD_NONE; +	iosm_dev->mtu = ETH_DATA_LEN;  	iosm_dev->min_mtu = ETH_MIN_MTU;  	iosm_dev->max_mtu = ETH_MAX_MTU; @@ -223,7 +228,7 @@ static void ipc_wwan_dellink(void *ctxt, struct net_device *dev,  	RCU_INIT_POINTER(ipc_wwan->sub_netlist[if_id], NULL);  	/* unregistering includes synchronize_net() */ -	unregister_netdevice(dev); +	unregister_netdevice_queue(dev, head);  unlock:  	mutex_unlock(&ipc_wwan->if_mutex); @@ -252,8 +257,8 @@ int ipc_wwan_receive(struct iosm_wwan *ipc_wwan, struct sk_buff *skb_arg,  	skb->pkt_type = PACKET_HOST; -	if (if_id < (IP_MUX_SESSION_START - 1) || -	    if_id > (IP_MUX_SESSION_END - 1)) { +	if (if_id < IP_MUX_SESSION_START || +	    if_id > IP_MUX_SESSION_END) {  		ret = -EINVAL;  		goto free;  	} |