diff options
Diffstat (limited to 'drivers/net/usb/cdc_ncm.c')
| -rw-r--r-- | drivers/net/usb/cdc_ncm.c | 56 | 
1 files changed, 17 insertions, 39 deletions
| diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c index 8acf30115428..b04055fd1b79 100644 --- a/drivers/net/usb/cdc_ncm.c +++ b/drivers/net/usb/cdc_ncm.c @@ -133,17 +133,17 @@ static void cdc_ncm_get_strings(struct net_device __always_unused *netdev, u32 s  static void cdc_ncm_update_rxtx_max(struct usbnet *dev, u32 new_rx, u32 new_tx);  static const struct ethtool_ops cdc_ncm_ethtool_ops = { -	.get_link          = usbnet_get_link, -	.nway_reset        = usbnet_nway_reset, -	.get_drvinfo       = usbnet_get_drvinfo, -	.get_msglevel      = usbnet_get_msglevel, -	.set_msglevel      = usbnet_set_msglevel, -	.get_ts_info       = ethtool_op_get_ts_info, -	.get_sset_count    = cdc_ncm_get_sset_count, -	.get_strings       = cdc_ncm_get_strings, -	.get_ethtool_stats = cdc_ncm_get_ethtool_stats, -	.get_link_ksettings      = usbnet_get_link_ksettings, -	.set_link_ksettings      = usbnet_set_link_ksettings, +	.get_link		= usbnet_get_link, +	.nway_reset		= usbnet_nway_reset, +	.get_drvinfo		= usbnet_get_drvinfo, +	.get_msglevel		= usbnet_get_msglevel, +	.set_msglevel		= usbnet_set_msglevel, +	.get_ts_info		= ethtool_op_get_ts_info, +	.get_sset_count		= cdc_ncm_get_sset_count, +	.get_strings		= cdc_ncm_get_strings, +	.get_ethtool_stats	= cdc_ncm_get_ethtool_stats, +	.get_link_ksettings	= usbnet_get_link_ksettings_internal, +	.set_link_ksettings	= NULL,  };  static u32 cdc_ncm_check_rx_max(struct usbnet *dev, u32 new_rx) @@ -920,7 +920,6 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_  		goto error2;  	} -	usb_set_intfdata(ctx->data, dev);  	usb_set_intfdata(ctx->control, dev);  	if (ctx->ether_desc) { @@ -1826,33 +1825,9 @@ static void  cdc_ncm_speed_change(struct usbnet *dev,  		     struct usb_cdc_speed_change *data)  { -	uint32_t rx_speed = le32_to_cpu(data->DLBitRRate); -	uint32_t tx_speed = le32_to_cpu(data->ULBitRate); - -	/* if the speed hasn't changed, don't report it. -	 * RTL8156 shipped before 2021 sends notification about every 32ms. -	 */ -	if (dev->rx_speed == rx_speed && dev->tx_speed == tx_speed) -		return; - -	dev->rx_speed = rx_speed; -	dev->tx_speed = tx_speed; - -	/* -	 * Currently the USB-NET API does not support reporting the actual -	 * device speed. Do print it instead. -	 */ -	if ((tx_speed > 1000000) && (rx_speed > 1000000)) { -		netif_info(dev, link, dev->net, -			   "%u mbit/s downlink %u mbit/s uplink\n", -			   (unsigned int)(rx_speed / 1000000U), -			   (unsigned int)(tx_speed / 1000000U)); -	} else { -		netif_info(dev, link, dev->net, -			   "%u kbit/s downlink %u kbit/s uplink\n", -			   (unsigned int)(rx_speed / 1000U), -			   (unsigned int)(tx_speed / 1000U)); -	} +	/* RTL8156 shipped before 2021 sends notification about every 32ms. */ +	dev->rx_speed = le32_to_cpu(data->DLBitRRate); +	dev->tx_speed = le32_to_cpu(data->ULBitRate);  }  static void cdc_ncm_status(struct usbnet *dev, struct urb *urb) @@ -1878,6 +1853,9 @@ static void cdc_ncm_status(struct usbnet *dev, struct urb *urb)  		 * USB_CDC_NOTIFY_NETWORK_CONNECTION notification shall be  		 * sent by device after USB_CDC_NOTIFY_SPEED_CHANGE.  		 */ +		/* RTL8156 shipped before 2021 sends notification about +		 * every 32ms. Don't forward notification if state is same. +		 */  		if (netif_carrier_ok(dev->net) != !!event->wValue)  			usbnet_link_change(dev, !!event->wValue, 0);  		break; | 
