Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/913848/?format=api
{ "id": 913848, "url": "http://patchwork.ozlabs.org/api/patches/913848/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180515180155.19164-1-jeffrey.t.kirsher@intel.com/", "project": { "id": 46, "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api", "name": "Intel Wired Ethernet development", "link_name": "intel-wired-lan", "list_id": "intel-wired-lan.osuosl.org", "list_email": "intel-wired-lan@osuosl.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20180515180155.19164-1-jeffrey.t.kirsher@intel.com>", "list_archive_url": null, "date": "2018-05-15T18:01:54", "name": "[v2,1/2] ethtool: stop the line wrapping madness", "commit_ref": null, "pull_url": null, "state": "rejected", "archived": false, "hash": "39d28711e4b47e0b15a22c1f461156445f1fb374", "submitter": { "id": 473, "url": "http://patchwork.ozlabs.org/api/people/473/?format=api", "name": "Kirsher, Jeffrey T", "email": "jeffrey.t.kirsher@intel.com" }, "delegate": { "id": 68, "url": "http://patchwork.ozlabs.org/api/users/68/?format=api", "username": "jtkirshe", "first_name": "Jeff", "last_name": "Kirsher", "email": "jeffrey.t.kirsher@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180515180155.19164-1-jeffrey.t.kirsher@intel.com/mbox/", "series": [ { "id": 44522, "url": "http://patchwork.ozlabs.org/api/series/44522/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=44522", "date": "2018-05-15T18:01:55", "name": "[v2,1/2] ethtool: stop the line wrapping madness", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/44522/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/913848/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/913848/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@osuosl.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.136; helo=silver.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)", "ozlabs.org;\n\tdmarc=fail (p=none dis=none) header.from=intel.com" ], "Received": [ "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 40llm05GxWz9ry1\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 16 May 2018 04:02:56 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 1B80822671;\n\tTue, 15 May 2018 18:02:55 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id B0r1094gwF0z; Tue, 15 May 2018 18:02:36 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 9E49F2263A;\n\tTue, 15 May 2018 18:02:36 +0000 (UTC)", "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id E878F1C072D\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 15 May 2018 18:00:44 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id D91FB86803\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 15 May 2018 18:00:44 +0000 (UTC)", "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id lq--LLTl7wrj for <intel-wired-lan@lists.osuosl.org>;\n\tTue, 15 May 2018 18:00:37 +0000 (UTC)", "from mga07.intel.com (mga07.intel.com [134.134.136.100])\n\tby hemlock.osuosl.org (Postfix) with ESMTPS id DEE0D8690E\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 15 May 2018 18:00:36 +0000 (UTC)", "from fmsmga004.fm.intel.com ([10.253.24.48])\n\tby orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t15 May 2018 11:00:35 -0700", "from jtkirshe-nuc.jf.intel.com ([134.134.177.59])\n\tby fmsmga004.fm.intel.com with ESMTP; 15 May 2018 11:00:35 -0700" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.49,404,1520924400\"; d=\"scan'208\";a=\"54597426\"", "From": "Jeff Kirsher <jeffrey.t.kirsher@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Tue, 15 May 2018 11:01:54 -0700", "Message-Id": "<20180515180155.19164-1-jeffrey.t.kirsher@intel.com>", "X-Mailer": "git-send-email 2.17.0", "X-Mailman-Approved-At": "Tue, 15 May 2018 18:02:31 +0000", "Subject": "[Intel-wired-lan] [PATCH v2 1/2] ethtool: stop the line wrapping\n\tmadness", "X-BeenThere": "intel-wired-lan@osuosl.org", "X-Mailman-Version": "2.1.24", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>", "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>", "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "intel-wired-lan-bounces@osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>" }, "content": "From: Mitch Williams <mitch.a.williams@intel.com>\n\nFolks, we have a hard limit of 80 characters per line in the kernel,\nmostly due to Linus' insistence on printing out each release on greenbar\nwith his Decwriter. So why do we have function and macro names that are\nover 30 characters long? Add a tab or two and a few parameters and boom!\nyou're wrapping lines.\n\nThis patch is a search-n-replace of the newly-added ethtool link\nsettings API with shorter names. In general, I replaced 'ksettings' with\n'ks' and elided some unnecessary verbiage. In nearly every instance I\nunwrapped lines and made the code easier to read, especially on a VT102.\n\nSigned-off-by: Mitch Williams <mitch.a.williams@intel.com>\n---\nv2: fix patch description to remove the reference to fixing the Amazon\n Ethernet driver, since this fix is actually in patch 2 of the series\n\n drivers/infiniband/hw/nes/nes_nic.c | 12 +-\n drivers/net/ethernet/3com/3c509.c | 3 +-\n drivers/net/ethernet/3com/typhoon.c | 6 +-\n drivers/net/ethernet/alteon/acenic.c | 3 +-\n drivers/net/ethernet/amazon/ena/ena_ethtool.c | 6 +-\n drivers/net/ethernet/amd/pcnet32.c | 5 +-\n drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 6 +-\n drivers/net/ethernet/amd/xgbe/xgbe.h | 24 +-\n .../ethernet/apm/xgene/xgene_enet_ethtool.c | 16 +-\n .../net/ethernet/aquantia/atlantic/aq_nic.c | 53 +--\n drivers/net/ethernet/atheros/alx/ethtool.c | 9 +-\n .../ethernet/atheros/atl1c/atl1c_ethtool.c | 6 +-\n .../ethernet/atheros/atl1e/atl1e_ethtool.c | 9 +-\n drivers/net/ethernet/atheros/atlx/atl1.c | 6 +-\n drivers/net/ethernet/atheros/atlx/atl2.c | 9 +-\n drivers/net/ethernet/broadcom/b44.c | 9 +-\n drivers/net/ethernet/broadcom/bcm63xx_enet.c | 6 +-\n drivers/net/ethernet/broadcom/bnx2.c | 9 +-\n .../ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 24 +-\n .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 84 ++--\n drivers/net/ethernet/broadcom/tg3.c | 14 +-\n .../net/ethernet/brocade/bna/bnad_ethtool.c | 6 +-\n drivers/net/ethernet/calxeda/xgmac.c | 4 +-\n .../ethernet/cavium/liquidio/lio_ethtool.c | 149 +++---\n .../ethernet/cavium/thunder/nicvf_ethtool.c | 6 +-\n drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 9 +-\n .../net/ethernet/chelsio/cxgb3/cxgb3_main.c | 13 +-\n .../ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 25 +-\n .../ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 25 +-\n .../net/ethernet/cisco/enic/enic_ethtool.c | 10 +-\n drivers/net/ethernet/dec/tulip/de2104x.c | 9 +-\n drivers/net/ethernet/dec/tulip/uli526x.c | 6 +-\n drivers/net/ethernet/dlink/dl2k.c | 6 +-\n .../net/ethernet/emulex/benet/be_ethtool.c | 6 +-\n .../net/ethernet/hisilicon/hns/hns_ethtool.c | 12 +-\n .../ethernet/hisilicon/hns3/hns3_ethtool.c | 6 +-\n .../net/ethernet/huawei/hinic/hinic_main.c | 8 +-\n drivers/net/ethernet/ibm/ehea/ehea_ethtool.c | 6 +-\n drivers/net/ethernet/ibm/emac/core.c | 9 +-\n drivers/net/ethernet/ibm/ibmveth.c | 6 +-\n drivers/net/ethernet/ibm/ibmvnic.c | 6 +-\n .../net/ethernet/intel/e1000/e1000_ethtool.c | 9 +-\n drivers/net/ethernet/intel/e1000e/ethtool.c | 9 +-\n .../net/ethernet/intel/i40e/i40e_ethtool.c | 432 +++++++-----------\n .../ethernet/intel/i40evf/i40evf_ethtool.c | 2 +-\n drivers/net/ethernet/intel/ice/ice_ethtool.c | 42 +-\n drivers/net/ethernet/intel/igb/igb_ethtool.c | 9 +-\n drivers/net/ethernet/intel/igbvf/ethtool.c | 8 +-\n .../net/ethernet/intel/ixgb/ixgb_ethtool.c | 12 +-\n .../net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 15 +-\n drivers/net/ethernet/intel/ixgbevf/ethtool.c | 4 +-\n drivers/net/ethernet/marvell/mv643xx_eth.c | 24 +-\n drivers/net/ethernet/marvell/pxa168_eth.c | 3 +-\n drivers/net/ethernet/marvell/skge.c | 9 +-\n drivers/net/ethernet/marvell/sky2.c | 9 +-\n .../net/ethernet/mellanox/mlx4/en_ethtool.c | 49 +-\n .../ethernet/mellanox/mlx5/core/en_ethtool.c | 73 ++-\n .../mellanox/mlx5/core/ipoib/ethtool.c | 4 +-\n .../net/ethernet/mellanox/mlxsw/spectrum.c | 14 +-\n .../net/ethernet/mellanox/mlxsw/switchx2.c | 12 +-\n drivers/net/ethernet/micrel/ks8695net.c | 9 +-\n drivers/net/ethernet/micrel/ksz884x.c | 11 +-\n drivers/net/ethernet/microchip/enc28j60.c | 8 +-\n drivers/net/ethernet/microchip/encx24j600.c | 3 +-\n .../net/ethernet/myricom/myri10ge/myri10ge.c | 4 +-\n drivers/net/ethernet/natsemi/natsemi.c | 9 +-\n drivers/net/ethernet/natsemi/ns83820.c | 3 +-\n drivers/net/ethernet/neterion/s2io.c | 12 +-\n .../net/ethernet/neterion/vxge/vxge-ethtool.c | 12 +-\n .../ethernet/netronome/nfp/nfp_net_ethtool.c | 14 +-\n drivers/net/ethernet/nvidia/forcedeth.c | 9 +-\n .../oki-semi/pch_gbe/pch_gbe_ethtool.c | 15 +-\n .../qlogic/netxen/netxen_nic_ethtool.c | 6 +-\n .../net/ethernet/qlogic/qede/qede_ethtool.c | 6 +-\n drivers/net/ethernet/qlogic/qla3xxx.c | 6 +-\n .../ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 9 +-\n .../ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 6 +-\n .../net/ethernet/qlogic/qlge/qlge_ethtool.c | 6 +-\n drivers/net/ethernet/qualcomm/qca_debug.c | 4 +-\n drivers/net/ethernet/realtek/r8169.c | 9 +-\n drivers/net/ethernet/rocker/rocker_main.c | 4 +-\n drivers/net/ethernet/sfc/ethtool.c | 6 +-\n drivers/net/ethernet/sfc/falcon/ethtool.c | 4 +-\n drivers/net/ethernet/sfc/falcon/mdio_10g.c | 9 +-\n drivers/net/ethernet/silan/sc92031.c | 9 +-\n drivers/net/ethernet/smsc/smc911x.c | 3 +-\n drivers/net/ethernet/smsc/smc91c92_cs.c | 3 +-\n drivers/net/ethernet/smsc/smc91x.c | 3 +-\n .../ethernet/stmicro/stmmac/stmmac_ethtool.c | 20 +-\n drivers/net/ethernet/sun/cassini.c | 6 +-\n drivers/net/ethernet/sun/niu.c | 9 +-\n drivers/net/ethernet/sun/sungem.c | 12 +-\n drivers/net/ethernet/sun/sunhme.c | 3 +-\n drivers/net/ethernet/tehuti/tehuti.c | 14 +-\n drivers/net/ethernet/ti/netcp_ethss.c | 6 +-\n drivers/net/ethernet/toshiba/ps3_gelic_net.c | 6 +-\n .../net/ethernet/toshiba/spider_net_ethtool.c | 12 +-\n drivers/net/ethernet/via/via-velocity.c | 6 +-\n drivers/net/fjes/fjes_ethtool.c | 4 +-\n drivers/net/hyperv/netvsc_drv.c | 2 +-\n drivers/net/mdio.c | 9 +-\n drivers/net/mii.c | 12 +-\n drivers/net/ntb_netdev.c | 8 +-\n drivers/net/phy/marvell10g.c | 2 +-\n drivers/net/phy/phy.c | 13 +-\n drivers/net/phy/phylink.c | 7 +-\n drivers/net/tun.c | 4 +-\n drivers/net/usb/catc.c | 12 +-\n drivers/net/usb/lan78xx.c | 6 +-\n drivers/net/usb/rtl8150.c | 3 +-\n drivers/net/virtio_net.c | 2 +-\n drivers/net/vmxnet3/vmxnet3_ethtool.c | 12 +-\n drivers/s390/net/qeth_core_main.c | 58 +--\n include/linux/ethtool.h | 24 +-\n net/core/ethtool.c | 40 +-\n 115 files changed, 723 insertions(+), 1176 deletions(-)", "diff": "diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c\nindex 007d5e8a0121..e96076851202 100644\n--- a/drivers/infiniband/hw/nes/nes_nic.c\n+++ b/drivers/infiniband/hw/nes/nes_nic.c\n@@ -1502,10 +1502,8 @@ static int nes_netdev_get_link_ksettings(struct net_device *netdev,\n \t\t\t\tcmd->base.autoneg = AUTONEG_DISABLE;\n \t\t\tcmd->base.phy_address = phy_index;\n \t\t}\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.supported, supported);\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.advertising, advertising);\n+\t\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \t\treturn 0;\n \t}\n \tif ((phy_type == NES_PHY_TYPE_ARGUS) ||\n@@ -1522,10 +1520,8 @@ static int nes_netdev_get_link_ksettings(struct net_device *netdev,\n \t}\n \tcmd->base.speed = SPEED_10000;\n \tcmd->base.autoneg = AUTONEG_DISABLE;\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/3com/3c509.c b/drivers/net/ethernet/3com/3c509.c\nindex b223769d6a5e..d69bcf9fa7c6 100644\n--- a/drivers/net/ethernet/3com/3c509.c\n+++ b/drivers/net/ethernet/3com/3c509.c\n@@ -1078,8 +1078,7 @@ el3_netdev_get_ecmd(struct net_device *dev, struct ethtool_link_ksettings *cmd)\n \t\t\tcmd->base.duplex = DUPLEX_FULL;\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \tcmd->base.speed = SPEED_10;\n \tEL3WINDOW(1);\n }\ndiff --git a/drivers/net/ethernet/3com/typhoon.c b/drivers/net/ethernet/3com/typhoon.c\nindex be823c186517..d5931a1c3b63 100644\n--- a/drivers/net/ethernet/3com/typhoon.c\n+++ b/drivers/net/ethernet/3com/typhoon.c\n@@ -1048,10 +1048,8 @@ typhoon_get_link_ksettings(struct net_device *dev,\n \telse\n \t\tcmd->base.autoneg = AUTONEG_DISABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/alteon/acenic.c b/drivers/net/ethernet/alteon/acenic.c\nindex 8f71b79b4949..0a4f47e389aa 100644\n--- a/drivers/net/ethernet/alteon/acenic.c\n+++ b/drivers/net/ethernet/alteon/acenic.c\n@@ -2630,8 +2630,7 @@ static int ace_get_link_ksettings(struct net_device *dev,\n \tecmd->rxcoal = readl(®s->TuneRxCoalTicks);\n #endif\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c b/drivers/net/ethernet/amazon/ena/ena_ethtool.c\nindex 060cb18fa659..0a4de911e6cc 100644\n--- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c\n+++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c\n@@ -282,10 +282,8 @@ static int ena_get_link_ksettings(struct net_device *netdev,\n \tlink_ksettings->base.speed = link->speed;\n \n \tif (link->flags & ENA_ADMIN_GET_FEATURE_LINK_DESC_AUTONEG_MASK) {\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, Autoneg);\n \t}\n \n \tlink_ksettings->base.autoneg =\ndiff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c\nindex a561705f232c..73cba92dc589 100644\n--- a/drivers/net/ethernet/amd/pcnet32.c\n+++ b/drivers/net/ethernet/amd/pcnet32.c\n@@ -748,9 +748,8 @@ static int pcnet32_get_link_ksettings(struct net_device *dev,\n \t\t}\n \t\tcmd->base.duplex = lp->fdx ? DUPLEX_FULL : DUPLEX_HALF;\n \t\tcmd->base.speed = SPEED_10;\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\t\t\t\tcmd->link_modes.supported,\n-\t\t\t\t\t\tSUPPORTED_TP | SUPPORTED_AUI);\n+\t\tethtool_u32_to_ks(cmd->link_modes.supported,\n+\t\t\t\t SUPPORTED_TP | SUPPORTED_AUI);\n \t}\n \tspin_unlock_irqrestore(&lp->lock, flags);\n \treturn 0;\ndiff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c\nindex aac884314000..3fac11599bf5 100644\n--- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c\n+++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c\n@@ -960,8 +960,7 @@ static int xgbe_phy_find_phy_device(struct xgbe_prv_data *pdata)\n \n \txgbe_phy_external_phy_quirks(pdata);\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tlks->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, lks->link_modes.advertising);\n \tphydev->advertising &= advertising;\n \n \tphy_start_aneg(phy_data->phydev);\n@@ -1666,8 +1665,7 @@ static int xgbe_phy_an_config(struct xgbe_prv_data *pdata)\n \tif (!phy_data->phydev)\n \t\treturn 0;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tlks->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, lks->link_modes.advertising);\n \n \tphy_data->phydev->autoneg = pdata->phy.autoneg;\n \tphy_data->phydev->advertising = phy_data->phydev->supported &\ndiff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h\nindex 95d4b56448c6..85b269e1a137 100644\n--- a/drivers/net/ethernet/amd/xgbe/xgbe.h\n+++ b/drivers/net/ethernet/amd/xgbe/xgbe.h\n@@ -300,40 +300,40 @@\n \n /* Link mode bit operations */\n #define XGBE_ZERO_SUP(_ls)\t\t\\\n-\tethtool_link_ksettings_zero_link_mode((_ls), supported)\n+\tethtool_ks_clear((_ls), supported)\n \n #define XGBE_SET_SUP(_ls, _mode)\t\\\n-\tethtool_link_ksettings_add_link_mode((_ls), supported, _mode)\n+\tethtool_ks_add_mode((_ls), supported, _mode)\n \n #define XGBE_CLR_SUP(_ls, _mode)\t\\\n-\tethtool_link_ksettings_del_link_mode((_ls), supported, _mode)\n+\tethtool_ks_del_mode((_ls), supported, _mode)\n \n #define XGBE_IS_SUP(_ls, _mode)\t\\\n-\tethtool_link_ksettings_test_link_mode((_ls), supported, _mode)\n+\tethtool_ks_test((_ls), supported, _mode)\n \n #define XGBE_ZERO_ADV(_ls)\t\t\\\n-\tethtool_link_ksettings_zero_link_mode((_ls), advertising)\n+\tethtool_ks_clear((_ls), advertising)\n \n #define XGBE_SET_ADV(_ls, _mode)\t\\\n-\tethtool_link_ksettings_add_link_mode((_ls), advertising, _mode)\n+\tethtool_ks_add_mode((_ls), advertising, _mode)\n \n #define XGBE_CLR_ADV(_ls, _mode)\t\\\n-\tethtool_link_ksettings_del_link_mode((_ls), advertising, _mode)\n+\tethtool_ks_del_mode((_ls), advertising, _mode)\n \n #define XGBE_ADV(_ls, _mode)\t\t\\\n-\tethtool_link_ksettings_test_link_mode((_ls), advertising, _mode)\n+\tethtool_ks_test((_ls), advertising, _mode)\n \n #define XGBE_ZERO_LP_ADV(_ls)\t\t\\\n-\tethtool_link_ksettings_zero_link_mode((_ls), lp_advertising)\n+\tethtool_ks_clear((_ls), lp_advertising)\n \n #define XGBE_SET_LP_ADV(_ls, _mode)\t\\\n-\tethtool_link_ksettings_add_link_mode((_ls), lp_advertising, _mode)\n+\tethtool_ks_add_mode((_ls), lp_advertising, _mode)\n \n #define XGBE_CLR_LP_ADV(_ls, _mode)\t\\\n-\tethtool_link_ksettings_del_link_mode((_ls), lp_advertising, _mode)\n+\tethtool_ks_del_mode((_ls), lp_advertising, _mode)\n \n #define XGBE_LP_ADV(_ls, _mode)\t\t\\\n-\tethtool_link_ksettings_test_link_mode((_ls), lp_advertising, _mode)\n+\tethtool_ks_test((_ls), lp_advertising, _mode)\n \n #define XGBE_LM_COPY(_dst, _dname, _src, _sname)\t\\\n \tbitmap_copy((_dst)->link_modes._dname,\t\t\\\ndiff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c b/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c\nindex 4f50f11718f4..9f71f83c1f1b 100644\n--- a/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c\n+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c\n@@ -146,12 +146,8 @@ static int xgene_get_link_ksettings(struct net_device *ndev,\n \n \t\tsupported = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg |\n \t\t\tSUPPORTED_MII;\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.supported,\n-\t\t\tsupported);\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.advertising,\n-\t\t\tsupported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.advertising, supported);\n \n \t\tcmd->base.speed = SPEED_1000;\n \t\tcmd->base.duplex = DUPLEX_FULL;\n@@ -159,12 +155,8 @@ static int xgene_get_link_ksettings(struct net_device *ndev,\n \t\tcmd->base.autoneg = AUTONEG_ENABLE;\n \t} else {\n \t\tsupported = SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE;\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.supported,\n-\t\t\tsupported);\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.advertising,\n-\t\t\tsupported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.advertising, supported);\n \n \t\tcmd->base.speed = SPEED_10000;\n \t\tcmd->base.duplex = DUPLEX_FULL;\ndiff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c\nindex 1a1a6380c128..812a473b72f8 100644\n--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c\n+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c\n@@ -703,72 +703,61 @@ void aq_nic_get_link_ksettings(struct aq_nic_s *self,\n \tcmd->base.duplex = DUPLEX_FULL;\n \tcmd->base.autoneg = self->aq_nic_cfg.is_autoneg;\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n+\tethtool_ks_clear(cmd, supported);\n \n \tif (self->aq_nic_cfg.aq_hw_caps->link_speed_msk & AQ_NIC_RATE_10G)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, supported, 10000baseT_Full);\n \n \tif (self->aq_nic_cfg.aq_hw_caps->link_speed_msk & AQ_NIC_RATE_5G)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n-\t\t\t\t\t\t 5000baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, supported, 5000baseT_Full);\n \n \tif (self->aq_nic_cfg.aq_hw_caps->link_speed_msk & AQ_NIC_RATE_2GS)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n-\t\t\t\t\t\t 2500baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, supported, 2500baseT_Full);\n \n \tif (self->aq_nic_cfg.aq_hw_caps->link_speed_msk & AQ_NIC_RATE_1G)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n-\t\t\t\t\t\t 1000baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, supported, 1000baseT_Full);\n \n \tif (self->aq_nic_cfg.aq_hw_caps->link_speed_msk & AQ_NIC_RATE_100M)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n-\t\t\t\t\t\t 100baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, supported, 100baseT_Full);\n \n \tif (self->aq_nic_cfg.aq_hw_caps->flow_control)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t Pause);\n \n-\tethtool_link_ksettings_add_link_mode(cmd, supported, Autoneg);\n+\tethtool_ks_add_mode(cmd, supported, Autoneg);\n \n \tif (self->aq_nic_cfg.aq_hw_caps->media_type == AQ_HW_MEDIA_TYPE_FIBRE)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n+\t\tethtool_ks_add_mode(cmd, supported, FIBRE);\n \telse\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported, TP);\n+\t\tethtool_ks_add_mode(cmd, supported, TP);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n+\tethtool_ks_clear(cmd, advertising);\n \n \tif (self->aq_nic_cfg.is_autoneg)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(cmd, advertising, Autoneg);\n \n \tif (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_10G)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, advertising, 10000baseT_Full);\n \n \tif (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_5G)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n-\t\t\t\t\t\t 5000baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, advertising, 5000baseT_Full);\n \n \tif (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_2GS)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n-\t\t\t\t\t\t 2500baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, advertising, 2500baseT_Full);\n \n \tif (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_1G)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n-\t\t\t\t\t\t 1000baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, advertising, 1000baseT_Full);\n \n \tif (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_100M)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n-\t\t\t\t\t\t 100baseT_Full);\n+\t\tethtool_ks_add_mode(cmd, advertising, 100baseT_Full);\n \n \tif (self->aq_nic_cfg.flow_control)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n-\t\t\t\t\t\t Pause);\n+\t\tethtool_ks_add_mode(cmd, advertising, Pause);\n \n \tif (self->aq_nic_cfg.aq_hw_caps->media_type == AQ_HW_MEDIA_TYPE_FIBRE)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising, FIBRE);\n+\t\tethtool_ks_add_mode(cmd, advertising, FIBRE);\n \telse\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising, TP);\n+\t\tethtool_ks_add_mode(cmd, advertising, TP);\n }\n \n int aq_nic_set_link_ksettings(struct aq_nic_s *self,\n@@ -963,4 +952,4 @@ void aq_nic_shutdown(struct aq_nic_s *self)\n \n err_exit:\n \trtnl_unlock();\n-}\n\\ No newline at end of file\n+}\ndiff --git a/drivers/net/ethernet/atheros/alx/ethtool.c b/drivers/net/ethernet/atheros/alx/ethtool.c\nindex 2f4eabf652e8..f33950040435 100644\n--- a/drivers/net/ethernet/atheros/alx/ethtool.c\n+++ b/drivers/net/ethernet/atheros/alx/ethtool.c\n@@ -166,10 +166,8 @@ static int alx_get_link_ksettings(struct net_device *netdev,\n \tcmd->base.speed = hw->link_speed;\n \tcmd->base.duplex = hw->duplex;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -184,8 +182,7 @@ static int alx_set_link_ksettings(struct net_device *netdev,\n \n \tASSERT_RTNL();\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (cmd->base.autoneg == AUTONEG_ENABLE) {\n \t\tif (advertising & ~alx_get_supported_speeds(hw))\ndiff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c b/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c\nindex cfe86a20c899..9f67af109fb5 100644\n--- a/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c\n+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c\n@@ -62,10 +62,8 @@ static int atl1c_get_link_ksettings(struct net_device *netdev,\n \n \tcmd->base.autoneg = AUTONEG_ENABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c b/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c\nindex cb489e7e8374..d31c16906661 100644\n--- a/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c\n+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c\n@@ -63,10 +63,8 @@ static int atl1e_get_link_ksettings(struct net_device *netdev,\n \n \tcmd->base.autoneg = AUTONEG_ENABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -78,8 +76,7 @@ static int atl1e_set_link_ksettings(struct net_device *netdev,\n \tstruct atl1e_hw *hw = &adapter->hw;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \twhile (test_and_set_bit(__AT_RESETTING, &adapter->flags))\n \t\tmsleep(1);\ndiff --git a/drivers/net/ethernet/atheros/atlx/atl1.c b/drivers/net/ethernet/atheros/atlx/atl1.c\nindex b81fbf119bce..64429070f57a 100644\n--- a/drivers/net/ethernet/atheros/atlx/atl1.c\n+++ b/drivers/net/ethernet/atheros/atlx/atl1.c\n@@ -3262,10 +3262,8 @@ static int atl1_get_link_ksettings(struct net_device *netdev,\n \telse\n \t\tcmd->base.autoneg = AUTONEG_DISABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/atheros/atlx/atl2.c b/drivers/net/ethernet/atheros/atlx/atl2.c\nindex db4bcc51023a..132e21f42eb6 100644\n--- a/drivers/net/ethernet/atheros/atlx/atl2.c\n+++ b/drivers/net/ethernet/atheros/atlx/atl2.c\n@@ -1770,10 +1770,8 @@ static int atl2_get_link_ksettings(struct net_device *netdev,\n \n \tcmd->base.autoneg = AUTONEG_ENABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -1785,8 +1783,7 @@ static int atl2_set_link_ksettings(struct net_device *netdev,\n \tstruct atl2_hw *hw = &adapter->hw;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \twhile (test_and_set_bit(__ATL2_RESETTING, &adapter->flags))\n \t\tmsleep(1);\ndiff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c\nindex e445ab724827..b8a1bc2f711b 100644\n--- a/drivers/net/ethernet/broadcom/b44.c\n+++ b/drivers/net/ethernet/broadcom/b44.c\n@@ -1867,10 +1867,8 @@ static int b44_get_link_ksettings(struct net_device *dev,\n \tif (cmd->base.autoneg == AUTONEG_ENABLE)\n \t\tadvertising |= ADVERTISED_Autoneg;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \tif (!netif_running(dev)){\n \t\tcmd->base.speed = 0;\n@@ -1903,8 +1901,7 @@ static int b44_set_link_ksettings(struct net_device *dev,\n \n \tspeed = cmd->base.speed;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \t/* We do not support gigabit. */\n \tif (cmd->base.autoneg == AUTONEG_ENABLE) {\ndiff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c\nindex 14a59e51db67..88b6250241ff 100644\n--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c\n+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c\n@@ -1465,10 +1465,8 @@ static int bcm_enet_get_link_ksettings(struct net_device *dev,\n \t\t\tADVERTISED_100baseT_Half |\n \t\t\tADVERTISED_100baseT_Full;\n \t\tadvertising = 0;\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.supported, supported);\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.advertising, advertising);\n+\t\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \t\tcmd->base.port = PORT_MII;\n \t}\n \treturn 0;\ndiff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c\nindex 9ffc4a8c5fc7..f1c17e1d6926 100644\n--- a/drivers/net/ethernet/broadcom/bnx2.c\n+++ b/drivers/net/ethernet/broadcom/bnx2.c\n@@ -6955,10 +6955,8 @@ bnx2_get_link_ksettings(struct net_device *dev,\n \n \tcmd->base.phy_address = bp->phy_addr;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -6992,8 +6990,7 @@ bnx2_set_link_ksettings(struct net_device *dev,\n \tif (cmd->base.autoneg == AUTONEG_ENABLE) {\n \t\tautoneg |= AUTONEG_SPEED;\n \n-\t\tethtool_convert_link_mode_to_legacy_u32(\n-\t\t\t&advertising, cmd->link_modes.advertising);\n+\t\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \t\tif (cmd->base.port == PORT_TP) {\n \t\t\tadvertising &= ETHTOOL_ALL_COPPER_SPEED;\ndiff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c\nindex da18aa239acb..b1031acd313a 100644\n--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c\n+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c\n@@ -222,10 +222,8 @@ static int bnx2x_get_vf_link_ksettings(struct net_device *dev,\n \tstruct bnx2x *bp = netdev_priv(dev);\n \tu32 supported, advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (bp->state == BNX2X_STATE_OPEN) {\n \t\tif (test_bit(BNX2X_LINK_REPORT_FD,\n@@ -264,8 +262,7 @@ static int bnx2x_get_link_ksettings(struct net_device *dev,\n \tu32 media_type;\n \tu32 supported, advertising, lp_advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&lp_advertising,\n-\t\t\t\t\t\tcmd->link_modes.lp_advertising);\n+\tethtool_ks_to_u32(&lp_advertising, cmd->link_modes.lp_advertising);\n \n \t/* Dual Media boards present all available port types */\n \tsupported = bp->port.supported[cfg_idx] |\n@@ -344,12 +341,9 @@ static int bnx2x_get_link_ksettings(struct net_device *dev,\n \t\t\tlp_advertising |= ADVERTISED_20000baseKR2_Full;\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.lp_advertising,\n-\t\t\t\t\t\tlp_advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.lp_advertising, lp_advertising);\n \n \tDP(BNX2X_MSG_ETHTOOL, \"ethtool_cmd: cmd %d\\n\"\n \t \" supported 0x%x advertising 0x%x speed %u\\n\"\n@@ -372,10 +366,8 @@ static int bnx2x_set_link_ksettings(struct net_device *dev,\n \tu32 supported;\n \tu8 duplex = cmd->base.duplex;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (IS_MF_SD(bp))\n \t\treturn 0;\ndiff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c\nindex 7270c8b0cef3..e3d39ac375e2 100644\n--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c\n+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c\n@@ -1012,64 +1012,45 @@ u32 _bnxt_fw_to_ethtool_adv_spds(u16 fw_speeds, u8 fw_pause)\n #define BNXT_FW_TO_ETHTOOL_SPDS(fw_speeds, fw_pause, lk_ksettings, name)\\\n {\t\t\t\t\t\t\t\t\t\\\n \tif ((fw_speeds) & BNXT_LINK_SPEED_MSK_100MB)\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t 100baseT_Full);\t\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, 100baseT_Full);\t\\\n \tif ((fw_speeds) & BNXT_LINK_SPEED_MSK_1GB)\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t 1000baseT_Full);\t\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, 1000baseT_Full);\\\n \tif ((fw_speeds) & BNXT_LINK_SPEED_MSK_10GB)\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t 10000baseT_Full);\t\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, 10000baseT_Full);\\\n \tif ((fw_speeds) & BNXT_LINK_SPEED_MSK_25GB)\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t 25000baseCR_Full);\t\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, 25000baseCR_Full);\\\n \tif ((fw_speeds) & BNXT_LINK_SPEED_MSK_40GB)\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t 40000baseCR4_Full);\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, 40000baseCR4_Full);\\\n \tif ((fw_speeds) & BNXT_LINK_SPEED_MSK_50GB)\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t 50000baseCR2_Full);\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, 50000baseCR2_Full);\\\n \tif ((fw_speeds) & BNXT_LINK_SPEED_MSK_100GB)\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t 100000baseCR4_Full);\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, 100000baseCR4_Full);\\\n \tif ((fw_pause) & BNXT_LINK_PAUSE_RX) {\t\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t Pause);\t\t\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, Pause);\t\t\\\n \t\tif (!((fw_pause) & BNXT_LINK_PAUSE_TX))\t\t\t\\\n-\t\t\tethtool_link_ksettings_add_link_mode(\t\t\\\n-\t\t\t\t\tlk_ksettings, name, Asym_Pause);\\\n+\t\t\tethtool_ks_add_mode(lk_ksettings, name, Asym_Pause);\\\n \t} else if ((fw_pause) & BNXT_LINK_PAUSE_TX) {\t\t\t\\\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, name,\\\n-\t\t\t\t\t\t Asym_Pause);\t\\\n+\t\tethtool_ks_add_mode(lk_ksettings, name, Asym_Pause);\t\\\n \t}\t\t\t\t\t\t\t\t\\\n }\n \n #define BNXT_ETHTOOL_TO_FW_SPDS(fw_speeds, lk_ksettings, name)\t\t\\\n {\t\t\t\t\t\t\t\t\t\\\n-\tif (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 100baseT_Full) ||\t\\\n-\t ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 100baseT_Half))\t\\\n+\tif (ethtool_ks_test(lk_ksettings, name, 100baseT_Full) ||\t\\\n+\t ethtool_ks_test(lk_ksettings, name,\t100baseT_Half))\t\\\n \t\t(fw_speeds) |= BNXT_LINK_SPEED_MSK_100MB;\t\t\\\n-\tif (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 1000baseT_Full) ||\t\\\n-\t ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 1000baseT_Half))\t\\\n+\tif (ethtool_ks_test(lk_ksettings, name,\t1000baseT_Full) ||\t\\\n+\t ethtool_ks_test(lk_ksettings, name,\t1000baseT_Half))\t\\\n \t\t(fw_speeds) |= BNXT_LINK_SPEED_MSK_1GB;\t\t\t\\\n-\tif (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 10000baseT_Full))\t\\\n+\tif (ethtool_ks_test(lk_ksettings, name,\t10000baseT_Full))\t\\\n \t\t(fw_speeds) |= BNXT_LINK_SPEED_MSK_10GB;\t\t\\\n-\tif (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 25000baseCR_Full))\t\\\n+\tif (ethtool_ks_test(lk_ksettings, name,\t25000baseCR_Full))\t\\\n \t\t(fw_speeds) |= BNXT_LINK_SPEED_MSK_25GB;\t\t\\\n-\tif (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 40000baseCR4_Full))\t\\\n+\tif (ethtool_ks_test(lk_ksettings, name,\t40000baseCR4_Full))\t\\\n \t\t(fw_speeds) |= BNXT_LINK_SPEED_MSK_40GB;\t\t\\\n-\tif (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 50000baseCR2_Full))\t\\\n+\tif (ethtool_ks_test(lk_ksettings, name,\t50000baseCR2_Full))\t\\\n \t\t(fw_speeds) |= BNXT_LINK_SPEED_MSK_50GB;\t\t\\\n-\tif (ethtool_link_ksettings_test_link_mode(lk_ksettings, name,\t\\\n-\t\t\t\t\t\t 100000baseCR4_Full))\t\\\n+\tif (ethtool_ks_test(lk_ksettings, name,\t100000baseCR4_Full))\t\\\n \t\t(fw_speeds) |= BNXT_LINK_SPEED_MSK_100GB;\t\t\\\n }\n \n@@ -1105,13 +1086,11 @@ static void bnxt_fw_to_ethtool_support_spds(struct bnxt_link_info *link_info,\n \n \tBNXT_FW_TO_ETHTOOL_SPDS(fw_speeds, 0, lk_ksettings, supported);\n \n-\tethtool_link_ksettings_add_link_mode(lk_ksettings, supported, Pause);\n-\tethtool_link_ksettings_add_link_mode(lk_ksettings, supported,\n-\t\t\t\t\t Asym_Pause);\n+\tethtool_ks_add_mode(lk_ksettings, supported, Pause);\n+\tethtool_ks_add_mode(lk_ksettings, supported, Asym_Pause);\n \n \tif (link_info->support_auto_speeds)\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, supported,\n-\t\t\t\t\t\t Autoneg);\n+\t\tethtool_ks_add_mode(lk_ksettings, supported, Autoneg);\n }\n \n u32 bnxt_fw_to_ethtool_speed(u16 fw_link_speed)\n@@ -1148,15 +1127,14 @@ static int bnxt_get_link_ksettings(struct net_device *dev,\n \tstruct ethtool_link_settings *base = &lk_ksettings->base;\n \tu32 ethtool_speed;\n \n-\tethtool_link_ksettings_zero_link_mode(lk_ksettings, supported);\n+\tethtool_ks_clear(lk_ksettings, supported);\n \tmutex_lock(&bp->link_lock);\n \tbnxt_fw_to_ethtool_support_spds(link_info, lk_ksettings);\n \n-\tethtool_link_ksettings_zero_link_mode(lk_ksettings, advertising);\n+\tethtool_ks_clear(lk_ksettings, advertising);\n \tif (link_info->autoneg) {\n \t\tbnxt_fw_to_ethtool_advertised_spds(link_info, lk_ksettings);\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings,\n-\t\t\t\t\t\t advertising, Autoneg);\n+\t\tethtool_ks_add_mode(lk_ksettings, advertising, Autoneg);\n \t\tbase->autoneg = AUTONEG_ENABLE;\n \t\tif (link_info->phy_link_status == BNXT_LINK_LINK)\n \t\t\tbnxt_fw_to_ethtool_lp_adv(link_info, lk_ksettings);\n@@ -1180,15 +1158,11 @@ static int bnxt_get_link_ksettings(struct net_device *dev,\n \tbase->port = PORT_NONE;\n \tif (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) {\n \t\tbase->port = PORT_TP;\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, supported,\n-\t\t\t\t\t\t TP);\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, advertising,\n-\t\t\t\t\t\t TP);\n+\t\tethtool_ks_add_mode(lk_ksettings, supported, TP);\n+\t\tethtool_ks_add_mode(lk_ksettings, advertising, TP);\n \t} else {\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, supported,\n-\t\t\t\t\t\t FIBRE);\n-\t\tethtool_link_ksettings_add_link_mode(lk_ksettings, advertising,\n-\t\t\t\t\t\t FIBRE);\n+\t\tethtool_ks_add_mode(lk_ksettings, supported, FIBRE);\n+\t\tethtool_ks_add_mode(lk_ksettings, advertising, FIBRE);\n \n \t\tif (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC)\n \t\t\tbase->port = PORT_DA;\ndiff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c\nindex 9f59b1270a7c..dcb9fc959d55 100644\n--- a/drivers/net/ethernet/broadcom/tg3.c\n+++ b/drivers/net/ethernet/broadcom/tg3.c\n@@ -12141,8 +12141,7 @@ static int tg3_get_link_ksettings(struct net_device *dev,\n \t\tsupported |= SUPPORTED_FIBRE;\n \t\tcmd->base.port = PORT_FIBRE;\n \t}\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \n \tadvertising = tp->link_config.advertising;\n \tif (tg3_flag(tp, PAUSE_AUTONEG)) {\n@@ -12157,15 +12156,13 @@ static int tg3_get_link_ksettings(struct net_device *dev,\n \t\t\tadvertising |= ADVERTISED_Asym_Pause;\n \t\t}\n \t}\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \tif (netif_running(dev) && tp->link_up) {\n \t\tcmd->base.speed = tp->link_config.active_speed;\n \t\tcmd->base.duplex = tp->link_config.active_duplex;\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.lp_advertising,\n-\t\t\ttp->link_config.rmt_adv);\n+\t\tethtool_u32_to_ks(cmd->link_modes.lp_advertising,\n+\t\t\t\t tp->link_config.rmt_adv);\n \n \t\tif (!(tp->phy_flags & TG3_PHYFLG_ANY_SERDES)) {\n \t\t\tif (tp->phy_flags & TG3_PHYFLG_MDIX_STATE)\n@@ -12207,8 +12204,7 @@ static int tg3_set_link_ksettings(struct net_device *dev,\n \t cmd->base.duplex != DUPLEX_HALF)\n \t\treturn -EINVAL;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (cmd->base.autoneg == AUTONEG_ENABLE) {\n \t\tu32 mask = ADVERTISED_Autoneg |\ndiff --git a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c\nindex 31032de5843b..38859ad73166 100644\n--- a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c\n+++ b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c\n@@ -261,10 +261,8 @@ bnad_get_link_ksettings(struct net_device *netdev,\n \t\tcmd->base.duplex = DUPLEX_UNKNOWN;\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/calxeda/xgmac.c b/drivers/net/ethernet/calxeda/xgmac.c\nindex 2bd7c638b178..e7445db2276d 100644\n--- a/drivers/net/ethernet/calxeda/xgmac.c\n+++ b/drivers/net/ethernet/calxeda/xgmac.c\n@@ -1535,8 +1535,8 @@ static int xgmac_ethtool_get_link_ksettings(struct net_device *dev,\n \tcmd->base.autoneg = 0;\n \tcmd->base.duplex = DUPLEX_FULL;\n \tcmd->base.speed = 10000;\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported, 0);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising, 0);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, 0);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, 0);\n \treturn 0;\n }\n \ndiff --git a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c\nindex 06f7449c569d..4b7772037e3c 100644\n--- a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c\n+++ b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c\n@@ -233,21 +233,19 @@ static int lio_get_link_ksettings(struct net_device *netdev,\n \n \tlinfo = &lio->linfo;\n \n-\tethtool_link_ksettings_zero_link_mode(ecmd, supported);\n-\tethtool_link_ksettings_zero_link_mode(ecmd, advertising);\n+\tethtool_ks_clear(ecmd, supported);\n+\tethtool_ks_clear(ecmd, advertising);\n \n \tswitch (linfo->link.s.phy_type) {\n \tcase LIO_PHY_PORT_TP:\n \t\tecmd->base.port = PORT_TP;\n \t\tecmd->base.autoneg = AUTONEG_DISABLE;\n-\t\tethtool_link_ksettings_add_link_mode(ecmd, supported, TP);\n-\t\tethtool_link_ksettings_add_link_mode(ecmd, supported, Pause);\n-\t\tethtool_link_ksettings_add_link_mode(ecmd, supported,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ecmd, supported, TP);\n+\t\tethtool_ks_add_mode(ecmd, supported, Pause);\n+\t\tethtool_ks_add_mode(ecmd, supported, 10000baseT_Full);\n \n-\t\tethtool_link_ksettings_add_link_mode(ecmd, advertising, Pause);\n-\t\tethtool_link_ksettings_add_link_mode(ecmd, advertising,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ecmd, advertising, Pause);\n+\t\tethtool_ks_add_mode(ecmd, advertising, 10000baseT_Full);\n \n \t\tbreak;\n \n@@ -264,30 +262,27 @@ static int lio_get_link_ksettings(struct net_device *netdev,\n \n \t\tecmd->base.port = PORT_FIBRE;\n \t\tecmd->base.autoneg = AUTONEG_DISABLE;\n-\t\tethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE);\n+\t\tethtool_ks_add_mode(ecmd, supported, FIBRE);\n \n-\t\tethtool_link_ksettings_add_link_mode(ecmd, supported, Pause);\n-\t\tethtool_link_ksettings_add_link_mode(ecmd, advertising, Pause);\n+\t\tethtool_ks_add_mode(ecmd, supported, Pause);\n+\t\tethtool_ks_add_mode(ecmd, advertising, Pause);\n \t\tif (oct->subsystem_id == OCTEON_CN2350_25GB_SUBSYS_ID ||\n \t\t oct->subsystem_id == OCTEON_CN2360_25GB_SUBSYS_ID) {\n \t\t\tif (OCTEON_CN23XX_PF(oct)) {\n-\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t(ecmd, supported, 25000baseSR_Full);\n-\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t(ecmd, supported, 25000baseKR_Full);\n-\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t(ecmd, supported, 25000baseCR_Full);\n+\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t 25000baseSR_Full);\n+\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t 25000baseKR_Full);\n+\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t 25000baseCR_Full);\n \n \t\t\t\tif (oct->no_speed_setting == 0) {\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 10000baseSR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 10000baseKR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 10000baseCR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 10000baseSR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 10000baseKR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 10000baseCR_Full);\n \t\t\t\t}\n \n \t\t\t\tif (oct->no_speed_setting == 0)\n@@ -296,77 +291,57 @@ static int lio_get_link_ksettings(struct net_device *netdev,\n \t\t\t\t\toct->speed_setting = 25;\n \n \t\t\t\tif (oct->speed_setting == 10) {\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 10000baseSR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 10000baseKR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 10000baseCR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 10000baseSR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 10000baseKR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 10000baseCR_Full);\n \t\t\t\t}\n \t\t\t\tif (oct->speed_setting == 25) {\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 25000baseSR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 25000baseKR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 25000baseCR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 25000baseSR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 25000baseKR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 25000baseCR_Full);\n \t\t\t\t}\n \t\t\t} else { /* VF */\n \t\t\t\tif (linfo->link.s.speed == 10000) {\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 10000baseSR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 10000baseKR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 10000baseCR_Full);\n-\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 10000baseSR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 10000baseKR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 10000baseCR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 10000baseSR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 10000baseKR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 10000baseCR_Full);\n+\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 10000baseSR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 10000baseKR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 10000baseCR_Full);\n \t\t\t\t}\n \n \t\t\t\tif (linfo->link.s.speed == 25000) {\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 25000baseSR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 25000baseKR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, supported,\n-\t\t\t\t\t\t 25000baseCR_Full);\n-\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 25000baseSR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 25000baseKR_Full);\n-\t\t\t\t\tethtool_link_ksettings_add_link_mode\n-\t\t\t\t\t\t(ecmd, advertising,\n-\t\t\t\t\t\t 25000baseCR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 25000baseSR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 25000baseKR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, supported,\n+\t\t\t\t\t\t\t 25000baseCR_Full);\n+\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 25000baseSR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 25000baseKR_Full);\n+\t\t\t\t\tethtool_ks_add_mode(ecmd, advertising,\n+\t\t\t\t\t\t\t 25000baseCR_Full);\n \t\t\t\t}\n \t\t\t}\n \t\t} else {\n-\t\t\tethtool_link_ksettings_add_link_mode(ecmd, supported,\n-\t\t\t\t\t\t\t 10000baseT_Full);\n-\t\t\tethtool_link_ksettings_add_link_mode(ecmd, advertising,\n-\t\t\t\t\t\t\t 10000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ecmd, supported, 10000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ecmd, advertising, 10000baseT_Full);\n \t\t}\n \t\tbreak;\n \t}\ndiff --git a/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c b/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c\nindex 5603f5ab1fee..4beaab6ff602 100644\n--- a/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c\n+++ b/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c\n@@ -174,10 +174,8 @@ static int nicvf_get_link_ksettings(struct net_device *netdev,\n \tcmd->base.duplex = nic->duplex;\n \tcmd->base.speed = nic->speed;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c\nindex 8623be13bf86..f54fd1a57b14 100644\n--- a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c\n+++ b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c\n@@ -590,10 +590,8 @@ static int get_link_ksettings(struct net_device *dev,\n \tcmd->base.phy_address = p->phy->mdio.prtad;\n \tcmd->base.autoneg = p->link_config.autoneg;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -641,8 +639,7 @@ static int set_link_ksettings(struct net_device *dev,\n \tstruct link_config *lc = &p->link_config;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (!(lc->supported & SUPPORTED_Autoneg))\n \t\treturn -EOPNOTSUPP; /* can't change speed/duplex */\ndiff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c\nindex 2edfdbdaae48..401648fd51c2 100644\n--- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c\n+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c\n@@ -1807,10 +1807,9 @@ static int get_link_ksettings(struct net_device *dev,\n \tstruct port_info *p = netdev_priv(dev);\n \tu32 supported;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tp->link_config.supported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tp->link_config.advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, p->link_config.supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising,\n+\t\t\t p->link_config.advertising);\n \n \tif (netif_carrier_ok(dev)) {\n \t\tcmd->base.speed = p->link_config.speed;\n@@ -1820,8 +1819,7 @@ static int get_link_ksettings(struct net_device *dev,\n \t\tcmd->base.duplex = DUPLEX_UNKNOWN;\n \t}\n \n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n \n \tcmd->base.port = (supported & SUPPORTED_TP) ? PORT_TP : PORT_FIBRE;\n \tcmd->base.phy_address = p->phy.mdio.prtad;\n@@ -1871,8 +1869,7 @@ static int set_link_ksettings(struct net_device *dev,\n \tstruct link_config *lc = &p->link_config;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (!(lc->supported & SUPPORTED_Autoneg)) {\n \t\t/*\ndiff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c\nindex 59d04d73c672..46fe071c2f2d 100644\n--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c\n+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c\n@@ -728,9 +728,9 @@ static int get_link_ksettings(struct net_device *dev,\n \tif (!netif_running(dev))\n \t\t(void)t4_update_port_info(pi);\n \n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, supported);\n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);\n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, lp_advertising);\n+\tethtool_ks_clear(link_ksettings, supported);\n+\tethtool_ks_clear(link_ksettings, advertising);\n+\tethtool_ks_clear(link_ksettings, lp_advertising);\n \n \tbase->port = from_fw_port_mod_type(pi->port_type, pi->mod_type);\n \n@@ -761,27 +761,20 @@ static int get_link_ksettings(struct net_device *dev,\n \n \tif (pi->link_cfg.fc & PAUSE_RX) {\n \t\tif (pi->link_cfg.fc & PAUSE_TX) {\n-\t\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t\t advertising,\n-\t\t\t\t\t\t\t Pause);\n+\t\t\tethtool_ks_add_mode(link_ksettings, advertising, Pause);\n \t\t} else {\n-\t\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t\t advertising,\n-\t\t\t\t\t\t\t Asym_Pause);\n+\t\t\tethtool_ks_add_mode(link_ksettings, advertising,\n+\t\t\t\t\t Asym_Pause);\n \t\t}\n \t} else if (pi->link_cfg.fc & PAUSE_TX) {\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Asym_Pause);\n \t}\n \n \tbase->autoneg = pi->link_cfg.autoneg;\n \tif (pi->link_cfg.pcaps & FW_PORT_CAP32_ANEG)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, Autoneg);\n \tif (pi->link_cfg.autoneg)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Autoneg);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c\nindex 71f13bd2b5e4..25b2c43a7f3d 100644\n--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c\n+++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c\n@@ -1388,9 +1388,9 @@ static int cxgb4vf_get_link_ksettings(struct net_device *dev,\n \tif (!netif_running(dev))\n \t\t(void)t4vf_update_port_info(pi);\n \n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, supported);\n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);\n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, lp_advertising);\n+\tethtool_ks_clear(link_ksettings, supported);\n+\tethtool_ks_clear(link_ksettings, advertising);\n+\tethtool_ks_clear(link_ksettings, lp_advertising);\n \n \tbase->port = from_fw_port_mod_type(pi->port_type, pi->mod_type);\n \n@@ -1421,27 +1421,20 @@ static int cxgb4vf_get_link_ksettings(struct net_device *dev,\n \n \tif (pi->link_cfg.fc & PAUSE_RX) {\n \t\tif (pi->link_cfg.fc & PAUSE_TX) {\n-\t\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t\t advertising,\n-\t\t\t\t\t\t\t Pause);\n+\t\t\tethtool_ks_add_mode(link_ksettings, advertising, Pause);\n \t\t} else {\n-\t\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t\t advertising,\n-\t\t\t\t\t\t\t Asym_Pause);\n+\t\t\tethtool_ks_add_mode(link_ksettings, advertising,\n+\t\t\t\t\t Asym_Pause);\n \t\t}\n \t} else if (pi->link_cfg.fc & PAUSE_TX) {\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Asym_Pause);\n \t}\n \n \tbase->autoneg = pi->link_cfg.autoneg;\n \tif (pi->link_cfg.pcaps & FW_PORT_CAP32_ANEG)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, Autoneg);\n \tif (pi->link_cfg.autoneg)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Autoneg);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/cisco/enic/enic_ethtool.c b/drivers/net/ethernet/cisco/enic/enic_ethtool.c\nindex 869006c2002d..157988f26bc9 100644\n--- a/drivers/net/ethernet/cisco/enic/enic_ethtool.c\n+++ b/drivers/net/ethernet/cisco/enic/enic_ethtool.c\n@@ -110,12 +110,10 @@ static int enic_get_ksettings(struct net_device *netdev,\n \tstruct enic *enic = netdev_priv(netdev);\n \tstruct ethtool_link_settings *base = &ecmd->base;\n \n-\tethtool_link_ksettings_add_link_mode(ecmd, supported,\n-\t\t\t\t\t 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE);\n-\tethtool_link_ksettings_add_link_mode(ecmd, advertising,\n-\t\t\t\t\t 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(ecmd, advertising, FIBRE);\n+\tethtool_ks_add_mode(ecmd, supported, 10000baseT_Full);\n+\tethtool_ks_add_mode(ecmd, supported, FIBRE);\n+\tethtool_ks_add_mode(ecmd, advertising, 10000baseT_Full);\n+\tethtool_ks_add_mode(ecmd, advertising, FIBRE);\n \tbase->port = PORT_FIBRE;\n \n \tif (netif_carrier_ok(netdev)) {\ndiff --git a/drivers/net/ethernet/dec/tulip/de2104x.c b/drivers/net/ethernet/dec/tulip/de2104x.c\nindex 13430f75496c..e15d912ccf29 100644\n--- a/drivers/net/ethernet/dec/tulip/de2104x.c\n+++ b/drivers/net/ethernet/dec/tulip/de2104x.c\n@@ -1486,11 +1486,9 @@ static void __de_get_regs(struct de_private *de, u8 *buf)\n static void __de_get_link_ksettings(struct de_private *de,\n \t\t\t\t struct ethtool_link_ksettings *cmd)\n {\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tde->media_supported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, de->media_supported);\n \tcmd->base.phy_address = 0;\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tde->media_advertise);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, de->media_advertise);\n \n \tswitch (de->media_type) {\n \tcase DE_MEDIA_AUI:\n@@ -1529,8 +1527,7 @@ static int __de_set_link_ksettings(struct de_private *de,\n \tu8 autoneg = cmd->base.autoneg;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (cmd->base.speed != 10)\n \t\treturn -EINVAL;\ndiff --git a/drivers/net/ethernet/dec/tulip/uli526x.c b/drivers/net/ethernet/dec/tulip/uli526x.c\nindex 488a744084c9..82aad26852c8 100644\n--- a/drivers/net/ethernet/dec/tulip/uli526x.c\n+++ b/drivers/net/ethernet/dec/tulip/uli526x.c\n@@ -943,10 +943,8 @@ ULi_ethtool_get_link_ksettings(struct uli526x_board_info *db,\n \t ADVERTISED_Autoneg |\n \t ADVERTISED_MII);\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \tcmd->base.port = PORT_MII;\n \tcmd->base.phy_address = db->phy_addr;\ndiff --git a/drivers/net/ethernet/dlink/dl2k.c b/drivers/net/ethernet/dlink/dl2k.c\nindex f0536b16b3c3..be89239c9aa6 100644\n--- a/drivers/net/ethernet/dlink/dl2k.c\n+++ b/drivers/net/ethernet/dlink/dl2k.c\n@@ -1288,10 +1288,8 @@ static int rio_get_link_ksettings(struct net_device *dev,\n \n \tcmd->base.phy_address = np->phy_addr;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c\nindex 7f7e206f95f8..a4750a67ccc2 100644\n--- a/drivers/net/ethernet/emulex/benet/be_ethtool.c\n+++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c\n@@ -673,10 +673,8 @@ static int be_get_link_ksettings(struct net_device *netdev,\n \t\tDUPLEX_FULL : DUPLEX_UNKNOWN;\n \tcmd->base.phy_address = adapter->port_num;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c\nindex 2e14a3ae1d8b..c3c5fe139b29 100644\n--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c\n+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c\n@@ -139,10 +139,8 @@ static int hns_nic_get_link_ksettings(struct net_device *net_dev,\n \t\treturn -EINVAL;\n \t}\n \n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \t/* When there is no phy, autoneg is off. */\n \tcmd->base.autoneg = false;\n@@ -185,10 +183,8 @@ static int hns_nic_get_link_ksettings(struct net_device *net_dev,\n \tif (!(AE_IS_VER1(priv->enet_ver) && h->port_type == HNAE_PORT_DEBUG))\n \t\tsupported |= SUPPORTED_Pause;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \tcmd->base.mdio_support = ETH_MDIO_SUPPORTS_C45 | ETH_MDIO_SUPPORTS_C22;\n \thns_get_mdix_mode(net_dev, cmd);\ndiff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c\nindex c16bb6cb0564..c1fafcd7ac9b 100644\n--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c\n+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c\n@@ -605,12 +605,10 @@ static int hns3_get_link_ksettings(struct net_device *netdev,\n \t\th->ae_algo->ops->get_flowctrl_adv(h, &flowctrl_adv);\n \n \tif (flowctrl_adv & ADVERTISED_Pause)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n-\t\t\t\t\t\t Pause);\n+\t\tethtool_ks_add_mode(cmd, advertising, Pause);\n \n \tif (flowctrl_adv & ADVERTISED_Asym_Pause)\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_add_mode(cmd, advertising, Asym_Pause);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c\nindex 5b122728dcb4..ba4bca3df871 100644\n--- a/drivers/net/ethernet/huawei/hinic/hinic_main.c\n+++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c\n@@ -118,9 +118,8 @@ static int hinic_get_link_ksettings(struct net_device *netdev,\n \tstruct hinic_port_cap port_cap;\n \tint err;\n \n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);\n-\tethtool_link_ksettings_add_link_mode(link_ksettings, supported,\n-\t\t\t\t\t Autoneg);\n+\tethtool_ks_clear(link_ksettings, advertising);\n+\tethtool_ks_add_mode(link_ksettings, supported, Autoneg);\n \n \tlink_ksettings->base.speed = SPEED_UNKNOWN;\n \tlink_ksettings->base.autoneg = AUTONEG_DISABLE;\n@@ -148,8 +147,7 @@ static int hinic_get_link_ksettings(struct net_device *netdev,\n \tset_link_speed(link_ksettings, port_cap.speed);\n \n \tif (!!(port_cap.autoneg_cap & HINIC_AUTONEG_SUPPORTED))\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Autoneg);\n \n \tif (port_cap.autoneg_state == HINIC_AUTONEG_ACTIVE)\n \t\tlink_ksettings->base.autoneg = AUTONEG_ENABLE;\ndiff --git a/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c b/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c\nindex 4f58d338d739..284b59da8b22 100644\n--- a/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c\n+++ b/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c\n@@ -87,10 +87,8 @@ static int ehea_get_link_ksettings(struct net_device *dev,\n \tcmd->base.autoneg = port->autoneg == 1 ?\n \t\tAUTONEG_ENABLE : AUTONEG_DISABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c\nindex 354c0982847b..893fb138aa70 100644\n--- a/drivers/net/ethernet/ibm/emac/core.c\n+++ b/drivers/net/ethernet/ibm/emac/core.c\n@@ -2032,10 +2032,8 @@ static int emac_ethtool_get_link_ksettings(struct net_device *ndev,\n \tcmd->base.duplex = dev->phy.duplex;\n \tmutex_unlock(&dev->link_lock);\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -2048,8 +2046,7 @@ emac_ethtool_set_link_ksettings(struct net_device *ndev,\n \tu32 f = dev->phy.features;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tDBG(dev, \"set_settings(%d, %d, %d, 0x%08x)\" NL,\n \t cmd->base.autoneg, cmd->base.speed, cmd->base.duplex, advertising);\ndiff --git a/drivers/net/ethernet/ibm/ibmveth.c b/drivers/net/ethernet/ibm/ibmveth.c\nindex c1b51edaaf62..a2efb5c4c421 100644\n--- a/drivers/net/ethernet/ibm/ibmveth.c\n+++ b/drivers/net/ethernet/ibm/ibmveth.c\n@@ -740,10 +740,8 @@ static int netdev_get_link_ksettings(struct net_device *dev,\n \tcmd->base.phy_address = 0;\n \tcmd->base.autoneg = AUTONEG_ENABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c\nindex 6e8d6a6f6aaf..ad2eeb2ae403 100644\n--- a/drivers/net/ethernet/ibm/ibmvnic.c\n+++ b/drivers/net/ethernet/ibm/ibmvnic.c\n@@ -2205,10 +2205,8 @@ static int ibmvnic_get_link_ksettings(struct net_device *netdev,\n \tcmd->base.phy_address = 0;\n \tcmd->base.autoneg = AUTONEG_ENABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/intel/e1000/e1000_ethtool.c b/drivers/net/ethernet/intel/e1000/e1000_ethtool.c\nindex 5d365a986bb0..fdd5549f8a8c 100644\n--- a/drivers/net/ethernet/intel/e1000/e1000_ethtool.c\n+++ b/drivers/net/ethernet/intel/e1000/e1000_ethtool.c\n@@ -153,10 +153,8 @@ static int e1000_get_link_ksettings(struct net_device *netdev,\n \telse\n \t\tcmd->base.eth_tp_mdix_ctrl = hw->mdix;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -168,8 +166,7 @@ static int e1000_set_link_ksettings(struct net_device *netdev,\n \tstruct e1000_hw *hw = &adapter->hw;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \t/* MDI setting is only allowed when autoneg enabled because\n \t * some hardware doesn't allow MDI setting when speed or\ndiff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c\nindex e084cb734eb1..882f6baf8d9f 100644\n--- a/drivers/net/ethernet/intel/e1000e/ethtool.c\n+++ b/drivers/net/ethernet/intel/e1000e/ethtool.c\n@@ -185,10 +185,8 @@ static int e1000_get_link_ksettings(struct net_device *netdev,\n \tif (hw->phy.media_type != e1000_media_type_copper)\n \t\tcmd->base.eth_tp_mdix_ctrl = ETH_TP_MDI_INVALID;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -256,8 +254,7 @@ static int e1000_set_link_ksettings(struct net_device *netdev,\n \tint ret_val = 0;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tpm_runtime_get_sync(netdev->dev.parent);\n \ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\nindex 329e59eae4a1..4b78225966c4 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n@@ -244,20 +244,16 @@ static void i40e_phy_type_to_ethtool(struct i40e_pf *pf,\n \tstruct i40e_link_status *hw_link_info = &pf->hw.phy.link_info;\n \tu64 phy_types = pf->hw.phy.phy_types;\n \n-\tethtool_link_ksettings_zero_link_mode(ks, supported);\n-\tethtool_link_ksettings_zero_link_mode(ks, advertising);\n+\tethtool_ks_clear(ks, supported);\n+\tethtool_ks_clear(ks, advertising);\n \n \tif (phy_types & I40E_CAP_PHY_TYPE_SGMII) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 1000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 1000baseT_Full);\n \t\tif (pf->hw_features & I40E_HW_100M_SGMII_CAPABLE) {\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t\t 100baseT_Full);\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 100baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, supported, 100baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 100baseT_Full);\n \t\t}\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_XAUI ||\n@@ -265,150 +261,111 @@ static void i40e_phy_type_to_ethtool(struct i40e_pf *pf,\n \t phy_types & I40E_CAP_PHY_TYPE_SFI ||\n \t phy_types & I40E_CAP_PHY_TYPE_10GBASE_SFPP_CU ||\n \t phy_types & I40E_CAP_PHY_TYPE_10GBASE_AOC) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseT_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_10GBASE_T) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseT_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_XLAUI ||\n \t phy_types & I40E_CAP_PHY_TYPE_XLPPI ||\n \t phy_types & I40E_CAP_PHY_TYPE_40GBASE_AOC)\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseCR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseCR4_Full);\n \tif (phy_types & I40E_CAP_PHY_TYPE_40GBASE_CR4_CU ||\n \t phy_types & I40E_CAP_PHY_TYPE_40GBASE_CR4) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseCR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseCR4_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_40GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 40000baseCR4_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 40000baseCR4_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_100BASE_TX) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 100baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 100baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_100MB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 100baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 100baseT_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_1000BASE_T) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 1000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 1000baseT_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_40GBASE_SR4)\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseSR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseSR4_Full);\n \tif (phy_types & I40E_CAP_PHY_TYPE_40GBASE_LR4)\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseLR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseLR4_Full);\n \tif (phy_types & I40E_CAP_PHY_TYPE_40GBASE_KR4) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseLR4_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 40000baseLR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseLR4_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 40000baseLR4_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_20GBASE_KR2) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 20000baseKR2_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 20000baseKR2_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_20GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 20000baseKR2_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 20000baseKR2_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_10GBASE_KX4) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseKX4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseKX4_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseKX4_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseKX4_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_10GBASE_KR &&\n \t !(pf->hw_features & I40E_HW_HAVE_CRT_RETIMER)) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseKR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseKR_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseKR_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseKR_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_1000BASE_KX &&\n \t !(pf->hw_features & I40E_HW_HAVE_CRT_RETIMER)) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseKX_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseKX_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 1000baseKX_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 1000baseKX_Full);\n \t}\n \t/* need to add 25G PHY types */\n \tif (phy_types & I40E_CAP_PHY_TYPE_25GBASE_KR) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 25000baseKR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 25000baseKR_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_25GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 25000baseKR_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 25000baseKR_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_25GBASE_CR) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 25000baseCR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 25000baseCR_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_25GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 25000baseCR_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 25000baseCR_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_25GBASE_SR ||\n \t phy_types & I40E_CAP_PHY_TYPE_25GBASE_LR) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 25000baseSR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 25000baseSR_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_25GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 25000baseSR_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 25000baseSR_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_25GBASE_AOC ||\n \t phy_types & I40E_CAP_PHY_TYPE_25GBASE_ACC) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 25000baseCR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 25000baseCR_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_25GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 25000baseCR_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 25000baseCR_Full);\n \t}\n \t/* need to add new 10G PHY types */\n \tif (phy_types & I40E_CAP_PHY_TYPE_10GBASE_CR1 ||\n \t phy_types & I40E_CAP_PHY_TYPE_10GBASE_CR1_CU) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseCR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseCR_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseCR_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseCR_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_10GBASE_SR) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseSR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseSR_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseSR_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseSR_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_10GBASE_LR) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseLR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseLR_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseLR_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseLR_Full);\n \t}\n \tif (phy_types & I40E_CAP_PHY_TYPE_1000BASE_SX ||\n \t phy_types & I40E_CAP_PHY_TYPE_1000BASE_LX ||\n \t phy_types & I40E_CAP_PHY_TYPE_1000BASE_T_OPTICAL) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseX_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseX_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 1000baseX_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 1000baseX_Full);\n \t}\n \t/* Autoneg PHY types */\n \tif (phy_types & I40E_CAP_PHY_TYPE_SGMII ||\n@@ -433,10 +390,8 @@ static void i40e_phy_type_to_ethtool(struct i40e_pf *pf,\n \t phy_types & I40E_CAP_PHY_TYPE_1000BASE_LX ||\n \t phy_types & I40E_CAP_PHY_TYPE_1000BASE_KX ||\n \t phy_types & I40E_CAP_PHY_TYPE_100BASE_TX) {\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n \t}\n }\n \n@@ -460,26 +415,21 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,\n \tswitch (hw_link_info->phy_type) {\n \tcase I40E_PHY_TYPE_40GBASE_CR4:\n \tcase I40E_PHY_TYPE_40GBASE_CR4_CU:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseCR4_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 40000baseCR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseCR4_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, 40000baseCR4_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_XLAUI:\n \tcase I40E_PHY_TYPE_XLPPI:\n \tcase I40E_PHY_TYPE_40GBASE_AOC:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseCR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseCR4_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_40GBASE_SR4:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseSR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseSR4_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_40GBASE_LR4:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseLR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseLR4_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_25GBASE_SR:\n \tcase I40E_PHY_TYPE_25GBASE_LR:\n@@ -487,104 +437,78 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,\n \tcase I40E_PHY_TYPE_10GBASE_LR:\n \tcase I40E_PHY_TYPE_1000BASE_SX:\n \tcase I40E_PHY_TYPE_1000BASE_LX:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 25000baseSR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 25000baseSR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseSR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseSR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseLR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseLR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseX_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 1000baseX_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 25000baseSR_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 25000baseSR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseSR_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 10000baseSR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseLR_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 10000baseLR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseX_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 1000baseX_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseT_Full);\n \t\tif (hw_link_info->module_type[2] &\n \t\t I40E_MODULE_TYPE_1000BASE_SX ||\n \t\t hw_link_info->module_type[2] &\n \t\t I40E_MODULE_TYPE_1000BASE_LX) {\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t\t 1000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, supported, 1000baseT_Full);\n \t\t\tif (hw_link_info->requested_speeds &\n \t\t\t I40E_LINK_SPEED_1GB)\n-\t\t\t\tethtool_link_ksettings_add_link_mode(\n-\t\t\t\t ks, advertising, 1000baseT_Full);\n+\t\t\t\tethtool_ks_add_mode(ks, advertising,\n+\t\t\t\t\t\t 1000baseT_Full);\n \t\t}\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseT_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_10GBASE_T:\n \tcase I40E_PHY_TYPE_1000BASE_T:\n \tcase I40E_PHY_TYPE_100BASE_TX:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 100baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 100baseT_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 1000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 1000baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_100MB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 100baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 100baseT_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_1000BASE_T_OPTICAL:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 1000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, 1000baseT_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_10GBASE_CR1_CU:\n \tcase I40E_PHY_TYPE_10GBASE_CR1:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, 10000baseT_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_XAUI:\n \tcase I40E_PHY_TYPE_XFI:\n \tcase I40E_PHY_TYPE_SFI:\n \tcase I40E_PHY_TYPE_10GBASE_SFPP_CU:\n \tcase I40E_PHY_TYPE_10GBASE_AOC:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 10000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 10000baseT_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_SGMII:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseT_Full);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseT_Full);\n \t\tif (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t\t 1000baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, advertising, 1000baseT_Full);\n \t\tif (pf->hw_features & I40E_HW_100M_SGMII_CAPABLE) {\n-\t\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t\t 100baseT_Full);\n+\t\t\tethtool_ks_add_mode(ks, supported, 100baseT_Full);\n \t\t\tif (hw_link_info->requested_speeds &\n \t\t\t I40E_LINK_SPEED_100MB)\n-\t\t\t\tethtool_link_ksettings_add_link_mode(\n-\t\t\t\t ks, advertising, 100baseT_Full);\n+\t\t\t\tethtool_ks_add_mode(ks, advertising,\n+\t\t\t\t\t\t 100baseT_Full);\n \t\t}\n \t\tbreak;\n \tcase I40E_PHY_TYPE_40GBASE_KR4:\n@@ -593,54 +517,36 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,\n \tcase I40E_PHY_TYPE_10GBASE_KR:\n \tcase I40E_PHY_TYPE_10GBASE_KX4:\n \tcase I40E_PHY_TYPE_1000BASE_KX:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 40000baseKR4_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 25000baseKR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 20000baseKR2_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseKR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseKX4_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 1000baseKX_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 40000baseKR4_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 25000baseKR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 20000baseKR2_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseKR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseKX4_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 1000baseKX_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 40000baseKR4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 25000baseKR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 20000baseKR2_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseKR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseKX4_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 1000baseKX_Full);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, 40000baseKR4_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 25000baseKR_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 20000baseKR2_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 10000baseKR_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 10000baseKX4_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 1000baseKX_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_25GBASE_CR:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 25000baseCR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 25000baseCR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 25000baseCR_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 25000baseCR_Full);\n \t\tbreak;\n \tcase I40E_PHY_TYPE_25GBASE_AOC:\n \tcase I40E_PHY_TYPE_25GBASE_ACC:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 25000baseCR_Full);\n-\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 25000baseCR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t\t 10000baseCR_Full);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseCR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, 25000baseCR_Full);\n+\n+\t\tethtool_ks_add_mode(ks, advertising, 25000baseCR_Full);\n+\t\tethtool_ks_add_mode(ks, supported, 10000baseCR_Full);\n+\t\tethtool_ks_add_mode(ks, advertising, 10000baseCR_Full);\n \t\tbreak;\n \tdefault:\n \t\t/* if we got here and link is up something bad is afoot */\n@@ -721,8 +627,8 @@ static int i40e_get_link_ksettings(struct net_device *netdev,\n \tstruct i40e_link_status *hw_link_info = &hw->phy.link_info;\n \tbool link_up = hw_link_info->link_info & I40E_AQ_LINK_UP;\n \n-\tethtool_link_ksettings_zero_link_mode(ks, supported);\n-\tethtool_link_ksettings_zero_link_mode(ks, advertising);\n+\tethtool_ks_clear(ks, supported);\n+\tethtool_ks_clear(ks, advertising);\n \n \tif (link_up)\n \t\ti40e_get_settings_link_up(hw, ks, netdev, pf);\n@@ -737,26 +643,25 @@ static int i40e_get_link_ksettings(struct net_device *netdev,\n \t/* Set media type settings */\n \tswitch (hw->phy.media_type) {\n \tcase I40E_MEDIA_TYPE_BACKPLANE:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Backplane);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t Backplane);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, Backplane);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, Backplane);\n \t\tks->base.port = PORT_NONE;\n \t\tbreak;\n \tcase I40E_MEDIA_TYPE_BASET:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, TP);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, TP);\n+\t\tethtool_ks_add_mode(ks, supported, TP);\n+\t\tethtool_ks_add_mode(ks, advertising, TP);\n \t\tks->base.port = PORT_TP;\n \t\tbreak;\n \tcase I40E_MEDIA_TYPE_DA:\n \tcase I40E_MEDIA_TYPE_CX4:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, FIBRE);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, FIBRE);\n+\t\tethtool_ks_add_mode(ks, supported, FIBRE);\n+\t\tethtool_ks_add_mode(ks, advertising, FIBRE);\n \t\tks->base.port = PORT_DA;\n \t\tbreak;\n \tcase I40E_MEDIA_TYPE_FIBER:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, FIBRE);\n+\t\tethtool_ks_add_mode(ks, supported, FIBRE);\n \t\tks->base.port = PORT_FIBRE;\n \t\tbreak;\n \tcase I40E_MEDIA_TYPE_UNKNOWN:\n@@ -766,25 +671,22 @@ static int i40e_get_link_ksettings(struct net_device *netdev,\n \t}\n \n \t/* Set flow control settings */\n-\tethtool_link_ksettings_add_link_mode(ks, supported, Pause);\n+\tethtool_ks_add_mode(ks, supported, Pause);\n \n \tswitch (hw->fc.requested_mode) {\n \tcase I40E_FC_FULL:\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Pause);\n \t\tbreak;\n \tcase I40E_FC_TX_PAUSE:\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Asym_Pause);\n \t\tbreak;\n \tcase I40E_FC_RX_PAUSE:\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Pause);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Asym_Pause);\n \t\tbreak;\n \tdefault:\n-\t\tethtool_link_ksettings_del_link_mode(ks, advertising, Pause);\n-\t\tethtool_link_ksettings_del_link_mode(ks, advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_del_mode(ks, advertising, Pause);\n+\t\tethtool_ks_del_mode(ks, advertising, Asym_Pause);\n \t\tbreak;\n \t}\n \n@@ -897,9 +799,7 @@ static int i40e_set_link_ksettings(struct net_device *netdev,\n \t\t/* If autoneg was not already enabled */\n \t\tif (!(hw->phy.link_info.an_info & I40E_AQ_AN_COMPLETED)) {\n \t\t\t/* If autoneg is not supported, return error */\n-\t\t\tif (!ethtool_link_ksettings_test_link_mode(&safe_ks,\n-\t\t\t\t\t\t\t\t supported,\n-\t\t\t\t\t\t\t\t Autoneg)) {\n+\t\t\tif (!ethtool_ks_test(&safe_ks, supported, Autoneg)) {\n \t\t\t\tnetdev_info(netdev, \"Autoneg not supported on this phy\\n\");\n \t\t\t\terr = -EINVAL;\n \t\t\t\tgoto done;\n@@ -915,9 +815,7 @@ static int i40e_set_link_ksettings(struct net_device *netdev,\n \t\t\t/* If autoneg is supported 10GBASE_T is the only PHY\n \t\t\t * that can disable it, so otherwise return error\n \t\t\t */\n-\t\t\tif (ethtool_link_ksettings_test_link_mode(&safe_ks,\n-\t\t\t\t\t\t\t\t supported,\n-\t\t\t\t\t\t\t\t Autoneg) &&\n+\t\t\tif (ethtool_ks_test(&safe_ks, supported, Autoneg) &&\n \t\t\t hw->phy.link_info.phy_type !=\n \t\t\t I40E_PHY_TYPE_10GBASE_T) {\n \t\t\t\tnetdev_info(netdev, \"Autoneg cannot be disabled on this phy\\n\");\n@@ -931,47 +829,29 @@ static int i40e_set_link_ksettings(struct net_device *netdev,\n \t\t}\n \t}\n \n-\tif (ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 100baseT_Full))\n+\tif (ethtool_ks_test(ks, advertising, 100baseT_Full))\n \t\tconfig.link_speed |= I40E_LINK_SPEED_100MB;\n-\tif (ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 1000baseT_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 1000baseX_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 1000baseKX_Full))\n+\tif (ethtool_ks_test(ks, advertising, 1000baseT_Full) ||\n+\t ethtool_ks_test(ks, advertising, 1000baseX_Full) ||\n+\t ethtool_ks_test(ks, advertising, 1000baseKX_Full))\n \t\tconfig.link_speed |= I40E_LINK_SPEED_1GB;\n-\tif (ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseT_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseKX4_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseKR_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseCR_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseSR_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 10000baseLR_Full))\n+\tif (ethtool_ks_test(ks, advertising, 10000baseT_Full) ||\n+\t ethtool_ks_test(ks, advertising, 10000baseKX4_Full) ||\n+\t ethtool_ks_test(ks, advertising, 10000baseKR_Full) ||\n+\t ethtool_ks_test(ks, advertising, 10000baseCR_Full) ||\n+\t ethtool_ks_test(ks, advertising, 10000baseSR_Full) ||\n+\t ethtool_ks_test(ks, advertising, 10000baseLR_Full))\n \t\tconfig.link_speed |= I40E_LINK_SPEED_10GB;\n-\tif (ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 20000baseKR2_Full))\n+\tif (ethtool_ks_test(ks, advertising, 20000baseKR2_Full))\n \t\tconfig.link_speed |= I40E_LINK_SPEED_20GB;\n-\tif (ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 25000baseCR_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 25000baseKR_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 25000baseSR_Full))\n+\tif (ethtool_ks_test(ks, advertising, 25000baseCR_Full) ||\n+\t ethtool_ks_test(ks, advertising, 25000baseKR_Full) ||\n+\t ethtool_ks_test(ks, advertising, 25000baseSR_Full))\n \t\tconfig.link_speed |= I40E_LINK_SPEED_25GB;\n-\tif (ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 40000baseKR4_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 40000baseCR4_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 40000baseSR4_Full) ||\n-\t ethtool_link_ksettings_test_link_mode(ks, advertising,\n-\t\t\t\t\t\t 40000baseLR4_Full))\n+\tif (ethtool_ks_test(ks, advertising, 40000baseKR4_Full) ||\n+\t ethtool_ks_test(ks, advertising, 40000baseCR4_Full) ||\n+\t ethtool_ks_test(ks, advertising, 40000baseSR4_Full) ||\n+\t ethtool_ks_test(ks, advertising, 40000baseLR4_Full))\n \t\tconfig.link_speed |= I40E_LINK_SPEED_40GB;\n \n \t/* If speed didn't get set, set it to what it currently is.\ndiff --git a/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c b/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c\nindex 69efe0aec76a..ba94d9a0a29e 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c\n@@ -76,7 +76,7 @@ static int i40evf_get_link_ksettings(struct net_device *netdev,\n {\n \tstruct i40evf_adapter *adapter = netdev_priv(netdev);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n+\tethtool_ks_clear(cmd, supported);\n \tcmd->base.autoneg = AUTONEG_DISABLE;\n \tcmd->base.port = PORT_NONE;\n \t/* Set speed and duplex */\ndiff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c\nindex 1db304c01d10..c85b2c5b9369 100644\n--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c\n+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c\n@@ -318,10 +318,8 @@ ice_get_link_ksettings(struct net_device *netdev,\n \thw_link_info = &vsi->port_info->phy.link_info;\n \tlink_up = hw_link_info->link_info & ICE_AQ_LINK_UP;\n \n-\tethtool_link_ksettings_add_link_mode(ks, supported,\n-\t\t\t\t\t 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t 10000baseT_Full);\n+\tethtool_ks_add_mode(ks, supported, 10000baseT_Full);\n+\tethtool_ks_add_mode(ks, advertising, 10000baseT_Full);\n \n \t/* set speed and duplex */\n \tif (link_up) {\n@@ -362,25 +360,24 @@ ice_get_link_ksettings(struct net_device *netdev,\n \t/* set media type settings */\n \tswitch (vsi->port_info->phy.media_type) {\n \tcase ICE_MEDIA_FIBER:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, FIBRE);\n+\t\tethtool_ks_add_mode(ks, supported, FIBRE);\n \t\tks->base.port = PORT_FIBRE;\n \t\tbreak;\n \tcase ICE_MEDIA_BASET:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, TP);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, TP);\n+\t\tethtool_ks_add_mode(ks, supported, TP);\n+\t\tethtool_ks_add_mode(ks, advertising, TP);\n \t\tks->base.port = PORT_TP;\n \t\tbreak;\n \tcase ICE_MEDIA_BACKPLANE:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, Backplane);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t Backplane);\n+\t\tethtool_ks_add_mode(ks, supported, Autoneg);\n+\t\tethtool_ks_add_mode(ks, supported, Backplane);\n+\t\tethtool_ks_add_mode(ks, advertising, Autoneg);\n+\t\tethtool_ks_add_mode(ks, advertising, Backplane);\n \t\tks->base.port = PORT_NONE;\n \t\tbreak;\n \tcase ICE_MEDIA_DA:\n-\t\tethtool_link_ksettings_add_link_mode(ks, supported, FIBRE);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, FIBRE);\n+\t\tethtool_ks_add_mode(ks, supported, FIBRE);\n+\t\tethtool_ks_add_mode(ks, advertising, FIBRE);\n \t\tks->base.port = PORT_DA;\n \t\tbreak;\n \tdefault:\n@@ -389,26 +386,23 @@ ice_get_link_ksettings(struct net_device *netdev,\n \t}\n \n \t/* flow control is symmetric and always supported */\n-\tethtool_link_ksettings_add_link_mode(ks, supported, Pause);\n+\tethtool_ks_add_mode(ks, supported, Pause);\n \n \tswitch (vsi->port_info->fc.req_mode) {\n \tcase ICE_FC_FULL:\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Pause);\n \t\tbreak;\n \tcase ICE_FC_TX_PAUSE:\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Asym_Pause);\n \t\tbreak;\n \tcase ICE_FC_RX_PAUSE:\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising, Pause);\n-\t\tethtool_link_ksettings_add_link_mode(ks, advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Asym_Pause);\n \t\tbreak;\n \tcase ICE_FC_PFC:\n \tdefault:\n-\t\tethtool_link_ksettings_del_link_mode(ks, advertising, Pause);\n-\t\tethtool_link_ksettings_del_link_mode(ks, advertising,\n-\t\t\t\t\t\t Asym_Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Pause);\n+\t\tethtool_ks_add_mode(ks, advertising, Asym_Pause);\n \t\tbreak;\n \t}\n \ndiff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c\nindex 2d798499d35e..79248669fa4b 100644\n--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c\n+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c\n@@ -248,10 +248,8 @@ static int igb_get_link_ksettings(struct net_device *netdev,\n \telse\n \t\tcmd->base.eth_tp_mdix_ctrl = hw->phy.mdix;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -290,8 +288,7 @@ static int igb_set_link_ksettings(struct net_device *netdev,\n \twhile (test_and_set_bit(__IGB_RESETTING, &adapter->state))\n \t\tusleep_range(1000, 2000);\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (cmd->base.autoneg == AUTONEG_ENABLE) {\n \t\thw->mac.autoneg = 1;\ndiff --git a/drivers/net/ethernet/intel/igbvf/ethtool.c b/drivers/net/ethernet/intel/igbvf/ethtool.c\nindex 3ae358b35227..91bd31f80bf7 100644\n--- a/drivers/net/ethernet/intel/igbvf/ethtool.c\n+++ b/drivers/net/ethernet/intel/igbvf/ethtool.c\n@@ -55,10 +55,10 @@ static int igbvf_get_link_ksettings(struct net_device *netdev,\n \tstruct e1000_hw *hw = &adapter->hw;\n \tu32 status;\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 1000baseT_Full);\n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, 1000baseT_Full);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 1000baseT_Full);\n+\tethtool_ks_clear(cmd, advertising);\n+\tethtool_ks_add_mode(cmd, advertising, 1000baseT_Full);\n \n \tcmd->base.port = -1;\n \ndiff --git a/drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c b/drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c\nindex 43744bf0fc1c..c1e0e286c462 100644\n--- a/drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c\n+++ b/drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c\n@@ -74,13 +74,13 @@ ixgb_get_link_ksettings(struct net_device *netdev,\n {\n \tstruct ixgb_adapter *adapter = netdev_priv(netdev);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 10000baseT_Full);\n+\tethtool_ks_add_mode(cmd, supported, FIBRE);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, FIBRE);\n+\tethtool_ks_clear(cmd, advertising);\n+\tethtool_ks_add_mode(cmd, advertising, 10000baseT_Full);\n+\tethtool_ks_add_mode(cmd, advertising, FIBRE);\n \n \tcmd->base.port = PORT_FIBRE;\n \ndiff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c\nindex bdd179c29ea4..9e1b28c343da 100644\n--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c\n+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c\n@@ -178,8 +178,7 @@ static int ixgbe_get_link_ksettings(struct net_device *netdev,\n \tbool autoneg = false;\n \tu32 supported, advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n \n \thw->mac.ops.get_link_capabilities(hw, &supported_link, &autoneg);\n \n@@ -356,10 +355,8 @@ static int ixgbe_get_link_ksettings(struct net_device *netdev,\n \t\tcmd->base.duplex = DUPLEX_UNKNOWN;\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -373,10 +370,8 @@ static int ixgbe_set_link_ksettings(struct net_device *netdev,\n \ts32 err = 0;\n \tu32 supported, advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif ((hw->phy.media_type == ixgbe_media_type_copper) ||\n \t (hw->phy.multispeed_fiber)) {\ndiff --git a/drivers/net/ethernet/intel/ixgbevf/ethtool.c b/drivers/net/ethernet/intel/ixgbevf/ethtool.c\nindex e7813d76527c..face33dc2ca9 100644\n--- a/drivers/net/ethernet/intel/ixgbevf/ethtool.c\n+++ b/drivers/net/ethernet/intel/ixgbevf/ethtool.c\n@@ -87,8 +87,8 @@ static int ixgbevf_get_link_ksettings(struct net_device *netdev,\n \tu32 link_speed = 0;\n \tbool link_up;\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseT_Full);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 10000baseT_Full);\n \tcmd->base.autoneg = AUTONEG_DISABLE;\n \tcmd->base.port = -1;\n \ndiff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c\nindex 62f204f32316..d8bffe6ac1d7 100644\n--- a/drivers/net/ethernet/marvell/mv643xx_eth.c\n+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c\n@@ -1506,16 +1506,12 @@ mv643xx_eth_get_link_ksettings_phy(struct mv643xx_eth_private *mp,\n \t/*\n \t * The MAC does not support 1000baseT_Half.\n \t */\n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \tsupported &= ~SUPPORTED_1000baseT_Half;\n \tadvertising &= ~ADVERTISED_1000baseT_Half;\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -1551,10 +1547,8 @@ mv643xx_eth_get_link_ksettings_phyless(struct mv643xx_eth_private *mp,\n \tcmd->base.phy_address = 0;\n \tcmd->base.autoneg = AUTONEG_DISABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -1611,11 +1605,9 @@ mv643xx_eth_set_link_ksettings(struct net_device *dev,\n \t/*\n \t * The MAC does not support 1000baseT_Half.\n \t */\n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tc.link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, c.link_modes.advertising);\n \tadvertising &= ~ADVERTISED_1000baseT_Half;\n-\tethtool_convert_legacy_u32_to_link_mode(c.link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(c.link_modes.advertising, advertising);\n \n \tret = phy_ethtool_ksettings_set(dev->phydev, &c);\n \tif (!ret)\ndiff --git a/drivers/net/ethernet/marvell/pxa168_eth.c b/drivers/net/ethernet/marvell/pxa168_eth.c\nindex 3a9730612a70..b72fda65107e 100644\n--- a/drivers/net/ethernet/marvell/pxa168_eth.c\n+++ b/drivers/net/ethernet/marvell/pxa168_eth.c\n@@ -988,8 +988,7 @@ static int pxa168_init_phy(struct net_device *dev)\n \tcmd.base.phy_address = pep->phy_addr;\n \tcmd.base.speed = pep->phy_speed;\n \tcmd.base.duplex = pep->phy_duplex;\n-\tethtool_convert_legacy_u32_to_link_mode(cmd.link_modes.advertising,\n-\t\t\t\t\t\tPHY_BASIC_FEATURES);\n+\tethtool_u32_to_ks(cmd.link_modes.advertising, PHY_BASIC_FEATURES);\n \tcmd.base.autoneg = AUTONEG_ENABLE;\n \n \tif (cmd.base.speed != 0)\ndiff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c\nindex 9c08c3650c02..ff4a598c9e7c 100644\n--- a/drivers/net/ethernet/marvell/skge.c\n+++ b/drivers/net/ethernet/marvell/skge.c\n@@ -320,10 +320,8 @@ static int skge_get_link_ksettings(struct net_device *dev,\n \tcmd->base.speed = skge->speed;\n \tcmd->base.duplex = skge->duplex;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -337,8 +335,7 @@ static int skge_set_link_ksettings(struct net_device *dev,\n \tint err = 0;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (cmd->base.autoneg == AUTONEG_ENABLE) {\n \t\tadvertising = supported;\ndiff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c\nindex 697d9b374f5e..b1f5149892ed 100644\n--- a/drivers/net/ethernet/marvell/sky2.c\n+++ b/drivers/net/ethernet/marvell/sky2.c\n@@ -3613,10 +3613,8 @@ static int sky2_get_link_ksettings(struct net_device *dev,\n \t\t? AUTONEG_ENABLE : AUTONEG_DISABLE;\n \tcmd->base.duplex = sky2->duplex;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -3629,8 +3627,7 @@ static int sky2_set_link_ksettings(struct net_device *dev,\n \tu32 supported = sky2_supported_modes(hw);\n \tu32 new_advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&new_advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&new_advertising, cmd->link_modes.advertising);\n \n \tif (cmd->base.autoneg == AUTONEG_ENABLE) {\n \t\tif (new_advertising & ~supported)\ndiff --git a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c\nindex f11b45001cad..ccae4d26d97e 100644\n--- a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c\n+++ b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c\n@@ -770,8 +770,8 @@ ethtool_get_ptys_link_ksettings(struct net_device *dev,\n \t be32_to_cpu(ptys_reg.eth_proto_lp_adv));\n \n \t/* reset supported/advertising masks */\n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, supported);\n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);\n+\tethtool_ks_clear(link_ksettings, supported);\n+\tethtool_ks_clear(link_ksettings, advertising);\n \n \tptys2ethtool_update_supported_port(link_ksettings->link_modes.supported,\n \t\t\t\t\t &ptys_reg);\n@@ -784,25 +784,19 @@ ethtool_get_ptys_link_ksettings(struct net_device *dev,\n \tptys2ethtool_update_link_modes(link_ksettings->link_modes.advertising,\n \t\t\t\t eth_proto, ADVERTISED);\n \n-\tethtool_link_ksettings_add_link_mode(link_ksettings, supported,\n-\t\t\t\t\t Pause);\n-\tethtool_link_ksettings_add_link_mode(link_ksettings, supported,\n-\t\t\t\t\t Asym_Pause);\n+\tethtool_ks_add_mode(link_ksettings, supported, Pause);\n+\tethtool_ks_add_mode(link_ksettings, supported, Asym_Pause);\n \n \tif (priv->prof->tx_pause)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, Pause);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Pause);\n \tif (priv->prof->tx_pause ^ priv->prof->rx_pause)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, Asym_Pause);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Asym_Pause);\n \n \tlink_ksettings->base.port = ptys_get_active_port(&ptys_reg);\n \n \tif (mlx4_en_autoneg_get(dev)) {\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, Autoneg);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Autoneg);\n \t}\n \n \tlink_ksettings->base.autoneg\n@@ -811,13 +805,12 @@ ethtool_get_ptys_link_ksettings(struct net_device *dev,\n \n \teth_proto = be32_to_cpu(ptys_reg.eth_proto_lp_adv);\n \n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, lp_advertising);\n+\tethtool_ks_clear(link_ksettings, lp_advertising);\n \tptys2ethtool_update_link_modes(\n \t\tlink_ksettings->link_modes.lp_advertising,\n \t\teth_proto, ADVERTISED);\n \tif (priv->port_state.flags & MLX4_EN_PORT_ANC)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t lp_advertising, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, lp_advertising, Autoneg);\n \n \tlink_ksettings->base.phy_address = 0;\n \tlink_ksettings->base.mdio_support = 0;\n@@ -836,27 +829,21 @@ ethtool_get_default_link_ksettings(\n \n \tlink_ksettings->base.autoneg = AUTONEG_DISABLE;\n \n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, supported);\n-\tethtool_link_ksettings_add_link_mode(link_ksettings, supported,\n-\t\t\t\t\t 10000baseT_Full);\n+\tethtool_ks_clear(link_ksettings, supported);\n+\tethtool_ks_add_mode(link_ksettings, supported, 10000baseT_Full);\n \n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);\n-\tethtool_link_ksettings_add_link_mode(link_ksettings, advertising,\n-\t\t\t\t\t 10000baseT_Full);\n+\tethtool_ks_clear(link_ksettings, advertising);\n+\tethtool_ks_add_mode(link_ksettings, advertising, 10000baseT_Full);\n \n \ttrans_type = priv->port_state.transceiver;\n \tif (trans_type > 0 && trans_type <= 0xC) {\n \t\tlink_ksettings->base.port = PORT_FIBRE;\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, FIBRE);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, FIBRE);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, FIBRE);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, FIBRE);\n \t} else if (trans_type == 0x80 || trans_type == 0) {\n \t\tlink_ksettings->base.port = PORT_TP;\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, TP);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, TP);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, TP);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, TP);\n \t} else {\n \t\tlink_ksettings->base.port = -1;\n \t}\ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c\nindex 2b786c4d3dab..a9cdb10e087d 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c\n@@ -550,12 +550,8 @@ static void ptys2ethtool_supported_advertised_port(struct ethtool_link_ksettings\n \t\t\t\t | MLX5E_PROT_MASK(MLX5E_40GBASE_SR4)\n \t\t\t\t | MLX5E_PROT_MASK(MLX5E_100GBASE_SR4)\n \t\t\t\t | MLX5E_PROT_MASK(MLX5E_1000BASE_CX_SGMII))) {\n-\t\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t\t supported,\n-\t\t\t\t\t\t\t FIBRE);\n-\t\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t\t advertising,\n-\t\t\t\t\t\t\t FIBRE);\n+\t\t\tethtool_ks_add_mode(link_ksettings, supported, FIBRE);\n+\t\t\tethtool_ks_add_mode(link_ksettings, advertising, FIBRE);\n \t\t}\n \n \t\tif (eth_proto_cap & (MLX5E_PROT_MASK(MLX5E_100GBASE_KR4)\n@@ -563,52 +559,38 @@ static void ptys2ethtool_supported_advertised_port(struct ethtool_link_ksettings\n \t\t\t\t | MLX5E_PROT_MASK(MLX5E_10GBASE_KR)\n \t\t\t\t | MLX5E_PROT_MASK(MLX5E_10GBASE_KX4)\n \t\t\t\t | MLX5E_PROT_MASK(MLX5E_1000BASE_KX))) {\n-\t\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t\t supported,\n-\t\t\t\t\t\t\t Backplane);\n-\t\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t\t advertising,\n-\t\t\t\t\t\t\t Backplane);\n+\t\t\tethtool_ks_add_mode(link_ksettings, supported,\n+\t\t\t\t\t Backplane);\n+\t\t\tethtool_ks_add_mode(link_ksettings, advertising,\n+\t\t\t\t\t Backplane);\n \t\t}\n \t\treturn;\n \t}\n \n \tswitch (connector_type) {\n \tcase MLX5E_PORT_TP:\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, TP);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, TP);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, TP);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, TP);\n \t\tbreak;\n \tcase MLX5E_PORT_AUI:\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, AUI);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, AUI);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, AUI);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, AUI);\n \t\tbreak;\n \tcase MLX5E_PORT_BNC:\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, BNC);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, BNC);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, BNC);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, BNC);\n \t\tbreak;\n \tcase MLX5E_PORT_MII:\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, MII);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, MII);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, MII);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, MII);\n \t\tbreak;\n \tcase MLX5E_PORT_FIBRE:\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, FIBRE);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, FIBRE);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, FIBRE);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, FIBRE);\n \t\tbreak;\n \tcase MLX5E_PORT_DA:\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t supported, Backplane);\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, Backplane);\n+\t\tethtool_ks_add_mode(link_ksettings, supported, Backplane);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Backplane);\n \t\tbreak;\n \tcase MLX5E_PORT_NONE:\n \tcase MLX5E_PORT_OTHER:\n@@ -665,7 +647,7 @@ static void get_supported(u32 eth_proto_cap,\n \tunsigned long *supported = link_ksettings->link_modes.supported;\n \n \tptys2ethtool_supported_link(supported, eth_proto_cap);\n-\tethtool_link_ksettings_add_link_mode(link_ksettings, supported, Pause);\n+\tethtool_ks_add_mode(link_ksettings, supported, Pause);\n }\n \n static void get_advertising(u32 eth_proto_cap, u8 tx_pause,\n@@ -676,9 +658,9 @@ static void get_advertising(u32 eth_proto_cap, u8 tx_pause,\n \n \tptys2ethtool_adver_link(advertising, eth_proto_cap);\n \tif (rx_pause)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings, advertising, Pause);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Pause);\n \tif (tx_pause ^ rx_pause)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings, advertising, Asym_Pause);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Asym_Pause);\n }\n \n static int ptys2connector_type[MLX5E_CONNECTOR_TYPE_NUMBER] = {\n@@ -766,8 +748,8 @@ static int mlx5e_get_link_ksettings(struct net_device *netdev,\n \n \tmlx5_query_port_pause(mdev, &rx_pause, &tx_pause);\n \n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, supported);\n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);\n+\tethtool_ks_clear(link_ksettings, supported);\n+\tethtool_ks_clear(link_ksettings, advertising);\n \n \tget_supported(eth_proto_cap, link_ksettings);\n \tget_advertising(eth_proto_admin, tx_pause, rx_pause, link_ksettings);\n@@ -782,16 +764,13 @@ static int mlx5e_get_link_ksettings(struct net_device *netdev,\n \tget_lp_advertising(eth_proto_lp, link_ksettings);\n \n \tif (an_status == MLX5_AN_COMPLETE)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t lp_advertising, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, lp_advertising, Autoneg);\n \n \tlink_ksettings->base.autoneg = an_disable_admin ? AUTONEG_DISABLE :\n \t\t\t\t\t\t\t AUTONEG_ENABLE;\n-\tethtool_link_ksettings_add_link_mode(link_ksettings, supported,\n-\t\t\t\t\t Autoneg);\n+\tethtool_ks_add_mode(link_ksettings, supported, Autoneg);\n \tif (!an_disable_admin)\n-\t\tethtool_link_ksettings_add_link_mode(link_ksettings,\n-\t\t\t\t\t\t advertising, Autoneg);\n+\t\tethtool_ks_add_mode(link_ksettings, advertising, Autoneg);\n \n err_query_ptys:\n \treturn err;\ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c\nindex 90cb50fe17fd..60c095585b5b 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c\n@@ -217,8 +217,8 @@ static int mlx5i_get_link_ksettings(struct net_device *netdev,\n \tif (ret)\n \t\treturn ret;\n \n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, supported);\n-\tethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);\n+\tethtool_ks_clear(link_ksettings, supported);\n+\tethtool_ks_clear(link_ksettings, advertising);\n \n \tspeed = mlx5i_get_speed_settings(ib_link_width_oper, ib_proto_oper);\n \tif (speed < 0)\ndiff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c\nindex 94132f6cec61..bd227e8d90a0 100644\n--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c\n+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c\n@@ -2243,14 +2243,14 @@ mlxsw_sp_from_ptys_supported_port(u32 ptys_eth_proto,\n \t\t\t MLXSW_REG_PTYS_ETH_SPEED_40GBASE_SR4 |\n \t\t\t MLXSW_REG_PTYS_ETH_SPEED_100GBASE_SR4 |\n \t\t\t MLXSW_REG_PTYS_ETH_SPEED_SGMII))\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n+\t\tethtool_ks_add_mode(cmd, supported, FIBRE);\n \n \tif (ptys_eth_proto & (MLXSW_REG_PTYS_ETH_SPEED_10GBASE_KR |\n \t\t\t MLXSW_REG_PTYS_ETH_SPEED_10GBASE_KX4 |\n \t\t\t MLXSW_REG_PTYS_ETH_SPEED_40GBASE_KR4 |\n \t\t\t MLXSW_REG_PTYS_ETH_SPEED_100GBASE_KR4 |\n \t\t\t MLXSW_REG_PTYS_ETH_SPEED_1000BASE_KX))\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported, Backplane);\n+\t\tethtool_ks_add_mode(cmd, supported, Backplane);\n }\n \n static void mlxsw_sp_from_ptys_link(u32 ptys_eth_proto, unsigned long *mode)\n@@ -2349,9 +2349,9 @@ static u32 mlxsw_sp_to_ptys_upper_speed(u32 upper_speed)\n static void mlxsw_sp_port_get_link_supported(u32 eth_proto_cap,\n \t\t\t\t\t struct ethtool_link_ksettings *cmd)\n {\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, Asym_Pause);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, Autoneg);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, Pause);\n+\tethtool_ks_add_mode(cmd, supported, Asym_Pause);\n+\tethtool_ks_add_mode(cmd, supported, Autoneg);\n+\tethtool_ks_add_mode(cmd, supported, Pause);\n \n \tmlxsw_sp_from_ptys_supported_port(eth_proto_cap, cmd);\n \tmlxsw_sp_from_ptys_link(eth_proto_cap, cmd->link_modes.supported);\n@@ -2363,7 +2363,7 @@ static void mlxsw_sp_port_get_link_advertise(u32 eth_proto_admin, bool autoneg,\n \tif (!autoneg)\n \t\treturn;\n \n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, Autoneg);\n+\tethtool_ks_add_mode(cmd, advertising, Autoneg);\n \tmlxsw_sp_from_ptys_link(eth_proto_admin, cmd->link_modes.advertising);\n }\n \n@@ -2374,7 +2374,7 @@ mlxsw_sp_port_get_link_lp_advertise(u32 eth_proto_lp, u8 autoneg_status,\n \tif (autoneg_status != MLXSW_REG_PTYS_AN_STATUS_OK || !eth_proto_lp)\n \t\treturn;\n \n-\tethtool_link_ksettings_add_link_mode(cmd, lp_advertising, Autoneg);\n+\tethtool_ks_add_mode(cmd, lp_advertising, Autoneg);\n \tmlxsw_sp_from_ptys_link(eth_proto_lp, cmd->link_modes.lp_advertising);\n }\n \ndiff --git a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c\nindex a655c5850aa6..bb11aadfd8c6 100644\n--- a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c\n+++ b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c\n@@ -809,12 +809,9 @@ mlxsw_sx_port_get_link_ksettings(struct net_device *dev,\n \tcmd->base.port = mlxsw_sx_port_connector_port(eth_proto_oper);\n \tlp_advertising = mlxsw_sx_from_ptys_advert_link(eth_proto_oper);\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.lp_advertising,\n-\t\t\t\t\t\tlp_advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.lp_advertising, lp_advertising);\n \n \treturn 0;\n }\n@@ -872,8 +869,7 @@ mlxsw_sx_port_set_link_ksettings(struct net_device *dev,\n \n \tspeed = cmd->base.speed;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \teth_proto_new = cmd->base.autoneg == AUTONEG_ENABLE ?\n \t\tmlxsw_sx_to_ptys_advert_link(advertising) :\ndiff --git a/drivers/net/ethernet/micrel/ks8695net.c b/drivers/net/ethernet/micrel/ks8695net.c\nindex bd51e057e915..a0de2002eb36 100644\n--- a/drivers/net/ethernet/micrel/ks8695net.c\n+++ b/drivers/net/ethernet/micrel/ks8695net.c\n@@ -905,10 +905,8 @@ ks8695_wan_get_link_ksettings(struct net_device *ndev,\n \t\t\tDUPLEX_FULL : DUPLEX_HALF;\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -926,8 +924,7 @@ ks8695_wan_set_link_ksettings(struct net_device *ndev,\n \tu32 ctrl;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif ((cmd->base.speed != SPEED_10) && (cmd->base.speed != SPEED_100))\n \t\treturn -EINVAL;\ndiff --git a/drivers/net/ethernet/micrel/ksz884x.c b/drivers/net/ethernet/micrel/ksz884x.c\nindex 52207508744c..b9f1bdaf0956 100644\n--- a/drivers/net/ethernet/micrel/ksz884x.c\n+++ b/drivers/net/ethernet/micrel/ksz884x.c\n@@ -5959,12 +5959,11 @@ static int netdev_get_link_ksettings(struct net_device *dev,\n \n \tmutex_lock(&hw_priv->lock);\n \tmii_ethtool_get_link_ksettings(&priv->mii_if, cmd);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, TP);\n+\tethtool_ks_add_mode(cmd, advertising, TP);\n \tmutex_unlock(&hw_priv->lock);\n \n \t/* Save advertised settings for workaround in next function. */\n-\tethtool_convert_link_mode_to_legacy_u32(&priv->advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&priv->advertising, cmd->link_modes.advertising);\n \n \treturn 0;\n }\n@@ -5989,8 +5988,7 @@ static int netdev_set_link_ksettings(struct net_device *dev,\n \tu32 advertising;\n \tint rc;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \t/*\n \t * ethtool utility does not change advertised setting if auto\n@@ -6032,8 +6030,7 @@ static int netdev_set_link_ksettings(struct net_device *dev,\n \t}\n \n \tmemcpy(©_cmd, cmd, sizeof(copy_cmd));\n-\tethtool_convert_legacy_u32_to_link_mode(copy_cmd.link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(copy_cmd.link_modes.advertising, advertising);\n \trc = mii_ethtool_set_link_ksettings(\n \t\t&priv->mii_if,\n \t\t(const struct ethtool_link_ksettings *)©_cmd);\ndiff --git a/drivers/net/ethernet/microchip/enc28j60.c b/drivers/net/ethernet/microchip/enc28j60.c\nindex f6ecfa778660..3ab7779a594e 100644\n--- a/drivers/net/ethernet/microchip/enc28j60.c\n+++ b/drivers/net/ethernet/microchip/enc28j60.c\n@@ -1492,10 +1492,10 @@ enc28j60_get_link_ksettings(struct net_device *dev,\n {\n \tstruct enc28j60_net *priv = netdev_priv(dev);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 10baseT_Half);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 10baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, TP);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 10baseT_Half);\n+\tethtool_ks_add_mode(cmd, supported, 10baseT_Full);\n+\tethtool_ks_add_mode(cmd, supported, TP);\n \n \tcmd->base.speed = SPEED_10;\n \tcmd->base.duplex = priv->full_duplex ? DUPLEX_FULL : DUPLEX_HALF;\ndiff --git a/drivers/net/ethernet/microchip/encx24j600.c b/drivers/net/ethernet/microchip/encx24j600.c\nindex f831238d9793..fe32166bff0d 100644\n--- a/drivers/net/ethernet/microchip/encx24j600.c\n+++ b/drivers/net/ethernet/microchip/encx24j600.c\n@@ -950,8 +950,7 @@ static int encx24j600_get_link_ksettings(struct net_device *dev,\n \t\t\t SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full |\n \t\t\t SUPPORTED_Autoneg | SUPPORTED_TP;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \n \tcmd->base.speed = priv->speed;\n \tcmd->base.duplex = priv->full_duplex ? DUPLEX_FULL : DUPLEX_HALF;\ndiff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c\nindex b2d2ec8c11e2..6319e0e389f8 100644\n--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c\n+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c\n@@ -1645,8 +1645,8 @@ myri10ge_get_link_ksettings(struct net_device *netdev,\n \tif (*ptr == 'R' || *ptr == 'Q' || *ptr == 'S') {\n \t\t/* We've found either an XFP, quad ribbon fiber, or SFP+ */\n \t\tcmd->base.port = PORT_FIBRE;\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising, FIBRE);\n+\t\tethtool_ks_add_mode(cmd, supported, FIBRE);\n+\t\tethtool_ks_add_mode(cmd, advertising, FIBRE);\n \t} else {\n \t\tcmd->base.port = PORT_OTHER;\n \t}\ndiff --git a/drivers/net/ethernet/natsemi/natsemi.c b/drivers/net/ethernet/natsemi/natsemi.c\nindex b9a1a9f999ea..406e6b1d14c6 100644\n--- a/drivers/net/ethernet/natsemi/natsemi.c\n+++ b/drivers/net/ethernet/natsemi/natsemi.c\n@@ -2905,10 +2905,8 @@ static int netdev_get_ecmd(struct net_device *dev,\n \n \t/* ignore maxtxpkt, maxrxpkt for now */\n \n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(ecmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(ecmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -2919,8 +2917,7 @@ static int netdev_set_ecmd(struct net_device *dev,\n \tstruct netdev_private *np = netdev_priv(dev);\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tecmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, ecmd->link_modes.advertising);\n \n \tif (ecmd->base.port != PORT_TP &&\n \t ecmd->base.port != PORT_MII &&\ndiff --git a/drivers/net/ethernet/natsemi/ns83820.c b/drivers/net/ethernet/natsemi/ns83820.c\nindex 958fced4dacf..b8dda53b5446 100644\n--- a/drivers/net/ethernet/natsemi/ns83820.c\n+++ b/drivers/net/ethernet/natsemi/ns83820.c\n@@ -1263,8 +1263,7 @@ static int ns83820_get_link_ksettings(struct net_device *ndev,\n \t\tcmd->base.port = PORT_MII;\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \n \tcmd->base.duplex = fullduplex ? DUPLEX_FULL : DUPLEX_HALF;\n \tswitch (cfg / CFG_SPDSTS0 & 3) {\ndiff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c\nindex b8983e73265a..0c83278e380a 100644\n--- a/drivers/net/ethernet/neterion/s2io.c\n+++ b/drivers/net/ethernet/neterion/s2io.c\n@@ -5300,13 +5300,13 @@ s2io_ethtool_get_link_ksettings(struct net_device *dev,\n {\n \tstruct s2io_nic *sp = netdev_priv(dev);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 10000baseT_Full);\n+\tethtool_ks_add_mode(cmd, supported, FIBRE);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, FIBRE);\n+\tethtool_ks_clear(cmd, advertising);\n+\tethtool_ks_add_mode(cmd, advertising, 10000baseT_Full);\n+\tethtool_ks_add_mode(cmd, advertising, FIBRE);\n \n \tcmd->base.port = PORT_FIBRE;\n \ndiff --git a/drivers/net/ethernet/neterion/vxge/vxge-ethtool.c b/drivers/net/ethernet/neterion/vxge/vxge-ethtool.c\nindex 0452848d1316..0f1522812373 100644\n--- a/drivers/net/ethernet/neterion/vxge/vxge-ethtool.c\n+++ b/drivers/net/ethernet/neterion/vxge/vxge-ethtool.c\n@@ -74,13 +74,13 @@ vxge_ethtool_set_link_ksettings(struct net_device *dev,\n static int vxge_ethtool_get_link_ksettings(struct net_device *dev,\n \t\t\t\t\t struct ethtool_link_ksettings *cmd)\n {\n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 10000baseT_Full);\n+\tethtool_ks_add_mode(cmd, supported, FIBRE);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, FIBRE);\n+\tethtool_ks_clear(cmd, advertising);\n+\tethtool_ks_add_mode(cmd, advertising, 10000baseT_Full);\n+\tethtool_ks_add_mode(cmd, advertising, FIBRE);\n \n \tcmd->base.port = PORT_FIBRE;\n \ndiff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c\nindex c9016419bfa0..bd2466c45a72 100644\n--- a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c\n+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c\n@@ -248,21 +248,21 @@ nfp_net_set_fec_link_mode(struct nfp_eth_table_port *eth_port,\n {\n \tunsigned int modes;\n \n-\tethtool_link_ksettings_add_link_mode(c, supported, FEC_NONE);\n+\tethtool_ks_add_mode(c, supported, FEC_NONE);\n \tif (!nfp_eth_can_support_fec(eth_port)) {\n-\t\tethtool_link_ksettings_add_link_mode(c, advertising, FEC_NONE);\n+\t\tethtool_ks_add_mode(c, advertising, FEC_NONE);\n \t\treturn;\n \t}\n \n \tmodes = nfp_eth_supported_fec_modes(eth_port);\n \tif (modes & NFP_FEC_BASER) {\n-\t\tethtool_link_ksettings_add_link_mode(c, supported, FEC_BASER);\n-\t\tethtool_link_ksettings_add_link_mode(c, advertising, FEC_BASER);\n+\t\tethtool_ks_add_mode(c, supported, FEC_BASER);\n+\t\tethtool_ks_add_mode(c, advertising, FEC_BASER);\n \t}\n \n \tif (modes & NFP_FEC_REED_SOLOMON) {\n-\t\tethtool_link_ksettings_add_link_mode(c, supported, FEC_RS);\n-\t\tethtool_link_ksettings_add_link_mode(c, advertising, FEC_RS);\n+\t\tethtool_ks_add_mode(c, supported, FEC_RS);\n+\t\tethtool_ks_add_mode(c, advertising, FEC_RS);\n \t}\n }\n \n@@ -293,7 +293,7 @@ nfp_net_get_link_ksettings(struct net_device *netdev,\n \tu32 sts, ls;\n \n \t/* Init to unknowns */\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n+\tethtool_ks_add_mode(cmd, supported, FIBRE);\n \tcmd->base.port = PORT_OTHER;\n \tcmd->base.speed = SPEED_UNKNOWN;\n \tcmd->base.duplex = DUPLEX_UNKNOWN;\ndiff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c\nindex 66c665d0b926..ad38071fd41a 100644\n--- a/drivers/net/ethernet/nvidia/forcedeth.c\n+++ b/drivers/net/ethernet/nvidia/forcedeth.c\n@@ -4333,10 +4333,8 @@ static int nv_get_link_ksettings(struct net_device *dev,\n \n \tcmd->base.phy_address = np->phyaddr;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \t/* ignore maxtxpkt, maxrxpkt for now */\n \tspin_unlock_irq(&np->lock);\n@@ -4350,8 +4348,7 @@ static int nv_set_link_ksettings(struct net_device *dev,\n \tu32 speed = cmd->base.speed;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (cmd->base.port != PORT_MII)\n \t\treturn -EINVAL;\ndiff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_ethtool.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_ethtool.c\nindex 731ce1e419e4..980c42f0d37c 100644\n--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_ethtool.c\n+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_ethtool.c\n@@ -88,18 +88,14 @@ static int pch_gbe_get_link_ksettings(struct net_device *netdev,\n \n \tmii_ethtool_get_link_ksettings(&adapter->mii, ecmd);\n \n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tecmd->link_modes.supported);\n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tecmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&supported, ecmd->link_modes.supported);\n+\tethtool_ks_to_u32(&advertising, ecmd->link_modes.advertising);\n \n \tsupported &= ~(SUPPORTED_TP | SUPPORTED_1000baseT_Half);\n \tadvertising &= ~(ADVERTISED_TP | ADVERTISED_1000baseT_Half);\n \n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(ecmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(ecmd->link_modes.advertising, advertising);\n \n \tif (!netif_carrier_ok(adapter->netdev))\n \t\tecmd->base.speed = SPEED_UNKNOWN;\n@@ -143,8 +139,7 @@ static int pch_gbe_set_link_ksettings(struct net_device *netdev,\n \t}\n \thw->mac.link_speed = speed;\n \thw->mac.link_duplex = copy_ecmd.base.duplex;\n-\tethtool_convert_link_mode_to_legacy_u32(\n-\t\t&advertising, copy_ecmd.link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, copy_ecmd.link_modes.advertising);\n \thw->phy.autoneg_advertised = advertising;\n \thw->mac.autoneg = copy_ecmd.base.autoneg;\n \ndiff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c\nindex 3157f97dd782..1c0a7669532b 100644\n--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c\n+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c\n@@ -250,10 +250,8 @@ netxen_nic_get_link_ksettings(struct net_device *dev,\n \t\tcmd->base.speed = SPEED_UNKNOWN;\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c\nindex ecbf1ded7a39..7f90c78f8b57 100644\n--- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c\n+++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c\n@@ -448,13 +448,13 @@ static int qede_get_link_ksettings(struct net_device *dev,\n \tmemset(¤t_link, 0, sizeof(current_link));\n \tedev->ops->common->get_link(edev->cdev, ¤t_link);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n+\tethtool_ks_clear(cmd, supported);\n \tQEDE_DRV_TO_ETHTOOL_CAPS(current_link.supported_caps, cmd, supported)\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n+\tethtool_ks_clear(cmd, advertising);\n \tQEDE_DRV_TO_ETHTOOL_CAPS(current_link.advertised_caps, cmd, advertising)\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, lp_advertising);\n+\tethtool_ks_clear(cmd, lp_advertising);\n \tQEDE_DRV_TO_ETHTOOL_CAPS(current_link.lp_caps, cmd, lp_advertising)\n \n \tif ((edev->state == QEDE_STATE_OPEN) && (current_link.link_up)) {\ndiff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c\nindex b48f76182049..e91566a5438b 100644\n--- a/drivers/net/ethernet/qlogic/qla3xxx.c\n+++ b/drivers/net/ethernet/qlogic/qla3xxx.c\n@@ -1726,10 +1726,8 @@ static int ql_get_link_ksettings(struct net_device *ndev,\n \tcmd->base.speed = ql_get_speed(qdev);\n \tcmd->base.duplex = ql_get_full_dup(qdev);\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c\nindex 97c146e7698a..27d883d83533 100644\n--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c\n+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c\n@@ -3323,8 +3323,7 @@ int qlcnic_83xx_get_link_ksettings(struct qlcnic_adapter *adapter,\n \t\t\t SUPPORTED_10000baseT_Full |\n \t\t\t SUPPORTED_Autoneg);\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tecmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, ecmd->link_modes.advertising);\n \n \tif (ecmd->base.autoneg == AUTONEG_ENABLE) {\n \t\tif (ahw->port_config & QLC_83XX_10_CAPABLE)\n@@ -3381,10 +3380,8 @@ int qlcnic_83xx_get_link_ksettings(struct qlcnic_adapter *adapter,\n \t}\n \tecmd->base.phy_address = ahw->physical_port;\n \n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(ecmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(ecmd->link_modes.advertising, advertising);\n \n \treturn status;\n }\ndiff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c\nindex 7f7deeaf1cf0..7e582c817259 100644\n--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c\n+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c\n@@ -424,10 +424,8 @@ static int qlcnic_82xx_get_link_ksettings(struct qlcnic_adapter *adapter,\n \t\t}\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(ecmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(ecmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c\nindex 5edbd532127d..a10767ecead6 100644\n--- a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c\n+++ b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c\n@@ -400,10 +400,8 @@ static int ql_get_link_ksettings(struct net_device *ndev,\n \tecmd->base.speed = SPEED_10000;\n \tecmd->base.duplex = DUPLEX_FULL;\n \n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(ecmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(ecmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/qualcomm/qca_debug.c b/drivers/net/ethernet/qualcomm/qca_debug.c\nindex 51d89c86e60f..dd769b719c51 100644\n--- a/drivers/net/ethernet/qualcomm/qca_debug.c\n+++ b/drivers/net/ethernet/qualcomm/qca_debug.c\n@@ -191,8 +191,8 @@ static int\n qcaspi_get_link_ksettings(struct net_device *dev,\n \t\t\t struct ethtool_link_ksettings *cmd)\n {\n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 10baseT_Half);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 10baseT_Half);\n \n \tcmd->base.speed = SPEED_10;\n \tcmd->base.duplex = DUPLEX_HALF;\ndiff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c\nindex 2c2f0c5b3f94..8d0ebd2c85c1 100644\n--- a/drivers/net/ethernet/realtek/r8169.c\n+++ b/drivers/net/ethernet/realtek/r8169.c\n@@ -1958,10 +1958,8 @@ static int rtl8169_get_link_ksettings_tbi(struct net_device *dev,\n \tcmd->base.speed = SPEED_1000;\n \tcmd->base.duplex = DUPLEX_FULL; /* Always set */\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -1996,8 +1994,7 @@ static int rtl8169_set_link_ksettings(struct net_device *dev,\n \tint rc;\n \tu32 advertising;\n \n-\tif (!ethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t cmd->link_modes.advertising))\n+\tif (!ethtool_ks_to_u32(&advertising, cmd->link_modes.advertising))\n \t\treturn -EINVAL;\n \n \tdel_timer_sync(&tp->timer);\ndiff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c\nindex e73e4febeedb..fc8be30aecd0 100644\n--- a/drivers/net/ethernet/rocker/rocker_main.c\n+++ b/drivers/net/ethernet/rocker/rocker_main.c\n@@ -1139,8 +1139,8 @@ rocker_cmd_get_port_settings_ethtool_proc(const struct rocker_port *rocker_port,\n \tduplex = rocker_tlv_get_u8(info_attrs[ROCKER_TLV_CMD_PORT_SETTINGS_DUPLEX]);\n \tautoneg = rocker_tlv_get_u8(info_attrs[ROCKER_TLV_CMD_PORT_SETTINGS_AUTONEG]);\n \n-\tethtool_link_ksettings_zero_link_mode(ecmd, supported);\n-\tethtool_link_ksettings_add_link_mode(ecmd, supported, TP);\n+\tethtool_ks_clear(ecmd, supported);\n+\tethtool_ks_add_mode(ecmd, supported, TP);\n \n \tecmd->base.phy_address = 0xff;\n \tecmd->base.port = PORT_TP;\ndiff --git a/drivers/net/ethernet/sfc/ethtool.c b/drivers/net/ethernet/sfc/ethtool.c\nindex 3143588ffd77..89f06c170134 100644\n--- a/drivers/net/ethernet/sfc/ethtool.c\n+++ b/drivers/net/ethernet/sfc/ethtool.c\n@@ -138,13 +138,11 @@ efx_ethtool_get_link_ksettings(struct net_device *net_dev,\n \tmutex_unlock(&efx->mac_lock);\n \n \t/* Both MACs support pause frames (bidirectional and respond-only) */\n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n \n \tsupported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \n \tif (LOOPBACK_INTERNAL(efx)) {\n \t\tcmd->base.speed = link_state->speed;\ndiff --git a/drivers/net/ethernet/sfc/falcon/ethtool.c b/drivers/net/ethernet/sfc/falcon/ethtool.c\nindex 56049157a5af..230cccfb656b 100644\n--- a/drivers/net/ethernet/sfc/falcon/ethtool.c\n+++ b/drivers/net/ethernet/sfc/falcon/ethtool.c\n@@ -127,8 +127,8 @@ ef4_ethtool_get_link_ksettings(struct net_device *net_dev,\n \tmutex_unlock(&efx->mac_lock);\n \n \t/* Both MACs support pause frames (bidirectional and respond-only) */\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, Pause);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, Asym_Pause);\n+\tethtool_ks_add_mode(cmd, supported, Pause);\n+\tethtool_ks_add_mode(cmd, supported, Asym_Pause);\n \n \tif (LOOPBACK_INTERNAL(efx)) {\n \t\tcmd->base.speed = link_state->speed;\ndiff --git a/drivers/net/ethernet/sfc/falcon/mdio_10g.c b/drivers/net/ethernet/sfc/falcon/mdio_10g.c\nindex ee0713f03d01..58f350c4113d 100644\n--- a/drivers/net/ethernet/sfc/falcon/mdio_10g.c\n+++ b/drivers/net/ethernet/sfc/falcon/mdio_10g.c\n@@ -241,12 +241,9 @@ int ef4_mdio_set_link_ksettings(struct ef4_nic *efx,\n \n \tefx->phy_op->get_link_ksettings(efx, &prev);\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n-\tethtool_convert_link_mode_to_legacy_u32(&prev_advertising,\n-\t\t\t\t\t\tprev.link_modes.advertising);\n-\tethtool_convert_link_mode_to_legacy_u32(&prev_supported,\n-\t\t\t\t\t\tprev.link_modes.supported);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&prev_advertising, prev.link_modes.advertising);\n+\tethtool_ks_to_u32(&prev_supported, prev.link_modes.supported);\n \n \tif (advertising == prev_advertising &&\n \t cmd->base.speed == prev.base.speed &&\ndiff --git a/drivers/net/ethernet/silan/sc92031.c b/drivers/net/ethernet/silan/sc92031.c\nindex c07fd594fe71..c1b843987397 100644\n--- a/drivers/net/ethernet/silan/sc92031.c\n+++ b/drivers/net/ethernet/silan/sc92031.c\n@@ -1178,10 +1178,8 @@ sc92031_ethtool_get_link_ksettings(struct net_device *dev,\n \tcmd->base.autoneg = (phy_ctrl & PhyCtrlAne) ?\n \t\tAUTONEG_ENABLE : AUTONEG_DISABLE;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -1197,8 +1195,7 @@ sc92031_ethtool_set_link_ksettings(struct net_device *dev,\n \tu32 old_phy_ctrl;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \tif (!(speed == SPEED_10 || speed == SPEED_100))\n \t\treturn -EINVAL;\ndiff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c\nindex 05157442a980..6113e3644b7f 100644\n--- a/drivers/net/ethernet/smsc/smc911x.c\n+++ b/drivers/net/ethernet/smsc/smc911x.c\n@@ -1477,8 +1477,7 @@ smc911x_ethtool_get_link_ksettings(struct net_device *dev,\n \t\t\t(status & (PHY_SPECIAL_SPD_10FULL_ | PHY_SPECIAL_SPD_100FULL_)) ?\n \t\t\t\tDUPLEX_FULL : DUPLEX_HALF;\n \n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.supported, supported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \n \t}\n \ndiff --git a/drivers/net/ethernet/smsc/smc91c92_cs.c b/drivers/net/ethernet/smsc/smc91c92_cs.c\nindex a55f430f6a7b..49e5d9e1b6e3 100644\n--- a/drivers/net/ethernet/smsc/smc91c92_cs.c\n+++ b/drivers/net/ethernet/smsc/smc91c92_cs.c\n@@ -1863,8 +1863,7 @@ static void smc_netdev_get_ecmd(struct net_device *dev,\n \ttmp = inw(ioaddr + TCR);\n \tecmd->base.duplex = (tmp & TCR_FDUPLX) ? DUPLEX_FULL : DUPLEX_HALF;\n \n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(ecmd->link_modes.supported, supported);\n }\n \n static int smc_netdev_set_ecmd(struct net_device *dev,\ndiff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c\nindex 080428762858..f253b3926733 100644\n--- a/drivers/net/ethernet/smsc/smc91x.c\n+++ b/drivers/net/ethernet/smsc/smc91x.c\n@@ -1559,8 +1559,7 @@ smc_ethtool_get_link_ksettings(struct net_device *dev,\n \t\tcmd->base.duplex = lp->tcr_cur_mode & TCR_SWFDUP ?\n \t\t\tDUPLEX_FULL : DUPLEX_HALF;\n \n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.supported, supported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \t}\n \n \treturn 0;\ndiff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c\nindex 6d82b3ef5c3b..0e24f3404235 100644\n--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c\n+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c\n@@ -296,12 +296,10 @@ static int stmmac_ethtool_get_link_ksettings(struct net_device *dev,\n \n \t\t/* Encoding of PSE bits is defined in 802.3z, 37.2.1.4 */\n \n-\t\tethtool_convert_link_mode_to_legacy_u32(\n-\t\t\t&supported, cmd->link_modes.supported);\n-\t\tethtool_convert_link_mode_to_legacy_u32(\n-\t\t\t&advertising, cmd->link_modes.advertising);\n-\t\tethtool_convert_link_mode_to_legacy_u32(\n-\t\t\t&lp_advertising, cmd->link_modes.lp_advertising);\n+\t\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n+\t\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n+\t\tethtool_ks_to_u32(&lp_advertising,\n+\t\t\t\t cmd->link_modes.lp_advertising);\n \n \t\tif (adv.pause & STMMAC_PCS_PAUSE)\n \t\t\tadvertising |= ADVERTISED_Pause;\n@@ -343,12 +341,10 @@ static int stmmac_ethtool_get_link_ksettings(struct net_device *dev,\n \t\t\t\t\t ADVERTISED_10baseT_Half);\n \t\tcmd->base.port = PORT_OTHER;\n \n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.supported, supported);\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.advertising, advertising);\n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tcmd->link_modes.lp_advertising, lp_advertising);\n+\t\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\t\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n+\t\tethtool_u32_to_ks(cmd->link_modes.lp_advertising,\n+\t\t\t\t lp_advertising);\n \n \t\treturn 0;\n \t}\ndiff --git a/drivers/net/ethernet/sun/cassini.c b/drivers/net/ethernet/sun/cassini.c\nindex 9020b084b953..9c2e0653b51b 100644\n--- a/drivers/net/ethernet/sun/cassini.c\n+++ b/drivers/net/ethernet/sun/cassini.c\n@@ -4633,10 +4633,8 @@ static int cas_get_link_ksettings(struct net_device *dev,\n \t\t}\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c\nindex 88c12474a0c3..d416f10ea92c 100644\n--- a/drivers/net/ethernet/sun/niu.c\n+++ b/drivers/net/ethernet/sun/niu.c\n@@ -6819,10 +6819,8 @@ static int niu_get_link_ksettings(struct net_device *dev,\n \n \tmemset(cmd, 0, sizeof(*cmd));\n \tcmd->base.phy_address = np->phy_addr;\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tlp->supported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tlp->active_advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, lp->supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, lp->active_advertising);\n \tcmd->base.autoneg = lp->active_autoneg;\n \tcmd->base.speed = lp->active_speed;\n \tcmd->base.duplex = lp->active_duplex;\n@@ -6837,8 +6835,7 @@ static int niu_set_link_ksettings(struct net_device *dev,\n \tstruct niu *np = netdev_priv(dev);\n \tstruct niu_link_config *lp = &np->link_config;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&lp->advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&lp->advertising, cmd->link_modes.advertising);\n \tlp->speed = cmd->base.speed;\n \tlp->duplex = cmd->base.duplex;\n \tlp->autoneg = cmd->base.autoneg;\ndiff --git a/drivers/net/ethernet/sun/sungem.c b/drivers/net/ethernet/sun/sungem.c\nindex 7a16d40a72d1..1186d42e0944 100644\n--- a/drivers/net/ethernet/sun/sungem.c\n+++ b/drivers/net/ethernet/sun/sungem.c\n@@ -1261,8 +1261,7 @@ static void gem_begin_auto_negotiation(struct gem *gp,\n \tu32 advertising;\n \n \tif (ep)\n-\t\tethtool_convert_link_mode_to_legacy_u32(\n-\t\t\t&advertising, ep->link_modes.advertising);\n+\t\tethtool_ks_to_u32(&advertising, ep->link_modes.advertising);\n \n \tif (gp->phy_type != phy_mii_mdio0 &&\n \t gp->phy_type != phy_mii_mdio1)\n@@ -2579,10 +2578,8 @@ static int gem_get_link_ksettings(struct net_device *dev,\n \t\t}\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\n@@ -2594,8 +2591,7 @@ static int gem_set_link_ksettings(struct net_device *dev,\n \tu32 speed = cmd->base.speed;\n \tu32 advertising;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \t/* Verify the settings we care about. */\n \tif (cmd->base.autoneg != AUTONEG_ENABLE &&\ndiff --git a/drivers/net/ethernet/sun/sunhme.c b/drivers/net/ethernet/sun/sunhme.c\nindex 06da2f59fcbf..8011ee4e0b17 100644\n--- a/drivers/net/ethernet/sun/sunhme.c\n+++ b/drivers/net/ethernet/sun/sunhme.c\n@@ -2476,8 +2476,7 @@ static int hme_get_link_ksettings(struct net_device *dev,\n \t\t\tDUPLEX_FULL : DUPLEX_HALF;\n \t}\n \tcmd->base.speed = speed;\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c\nindex 163d8d16bc24..ba90104c4326 100644\n--- a/drivers/net/ethernet/tehuti/tehuti.c\n+++ b/drivers/net/ethernet/tehuti/tehuti.c\n@@ -2133,14 +2133,12 @@ static const char\n static int bdx_get_link_ksettings(struct net_device *netdev,\n \t\t\t\t struct ethtool_link_ksettings *ecmd)\n {\n-\tethtool_link_ksettings_zero_link_mode(ecmd, supported);\n-\tethtool_link_ksettings_add_link_mode(ecmd, supported,\n-\t\t\t\t\t 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE);\n-\tethtool_link_ksettings_zero_link_mode(ecmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(ecmd, advertising,\n-\t\t\t\t\t 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(ecmd, advertising, FIBRE);\n+\tethtool_ks_clear(ecmd, supported);\n+\tethtool_ks_add_mode(ecmd, supported, 10000baseT_Full);\n+\tethtool_ks_add_mode(ecmd, supported, FIBRE);\n+\tethtool_ks_clear(ecmd, advertising);\n+\tethtool_ks_add_mode(ecmd, advertising, 10000baseT_Full);\n+\tethtool_ks_add_mode(ecmd, advertising, FIBRE);\n \n \tecmd->base.speed = SPEED_10000;\n \tecmd->base.duplex = DUPLEX_FULL;\ndiff --git a/drivers/net/ethernet/ti/netcp_ethss.c b/drivers/net/ethernet/ti/netcp_ethss.c\nindex 6a728d35e776..e10b3527e9f0 100644\n--- a/drivers/net/ethernet/ti/netcp_ethss.c\n+++ b/drivers/net/ethernet/ti/netcp_ethss.c\n@@ -1969,10 +1969,8 @@ static int keystone_set_link_ksettings(struct net_device *ndev,\n \tu32 advertising, supported;\n \tu32 features;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n-\tethtool_convert_link_mode_to_legacy_u32(&supported,\n-\t\t\t\t\t\tcmd->link_modes.supported);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&supported, cmd->link_modes.supported);\n \tfeatures = advertising & supported;\n \n \tif (!phy)\ndiff --git a/drivers/net/ethernet/toshiba/ps3_gelic_net.c b/drivers/net/ethernet/toshiba/ps3_gelic_net.c\nindex 88d74aef218a..6c4c07ddd97f 100644\n--- a/drivers/net/ethernet/toshiba/ps3_gelic_net.c\n+++ b/drivers/net/ethernet/toshiba/ps3_gelic_net.c\n@@ -1248,10 +1248,8 @@ static int gelic_ether_get_link_ksettings(struct net_device *netdev,\n \t}\n \tcmd->base.port = PORT_TP;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/toshiba/spider_net_ethtool.c b/drivers/net/ethernet/toshiba/spider_net_ethtool.c\nindex 16bd036d0682..9865e0055f66 100644\n--- a/drivers/net/ethernet/toshiba/spider_net_ethtool.c\n+++ b/drivers/net/ethernet/toshiba/spider_net_ethtool.c\n@@ -53,13 +53,13 @@ spider_net_ethtool_get_link_ksettings(struct net_device *netdev,\n \tstruct spider_net_card *card;\n \tcard = netdev_priv(netdev);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 1000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 1000baseT_Full);\n+\tethtool_ks_add_mode(cmd, supported, FIBRE);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, 1000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, FIBRE);\n+\tethtool_ks_clear(cmd, advertising);\n+\tethtool_ks_add_mode(cmd, advertising, 1000baseT_Full);\n+\tethtool_ks_add_mode(cmd, advertising, FIBRE);\n \n \tcmd->base.port = PORT_FIBRE;\n \tcmd->base.speed = card->phy.speed;\ndiff --git a/drivers/net/ethernet/via/via-velocity.c b/drivers/net/ethernet/via/via-velocity.c\nindex ef9538ee53d0..38da243dcf09 100644\n--- a/drivers/net/ethernet/via/via-velocity.c\n+++ b/drivers/net/ethernet/via/via-velocity.c\n@@ -3358,10 +3358,8 @@ static int velocity_get_link_ksettings(struct net_device *dev,\n \telse\n \t\tcmd->base.duplex = DUPLEX_HALF;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/fjes/fjes_ethtool.c b/drivers/net/fjes/fjes_ethtool.c\nindex 7d101714c2ef..37c9b868960d 100644\n--- a/drivers/net/fjes/fjes_ethtool.c\n+++ b/drivers/net/fjes/fjes_ethtool.c\n@@ -178,8 +178,8 @@ static void fjes_get_drvinfo(struct net_device *netdev,\n static int fjes_get_link_ksettings(struct net_device *netdev,\n \t\t\t\t struct ethtool_link_ksettings *ecmd)\n {\n-\tethtool_link_ksettings_zero_link_mode(ecmd, supported);\n-\tethtool_link_ksettings_zero_link_mode(ecmd, advertising);\n+\tethtool_ks_clear(ecmd, supported);\n+\tethtool_ks_clear(ecmd, advertising);\n \tecmd->base.duplex = DUPLEX_FULL;\n \tecmd->base.autoneg = AUTONEG_DISABLE;\n \tecmd->base.port = PORT_NONE;\ndiff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c\nindex da07ccdf84bf..cf2ef960df4f 100644\n--- a/drivers/net/hyperv/netvsc_drv.c\n+++ b/drivers/net/hyperv/netvsc_drv.c\n@@ -975,7 +975,7 @@ netvsc_validate_ethtool_ss_cmd(const struct ethtool_link_ksettings *cmd)\n \tdiff1.base.speed = 0;\n \tdiff1.base.duplex = 0;\n \t/* advertising and cmd are usually set */\n-\tethtool_link_ksettings_zero_link_mode(&diff1, advertising);\n+\tethtool_ks_clear(&diff1, advertising);\n \tdiff1.base.cmd = 0;\n \t/* We set port to PORT_OTHER */\n \tdiff2.base.port = PORT_OTHER;\ndiff --git a/drivers/net/mdio.c b/drivers/net/mdio.c\nindex 077364cbf439..6eb0a793743a 100644\n--- a/drivers/net/mdio.c\n+++ b/drivers/net/mdio.c\n@@ -493,12 +493,9 @@ void mdio45_ethtool_ksettings_get_npage(const struct mdio_if_info *mdio,\n \n \tcmd->base.speed = speed;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.lp_advertising,\n-\t\t\t\t\t\tlp_advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.lp_advertising, lp_advertising);\n \n \t/* 10GBASE-T MDI/MDI-X */\n \tif (cmd->base.port == PORT_TP && (cmd->base.speed == SPEED_10000)) {\ndiff --git a/drivers/net/mii.c b/drivers/net/mii.c\nindex 44612122338b..76d7f7284083 100644\n--- a/drivers/net/mii.c\n+++ b/drivers/net/mii.c\n@@ -217,12 +217,9 @@ void mii_ethtool_get_link_ksettings(struct mii_if_info *mii,\n \n \tmii->full_duplex = cmd->base.duplex;\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tadvertising);\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.lp_advertising,\n-\t\t\t\t\t\tlp_advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, supported);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.lp_advertising, lp_advertising);\n \n \t/* ignore maxtxpkt, maxrxpkt for now */\n }\n@@ -355,8 +352,7 @@ int mii_ethtool_set_link_ksettings(struct mii_if_info *mii,\n \t\tu32 advert2 = 0, tmp2 = 0;\n \t\tu32 advertising;\n \n-\t\tethtool_convert_link_mode_to_legacy_u32(\n-\t\t\t&advertising, cmd->link_modes.advertising);\n+\t\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \t\tif ((advertising & (ADVERTISED_10baseT_Half |\n \t\t\t\t ADVERTISED_10baseT_Full |\ndiff --git a/drivers/net/ntb_netdev.c b/drivers/net/ntb_netdev.c\nindex 9f6f7ccd44f7..8d7bf9fb9691 100644\n--- a/drivers/net/ntb_netdev.c\n+++ b/drivers/net/ntb_netdev.c\n@@ -375,10 +375,10 @@ static void ntb_get_drvinfo(struct net_device *ndev,\n static int ntb_get_link_ksettings(struct net_device *dev,\n \t\t\t\t struct ethtool_link_ksettings *cmd)\n {\n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, Backplane);\n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, Backplane);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, Backplane);\n+\tethtool_ks_clear(cmd, advertising);\n+\tethtool_ks_add_mode(cmd, advertising, Backplane);\n \n \tcmd->base.speed = SPEED_UNKNOWN;\n \tcmd->base.duplex = DUPLEX_FULL;\ndiff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c\nindex f77a2d9e7f9d..09d792693b8d 100644\n--- a/drivers/net/phy/marvell10g.c\n+++ b/drivers/net/phy/marvell10g.c\n@@ -336,7 +336,7 @@ static int mv3310_config_init(struct phy_device *phydev)\n \t\t}\n \t}\n \n-\tif (!ethtool_convert_link_mode_to_legacy_u32(&mask, supported))\n+\tif (!ethtool_ks_to_u32(&mask, supported))\n \t\tdev_warn(&phydev->mdio.dev,\n \t\t\t \"PHY supports (%*pb) more modes than phylib supports, some modes not supported.\\n\",\n \t\t\t __ETHTOOL_LINK_MODE_MASK_NBITS, supported);\ndiff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c\nindex 05c1e8ef15e6..58212c032aa1 100644\n--- a/drivers/net/phy/phy.c\n+++ b/drivers/net/phy/phy.c\n@@ -312,8 +312,7 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev,\n \tif (cmd->base.phy_address != phydev->mdio.addr)\n \t\treturn -EINVAL;\n \n-\tethtool_convert_link_mode_to_legacy_u32(&advertising,\n-\t\t\t\t\t\tcmd->link_modes.advertising);\n+\tethtool_ks_to_u32(&advertising, cmd->link_modes.advertising);\n \n \t/* We make sure that we don't pass unsupported values in to the PHY */\n \tadvertising &= phydev->supported;\n@@ -358,14 +357,12 @@ EXPORT_SYMBOL(phy_ethtool_ksettings_set);\n void phy_ethtool_ksettings_get(struct phy_device *phydev,\n \t\t\t struct ethtool_link_ksettings *cmd)\n {\n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,\n-\t\t\t\t\t\tphydev->supported);\n+\tethtool_u32_to_ks(cmd->link_modes.supported, phydev->supported);\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,\n-\t\t\t\t\t\tphydev->advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.advertising, phydev->advertising);\n \n-\tethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.lp_advertising,\n-\t\t\t\t\t\tphydev->lp_advertising);\n+\tethtool_u32_to_ks(cmd->link_modes.lp_advertising,\n+\t\t\t phydev->lp_advertising);\n \n \tcmd->base.speed = phydev->speed;\n \tcmd->base.duplex = phydev->duplex;\ndiff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c\nindex 581ce93ecaf9..a6ddaef51f67 100644\n--- a/drivers/net/phy/phylink.c\n+++ b/drivers/net/phy/phylink.c\n@@ -665,9 +665,8 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy)\n \tint ret;\n \n \tmemset(&config, 0, sizeof(config));\n-\tethtool_convert_legacy_u32_to_link_mode(supported, phy->supported);\n-\tethtool_convert_legacy_u32_to_link_mode(config.advertising,\n-\t\t\t\t\t\tphy->advertising);\n+\tethtool_u32_to_ks(supported, phy->supported);\n+\tethtool_u32_to_ks(config.advertising, phy->advertising);\n \tconfig.interface = pl->link_config.interface;\n \n \t/*\n@@ -700,7 +699,7 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy)\n \tlinkmode_copy(pl->link_config.advertising, config.advertising);\n \n \t/* Restrict the phy advertisement according to the MAC support. */\n-\tethtool_convert_link_mode_to_legacy_u32(&advertising, config.advertising);\n+\tethtool_ks_to_u32(&advertising, config.advertising);\n \tphy->advertising = advertising;\n \tmutex_unlock(&pl->state_mutex);\n \tmutex_unlock(&phy->lock);\ndiff --git a/drivers/net/tun.c b/drivers/net/tun.c\nindex 44d4f3d25350..7a03ef50d9db 100644\n--- a/drivers/net/tun.c\n+++ b/drivers/net/tun.c\n@@ -3307,8 +3307,8 @@ static struct miscdevice tun_miscdev = {\n static int tun_get_link_ksettings(struct net_device *dev,\n \t\t\t\t struct ethtool_link_ksettings *cmd)\n {\n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_clear(cmd, advertising);\n \tcmd->base.speed\t\t= SPEED_10;\n \tcmd->base.duplex\t= DUPLEX_FULL;\n \tcmd->base.port\t\t= PORT_TP;\ndiff --git a/drivers/net/usb/catc.c b/drivers/net/usb/catc.c\nindex 18d36dff97ea..0a7079195bf2 100644\n--- a/drivers/net/usb/catc.c\n+++ b/drivers/net/usb/catc.c\n@@ -695,13 +695,13 @@ static int catc_get_link_ksettings(struct net_device *dev,\n \tif (!catc->is_f5u011)\n \t\treturn -EOPNOTSUPP;\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, 10baseT_Half);\n-\tethtool_link_ksettings_add_link_mode(cmd, supported, TP);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_add_mode(cmd, supported, 10baseT_Half);\n+\tethtool_ks_add_mode(cmd, supported, TP);\n \n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, 10baseT_Half);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, TP);\n+\tethtool_ks_clear(cmd, advertising);\n+\tethtool_ks_add_mode(cmd, advertising, 10baseT_Half);\n+\tethtool_ks_add_mode(cmd, advertising, TP);\n \n \tcmd->base.speed = SPEED_10;\n \tcmd->base.duplex = DUPLEX_HALF;\ndiff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c\nindex 91761436709a..eb5bb8e2a868 100644\n--- a/drivers/net/usb/lan78xx.c\n+++ b/drivers/net/usb/lan78xx.c\n@@ -1609,15 +1609,13 @@ static int lan78xx_set_pause(struct net_device *net,\n \t\tu32 mii_adv;\n \t\tu32 advertising;\n \n-\t\tethtool_convert_link_mode_to_legacy_u32(\n-\t\t\t&advertising, ecmd.link_modes.advertising);\n+\t\tethtool_ks_to_u32(&advertising, ecmd.link_modes.advertising);\n \n \t\tadvertising &= ~(ADVERTISED_Pause | ADVERTISED_Asym_Pause);\n \t\tmii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);\n \t\tadvertising |= mii_adv_to_ethtool_adv_t(mii_adv);\n \n-\t\tethtool_convert_legacy_u32_to_link_mode(\n-\t\t\tecmd.link_modes.advertising, advertising);\n+\t\tethtool_u32_to_ks(ecmd.link_modes.advertising, advertising);\n \n \t\tphy_ethtool_ksettings_set(phydev, &ecmd);\n \t}\ndiff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c\nindex 5f565bd574da..8bbe4be8a27d 100644\n--- a/drivers/net/usb/rtl8150.c\n+++ b/drivers/net/usb/rtl8150.c\n@@ -827,8 +827,7 @@ static int rtl8150_get_link_ksettings(struct net_device *netdev,\n \t\t DUPLEX_FULL : DUPLEX_HALF;\n \t}\n \n-\tethtool_convert_legacy_u32_to_link_mode(ecmd->link_modes.supported,\n-\t\t\t\t\t\tsupported);\n+\tethtool_u32_to_ks(ecmd->link_modes.supported, supported);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c\nindex f34794a76c4d..afbd03ab43d0 100644\n--- a/drivers/net/virtio_net.c\n+++ b/drivers/net/virtio_net.c\n@@ -2021,7 +2021,7 @@ virtnet_validate_ethtool_cmd(const struct ethtool_link_ksettings *cmd)\n \t */\n \tdiff1.base.speed = 0;\n \tdiff2.base.port = PORT_OTHER;\n-\tethtool_link_ksettings_zero_link_mode(&diff1, advertising);\n+\tethtool_ks_clear(&diff1, advertising);\n \tdiff1.base.duplex = 0;\n \tdiff1.base.cmd = 0;\n \tdiff1.base.link_mode_masks_nwords = 0;\ndiff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c\nindex 2ff27314e047..3c1353eb98c1 100644\n--- a/drivers/net/vmxnet3/vmxnet3_ethtool.c\n+++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c\n@@ -476,12 +476,12 @@ vmxnet3_get_link_ksettings(struct net_device *netdev,\n {\n \tstruct vmxnet3_adapter *adapter = netdev_priv(netdev);\n \n-\tethtool_link_ksettings_zero_link_mode(ecmd, supported);\n-\tethtool_link_ksettings_add_link_mode(ecmd, supported, 10000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(ecmd, supported, 1000baseT_Full);\n-\tethtool_link_ksettings_add_link_mode(ecmd, supported, TP);\n-\tethtool_link_ksettings_zero_link_mode(ecmd, advertising);\n-\tethtool_link_ksettings_add_link_mode(ecmd, advertising, TP);\n+\tethtool_ks_clear(ecmd, supported);\n+\tethtool_ks_add_mode(ecmd, supported, 10000baseT_Full);\n+\tethtool_ks_add_mode(ecmd, supported, 1000baseT_Full);\n+\tethtool_ks_add_mode(ecmd, supported, TP);\n+\tethtool_ks_clear(ecmd, advertising);\n+\tethtool_ks_add_mode(ecmd, advertising, TP);\n \tecmd->base.port = PORT_TP;\n \n \tif (adapter->link_speed) {\ndiff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c\nindex 06415b6a8f68..9b8b23e49036 100644\n--- a/drivers/s390/net/qeth_core_main.c\n+++ b/drivers/s390/net/qeth_core_main.c\n@@ -6113,72 +6113,72 @@ EXPORT_SYMBOL_GPL(qeth_core_get_drvinfo);\n static void qeth_set_cmd_adv_sup(struct ethtool_link_ksettings *cmd,\n \t\t\t\tint maxspeed, int porttype)\n {\n-\tethtool_link_ksettings_zero_link_mode(cmd, supported);\n-\tethtool_link_ksettings_zero_link_mode(cmd, advertising);\n-\tethtool_link_ksettings_zero_link_mode(cmd, lp_advertising);\n+\tethtool_ks_clear(cmd, supported);\n+\tethtool_ks_clear(cmd, advertising);\n+\tethtool_ks_clear(cmd, lp_advertising);\n \n-\tethtool_link_ksettings_add_link_mode(cmd, supported, Autoneg);\n-\tethtool_link_ksettings_add_link_mode(cmd, advertising, Autoneg);\n+\tethtool_ks_add_mode(cmd, supported, Autoneg);\n+\tethtool_ks_add_mode(cmd, advertising, Autoneg);\n \n \tswitch (porttype) {\n \tcase PORT_TP:\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported, TP);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising, TP);\n+\t\tethtool_ks_add_mode(cmd, supported, TP);\n+\t\tethtool_ks_add_mode(cmd, advertising, TP);\n \t\tbreak;\n \tcase PORT_FIBRE:\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising, FIBRE);\n+\t\tethtool_ks_add_mode(cmd, supported, FIBRE);\n+\t\tethtool_ks_add_mode(cmd, advertising, FIBRE);\n \t\tbreak;\n \tdefault:\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported, TP);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising, TP);\n+\t\tethtool_ks_add_mode(cmd, supported, TP);\n+\t\tethtool_ks_add_mode(cmd, advertising, TP);\n \t\tWARN_ON_ONCE(1);\n \t}\n \n \t/* fallthrough from high to low, to select all legal speeds: */\n \tswitch (maxspeed) {\n \tcase SPEED_10000:\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 10000baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 10000baseT_Full);\n \tcase SPEED_1000:\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 1000baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 1000baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 1000baseT_Half);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 1000baseT_Half);\n \tcase SPEED_100:\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 100baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 100baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 100baseT_Half);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 100baseT_Half);\n \tcase SPEED_10:\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 10baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 10baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 10baseT_Half);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 10baseT_Half);\n \t\t/* end fallthrough */\n \t\tbreak;\n \tdefault:\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 10baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 10baseT_Full);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, supported,\n+\t\tethtool_ks_add_mode(cmd, supported,\n \t\t\t\t\t\t 10baseT_Half);\n-\t\tethtool_link_ksettings_add_link_mode(cmd, advertising,\n+\t\tethtool_ks_add_mode(cmd, advertising,\n \t\t\t\t\t\t 10baseT_Half);\n \t\tWARN_ON_ONCE(1);\n \t}\ndiff --git a/include/linux/ethtool.h b/include/linux/ethtool.h\nindex f8a2245b70ac..c87ace66092f 100644\n--- a/include/linux/ethtool.h\n+++ b/include/linux/ethtool.h\n@@ -119,37 +119,35 @@ struct ethtool_link_ksettings {\n };\n \n /**\n- * ethtool_link_ksettings_zero_link_mode - clear link_ksettings link mode mask\n+ * ethtool_ks_clear - clear link_ksettings link mode mask\n * @ptr : pointer to struct ethtool_link_ksettings\n * @name : one of supported/advertising/lp_advertising\n */\n-#define ethtool_link_ksettings_zero_link_mode(ptr, name)\t\t\\\n+#define ethtool_ks_clear(ptr, name)\t\t\\\n \tbitmap_zero((ptr)->link_modes.name, __ETHTOOL_LINK_MODE_MASK_NBITS)\n \n /**\n- * ethtool_link_ksettings_add_link_mode - set bit in link_ksettings\n- * link mode mask\n+ * ethtool_ks_add_mode - set bit in link_ksettings link mode mask\n * @ptr : pointer to struct ethtool_link_ksettings\n * @name : one of supported/advertising/lp_advertising\n * @mode : one of the ETHTOOL_LINK_MODE_*_BIT\n * (not atomic, no bound checking)\n */\n-#define ethtool_link_ksettings_add_link_mode(ptr, name, mode)\t\t\\\n+#define ethtool_ks_add_mode(ptr, name, mode)\t\t\\\n \t__set_bit(ETHTOOL_LINK_MODE_ ## mode ## _BIT, (ptr)->link_modes.name)\n \n /**\n- * ethtool_link_ksettings_del_link_mode - clear bit in link_ksettings\n- * link mode mask\n+ * ethtool_ks_del_mode - clear bit in link_ksettings link mode mask\n * @ptr : pointer to struct ethtool_link_ksettings\n * @name : one of supported/advertising/lp_advertising\n * @mode : one of the ETHTOOL_LINK_MODE_*_BIT\n * (not atomic, no bound checking)\n */\n-#define ethtool_link_ksettings_del_link_mode(ptr, name, mode)\t\t\\\n+#define ethtool_ks_del_mode(ptr, name, mode)\t\t\\\n \t__clear_bit(ETHTOOL_LINK_MODE_ ## mode ## _BIT, (ptr)->link_modes.name)\n \n /**\n- * ethtool_link_ksettings_test_link_mode - test bit in ksettings link mode mask\n+ * ethtool_ks_test - test bit in ksettings link mode mask\n * @ptr : pointer to struct ethtool_link_ksettings\n * @name : one of supported/advertising/lp_advertising\n * @mode : one of the ETHTOOL_LINK_MODE_*_BIT\n@@ -157,7 +155,7 @@ struct ethtool_link_ksettings {\n *\n * Returns true/false.\n */\n-#define ethtool_link_ksettings_test_link_mode(ptr, name, mode)\t\t\\\n+#define ethtool_ks_test(ptr, name, mode)\t\t\\\n \ttest_bit(ETHTOOL_LINK_MODE_ ## mode ## _BIT, (ptr)->link_modes.name)\n \n extern int\n@@ -174,12 +172,10 @@ __ethtool_get_link_ksettings(struct net_device *dev,\n void ethtool_intersect_link_masks(struct ethtool_link_ksettings *dst,\n \t\t\t\t struct ethtool_link_ksettings *src);\n \n-void ethtool_convert_legacy_u32_to_link_mode(unsigned long *dst,\n-\t\t\t\t\t u32 legacy_u32);\n+void ethtool_u32_to_ks(unsigned long *dst, u32 legacy_u32);\n \n /* return false if src had higher bits set. lower bits always updated. */\n-bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,\n-\t\t\t\t const unsigned long *src);\n+bool ethtool_ks_to_u32(u32 *legacy_u32, const unsigned long *src);\n \n /**\n * struct ethtool_ops - optional netdev operations\ndiff --git a/net/core/ethtool.c b/net/core/ethtool.c\nindex c15075dc7572..43d4e68b6b9a 100644\n--- a/net/core/ethtool.c\n+++ b/net/core/ethtool.c\n@@ -398,17 +398,15 @@ void ethtool_intersect_link_masks(struct ethtool_link_ksettings *dst,\n }\n EXPORT_SYMBOL(ethtool_intersect_link_masks);\n \n-void ethtool_convert_legacy_u32_to_link_mode(unsigned long *dst,\n-\t\t\t\t\t u32 legacy_u32)\n+void ethtool_u32_to_ks(unsigned long *dst, u32 legacy_u32)\n {\n \tbitmap_zero(dst, __ETHTOOL_LINK_MODE_MASK_NBITS);\n \tdst[0] = legacy_u32;\n }\n-EXPORT_SYMBOL(ethtool_convert_legacy_u32_to_link_mode);\n+EXPORT_SYMBOL(ethtool_u32_to_ks);\n \n /* return false if src had higher bits set. lower bits always updated. */\n-bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,\n-\t\t\t\t\t const unsigned long *src)\n+bool ethtool_ks_to_u32(u32 *legacy_u32, const unsigned long *src)\n {\n \tbool retval = true;\n \n@@ -428,7 +426,7 @@ bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,\n \t*legacy_u32 = src[0];\n \treturn retval;\n }\n-EXPORT_SYMBOL(ethtool_convert_link_mode_to_legacy_u32);\n+EXPORT_SYMBOL(ethtool_ks_to_u32);\n \n /* return false if legacy contained non-0 deprecated fields\n * maxtxpkt/maxrxpkt. rest of ksettings always updated\n@@ -450,15 +448,12 @@ convert_legacy_settings_to_link_ksettings(\n \t legacy_settings->maxrxpkt)\n \t\tretval = false;\n \n-\tethtool_convert_legacy_u32_to_link_mode(\n-\t\tlink_ksettings->link_modes.supported,\n-\t\tlegacy_settings->supported);\n-\tethtool_convert_legacy_u32_to_link_mode(\n-\t\tlink_ksettings->link_modes.advertising,\n-\t\tlegacy_settings->advertising);\n-\tethtool_convert_legacy_u32_to_link_mode(\n-\t\tlink_ksettings->link_modes.lp_advertising,\n-\t\tlegacy_settings->lp_advertising);\n+\tethtool_u32_to_ks(link_ksettings->link_modes.supported,\n+\t\t\t legacy_settings->supported);\n+\tethtool_u32_to_ks(link_ksettings->link_modes.advertising,\n+\t\t\t legacy_settings->advertising);\n+\tethtool_u32_to_ks(link_ksettings->link_modes.lp_advertising,\n+\t\t\t legacy_settings->lp_advertising);\n \tlink_ksettings->base.speed\n \t\t= ethtool_cmd_speed(legacy_settings);\n \tlink_ksettings->base.duplex\n@@ -495,15 +490,12 @@ convert_link_ksettings_to_legacy_settings(\n \t * __u32\tmaxrxpkt;\n \t */\n \n-\tretval &= ethtool_convert_link_mode_to_legacy_u32(\n-\t\t&legacy_settings->supported,\n-\t\tlink_ksettings->link_modes.supported);\n-\tretval &= ethtool_convert_link_mode_to_legacy_u32(\n-\t\t&legacy_settings->advertising,\n-\t\tlink_ksettings->link_modes.advertising);\n-\tretval &= ethtool_convert_link_mode_to_legacy_u32(\n-\t\t&legacy_settings->lp_advertising,\n-\t\tlink_ksettings->link_modes.lp_advertising);\n+\tretval &= ethtool_ks_to_u32(&legacy_settings->supported,\n+\t\t\t\t link_ksettings->link_modes.supported);\n+\tretval &= ethtool_ks_to_u32(&legacy_settings->advertising,\n+\t\t\t\t link_ksettings->link_modes.advertising);\n+\tretval &= ethtool_ks_to_u32(&legacy_settings->lp_advertising,\n+\t\t\t\t link_ksettings->link_modes.lp_advertising);\n \tethtool_cmd_speed_set(legacy_settings, link_ksettings->base.speed);\n \tlegacy_settings->duplex\n \t\t= link_ksettings->base.duplex;\n", "prefixes": [ "v2", "1/2" ] }