From patchwork Thu Mar 16 22:18:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Reynes X-Patchwork-Id: 740056 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vkjgv4pnwz9s0Z for ; Fri, 17 Mar 2017 09:24:27 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="VZBnxuNZ"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754838AbdCPWYA (ORCPT ); Thu, 16 Mar 2017 18:24:00 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:35651 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752562AbdCPWUG (ORCPT ); Thu, 16 Mar 2017 18:20:06 -0400 Received: by mail-wm0-f66.google.com with SMTP id z133so583039wmb.2; Thu, 16 Mar 2017 15:19:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CVqBDHxAqH/JCUVRqzL5JN1rv1NWcn1pUWNe2ZYReKw=; b=VZBnxuNZnVkTZxjRJAaGWeXKrAODz+SUHCoOb4750JZuyaddKtKuVCDylApMW2ro9y DLbPLB+iGUZUs1MYlyGh/SidW3Y4JhQxqfnKn6/L24Owrt6jupyVjfkkTYbniUrUNWGZ LoqUZOMfMddDWo5bIGQXChO2HmBG+sDt1yHhVG2A127fX8CX0RGc5aZmXwbPMLV92S0u XdduwLQIUVfLZ02C0Eh8mujDbdLS9QRpiolzW/AuF/1OWdYR5Ktqy9FIGEnWQhS4TduL JNBrKWItDgCGXuCbvwteaqC0uBAaxgdaE7f9ckfq0ksw45hCLhyzplP0dz18YpIin0pw qzWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=CVqBDHxAqH/JCUVRqzL5JN1rv1NWcn1pUWNe2ZYReKw=; b=plRMo19vUWn5f6zjBYEYJ7jYv5iBN+txFKBviP6dKKjuLxbi661aubw3FlZdHEnEnG P1onpmdbE51cOu6n15V0CORTsiuezDHc2jT9xXvnoH1toDHGXQPoQn0HB7sNMe57AuZh OeDakpiVZnkwGtSN2oNgOMp6//xfmczrhohEvogo9CXFjERzd10SQKhj3N2tzrTU1Oi+ Edw0TfT0TeqsxMDpS/LpH38AhlaXMpM3JohfDW7DpcVWEpajY1gxx46NUTlwlPN0sA4H xo9Q9teHdTtbuYZM7ia2pDuEYLUC3o6lJdS3llQwLE4XPnpJfOUBM1hPtC2ht/Zvafab vGrw== X-Gm-Message-State: AFeK/H3lZrOZroQchyf9KAcO/4Ayq1SqKNTCRQ8zQZTkzeZm4RawNFLUQObO1Uz+62opBA== X-Received: by 10.28.183.4 with SMTP id h4mr65094wmf.32.1489702747558; Thu, 16 Mar 2017 15:19:07 -0700 (PDT) Received: from localhost.localdomain (bny93-7-88-161-33-221.fbx.proxad.net. [88.161.33.221]) by smtp.gmail.com with ESMTPSA id 17sm7735553wru.16.2017.03.16.15.19.06 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Mar 2017 15:19:07 -0700 (PDT) From: Philippe Reynes To: oliver@neukum.org, jacmet@sunsite.dk, steve.glendinning@shawell.net, UNGLinuxDriver@microchip.com, gregkh@linuxfoundation.org, davem@davemloft.net, robert.foss@collabora.com, allan@asix.com.tw, grundler@google.com, jarod@redhat.com, peter.chen@nxp.com, stefan.bruens@rwth-aachen.de, akpm@linux-foundation.org, adobriyan@gmail.com Cc: linux-usb@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Philippe Reynes Subject: [PATCH 01/11] net: usb: usbnet: add new api ethtool_{get|set}_link_ksettings Date: Thu, 16 Mar 2017 23:18:47 +0100 Message-Id: <1489702737-2401-2-git-send-email-tremyfr@gmail.com> X-Mailer: git-send-email 1.7.4.4 In-Reply-To: <1489702737-2401-1-git-send-email-tremyfr@gmail.com> References: <1489702737-2401-1-git-send-email-tremyfr@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The ethtool api {get|set}_settings is deprecated. We add the new api {get|set}_link_ksettings to this driver. As I don't have the hardware, I'd be very pleased if someone may test this patch. Signed-off-by: Philippe Reynes Acked-by: Oliver Neukum --- drivers/net/usb/usbnet.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/usb/usbnet.h | 4 ++++ 2 files changed, 40 insertions(+), 0 deletions(-) diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index 3de65ea..1b40b18 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -980,6 +980,40 @@ int usbnet_set_settings (struct net_device *net, struct ethtool_cmd *cmd) } EXPORT_SYMBOL_GPL(usbnet_set_settings); +int usbnet_get_link_ksettings(struct net_device *net, + struct ethtool_link_ksettings *cmd) +{ + struct usbnet *dev = netdev_priv(net); + + if (!dev->mii.mdio_read) + return -EOPNOTSUPP; + + return mii_ethtool_get_link_ksettings(&dev->mii, cmd); +} +EXPORT_SYMBOL_GPL(usbnet_get_link_ksettings); + +int usbnet_set_link_ksettings(struct net_device *net, + const struct ethtool_link_ksettings *cmd) +{ + struct usbnet *dev = netdev_priv(net); + int retval; + + if (!dev->mii.mdio_write) + return -EOPNOTSUPP; + + retval = mii_ethtool_set_link_ksettings(&dev->mii, cmd); + + /* link speed/duplex might have changed */ + if (dev->driver_info->link_reset) + dev->driver_info->link_reset(dev); + + /* hard_mtu or rx_urb_size may change in link_reset() */ + usbnet_update_max_qlen(dev); + + return retval; +} +EXPORT_SYMBOL_GPL(usbnet_set_link_ksettings); + u32 usbnet_get_link (struct net_device *net) { struct usbnet *dev = netdev_priv(net); @@ -1046,6 +1080,8 @@ void usbnet_set_msglevel (struct net_device *net, u32 level) .get_msglevel = usbnet_get_msglevel, .set_msglevel = usbnet_set_msglevel, .get_ts_info = ethtool_op_get_ts_info, + .get_link_ksettings = usbnet_get_link_ksettings, + .set_link_ksettings = usbnet_set_link_ksettings, }; /*-------------------------------------------------------------------------*/ diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index 6e0ce8c..5bd8007 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h @@ -265,6 +265,10 @@ extern int usbnet_get_settings(struct net_device *net, struct ethtool_cmd *cmd); extern int usbnet_set_settings(struct net_device *net, struct ethtool_cmd *cmd); +extern int usbnet_get_link_ksettings(struct net_device *net, + struct ethtool_link_ksettings *cmd); +extern int usbnet_set_link_ksettings(struct net_device *net, + const struct ethtool_link_ksettings *cmd); extern u32 usbnet_get_link(struct net_device *net); extern u32 usbnet_get_msglevel(struct net_device *); extern void usbnet_set_msglevel(struct net_device *, u32);