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_mii,
-       .set_link_ksettings      = usbnet_set_link_ksettings_mii,
+       .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)
 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)
                 * 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;