Re: [PATCH v2] net: broadcom: bnx2x: use new api ethtool_{get|set}_link_ksettings

2017-01-24 Thread David Miller
From: Philippe Reynes 
Date: Sat, 21 Jan 2017 14:43:16 +0100

> The ethtool api {get|set}_settings is deprecated.
> We move this driver to new api {get|set}_link_ksettings.
> 
> As I don't have the hardware, I'd be very pleased if
> someone may test this patch.
> 
> Signed-off-by: Philippe Reynes 
> ---
> Changelog:
> v2:
> - also move to new api for bnx2x_vf

Applied.


RE: [PATCH v2] net: broadcom: bnx2x: use new api ethtool_{get|set}_link_ksettings

2017-01-23 Thread Mintz, Yuval
> The ethtool api {get|set}_settings is deprecated.
> We move this driver to new api {get|set}_link_ksettings.
> 
> As I don't have the hardware, I'd be very pleased if someone may test this
> patch.
> 
> Signed-off-by: Philippe Reynes 

>From the little testing I've did, things look fine. Thanks.
Acked-by: Yuval Mintz 


[PATCH v2] net: broadcom: bnx2x: use new api ethtool_{get|set}_link_ksettings

2017-01-21 Thread Philippe Reynes
The ethtool api {get|set}_settings is deprecated.
We move this driver to new api {get|set}_link_ksettings.

As I don't have the hardware, I'd be very pleased if
someone may test this patch.

Signed-off-by: Philippe Reynes 
---
Changelog:
v2:
- also move to new api for bnx2x_vf

 .../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c|  199 +++-
 1 files changed, 109 insertions(+), 90 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c 
b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
index 5f19427..4342374 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
@@ -216,165 +216,184 @@ static int bnx2x_get_port_type(struct bnx2x *bp)
return port_type;
 }
 
-static int bnx2x_get_vf_settings(struct net_device *dev,
-struct ethtool_cmd *cmd)
+static int bnx2x_get_vf_link_ksettings(struct net_device *dev,
+  struct ethtool_link_ksettings *cmd)
 {
struct bnx2x *bp = netdev_priv(dev);
+   u32 supported, advertising;
+
+   ethtool_convert_link_mode_to_legacy_u32(,
+   cmd->link_modes.supported);
+   ethtool_convert_link_mode_to_legacy_u32(,
+   cmd->link_modes.advertising);
 
if (bp->state == BNX2X_STATE_OPEN) {
if (test_bit(BNX2X_LINK_REPORT_FD,
 >vf_link_vars.link_report_flags))
-   cmd->duplex = DUPLEX_FULL;
+   cmd->base.duplex = DUPLEX_FULL;
else
-   cmd->duplex = DUPLEX_HALF;
+   cmd->base.duplex = DUPLEX_HALF;
 
-   ethtool_cmd_speed_set(cmd, bp->vf_link_vars.line_speed);
+   cmd->base.speed = bp->vf_link_vars.line_speed;
} else {
-   cmd->duplex = DUPLEX_UNKNOWN;
-   ethtool_cmd_speed_set(cmd, SPEED_UNKNOWN);
+   cmd->base.duplex = DUPLEX_UNKNOWN;
+   cmd->base.speed = SPEED_UNKNOWN;
}
 
-   cmd->port   = PORT_OTHER;
-   cmd->phy_address= 0;
-   cmd->transceiver= XCVR_INTERNAL;
-   cmd->autoneg= AUTONEG_DISABLE;
-   cmd->maxtxpkt   = 0;
-   cmd->maxrxpkt   = 0;
+   cmd->base.port  = PORT_OTHER;
+   cmd->base.phy_address   = 0;
+   cmd->base.autoneg   = AUTONEG_DISABLE;
 
DP(BNX2X_MSG_ETHTOOL, "ethtool_cmd: cmd %d\n"
   "  supported 0x%x  advertising 0x%x  speed %u\n"
-  "  duplex %d  port %d  phy_address %d  transceiver %d\n"
-  "  autoneg %d  maxtxpkt %d  maxrxpkt %d\n",
-  cmd->cmd, cmd->supported, cmd->advertising,
-  ethtool_cmd_speed(cmd),
-  cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver,
-  cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt);
+  "  duplex %d  port %d  phy_address %d\n"
+  "  autoneg %d\n",
+  cmd->base.cmd, supported, advertising,
+  cmd->base.speed,
+  cmd->base.duplex, cmd->base.port, cmd->base.phy_address,
+  cmd->base.autoneg);
 
return 0;
 }
 
-static int bnx2x_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
+static int bnx2x_get_link_ksettings(struct net_device *dev,
+   struct ethtool_link_ksettings *cmd)
 {
struct bnx2x *bp = netdev_priv(dev);
int cfg_idx = bnx2x_get_link_cfg_idx(bp);
u32 media_type;
+   u32 supported, advertising, lp_advertising;
+
+   ethtool_convert_link_mode_to_legacy_u32(_advertising,
+   cmd->link_modes.lp_advertising);
 
/* Dual Media boards present all available port types */
-   cmd->supported = bp->port.supported[cfg_idx] |
+   supported = bp->port.supported[cfg_idx] |
(bp->port.supported[cfg_idx ^ 1] &
 (SUPPORTED_TP | SUPPORTED_FIBRE));
-   cmd->advertising = bp->port.advertising[cfg_idx];
+   advertising = bp->port.advertising[cfg_idx];
media_type = bp->link_params.phy[bnx2x_get_cur_phy_idx(bp)].media_type;
if (media_type == ETH_PHY_SFP_1G_FIBER) {
-   cmd->supported &= ~(SUPPORTED_1baseT_Full);
-   cmd->advertising &= ~(ADVERTISED_1baseT_Full);
+   supported &= ~(SUPPORTED_1baseT_Full);
+   advertising &= ~(ADVERTISED_1baseT_Full);
}
 
if ((bp->state == BNX2X_STATE_OPEN) && bp->link_vars.link_up &&
!(bp->flags & MF_FUNC_DIS)) {
-   cmd->duplex = bp->link_vars.duplex;
+   cmd->base.duplex = bp->link_vars.duplex;
 
if (IS_MF(bp) && !BP_NOMCP(bp))
-   ethtool_cmd_speed_set(cmd, bnx2x_get_mf_speed(bp));
+   cmd->base.speed =