Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1120ecd5 authored by Philippe Reynes's avatar Philippe Reynes Committed by Jeff Kirsher
Browse files

igbvf: use new API ethtool_{get|set}_link_ksettings



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: default avatarPhilippe Reynes <tremyfr@gmail.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent c1915300
Loading
Loading
Loading
Loading
+19 −19
Original line number Original line Diff line number Diff line
@@ -71,45 +71,45 @@ static const char igbvf_gstrings_test[][ETH_GSTRING_LEN] = {


#define IGBVF_TEST_LEN ARRAY_SIZE(igbvf_gstrings_test)
#define IGBVF_TEST_LEN ARRAY_SIZE(igbvf_gstrings_test)


static int igbvf_get_settings(struct net_device *netdev,
static int igbvf_get_link_ksettings(struct net_device *netdev,
			      struct ethtool_cmd *ecmd)
				    struct ethtool_link_ksettings *cmd)
{
{
	struct igbvf_adapter *adapter = netdev_priv(netdev);
	struct igbvf_adapter *adapter = netdev_priv(netdev);
	struct e1000_hw *hw = &adapter->hw;
	struct e1000_hw *hw = &adapter->hw;
	u32 status;
	u32 status;


	ecmd->supported   = SUPPORTED_1000baseT_Full;
	ethtool_link_ksettings_zero_link_mode(cmd, supported);
	ethtool_link_ksettings_add_link_mode(cmd, supported, 1000baseT_Full);
	ethtool_link_ksettings_zero_link_mode(cmd, advertising);
	ethtool_link_ksettings_add_link_mode(cmd, advertising, 1000baseT_Full);


	ecmd->advertising = ADVERTISED_1000baseT_Full;
	cmd->base.port = -1;

	ecmd->port = -1;
	ecmd->transceiver = XCVR_DUMMY1;


	status = er32(STATUS);
	status = er32(STATUS);
	if (status & E1000_STATUS_LU) {
	if (status & E1000_STATUS_LU) {
		if (status & E1000_STATUS_SPEED_1000)
		if (status & E1000_STATUS_SPEED_1000)
			ethtool_cmd_speed_set(ecmd, SPEED_1000);
			cmd->base.speed = SPEED_1000;
		else if (status & E1000_STATUS_SPEED_100)
		else if (status & E1000_STATUS_SPEED_100)
			ethtool_cmd_speed_set(ecmd, SPEED_100);
			cmd->base.speed = SPEED_100;
		else
		else
			ethtool_cmd_speed_set(ecmd, SPEED_10);
			cmd->base.speed = SPEED_10;


		if (status & E1000_STATUS_FD)
		if (status & E1000_STATUS_FD)
			ecmd->duplex = DUPLEX_FULL;
			cmd->base.duplex = DUPLEX_FULL;
		else
		else
			ecmd->duplex = DUPLEX_HALF;
			cmd->base.duplex = DUPLEX_HALF;
	} else {
	} else {
		ethtool_cmd_speed_set(ecmd, SPEED_UNKNOWN);
		cmd->base.speed = SPEED_UNKNOWN;
		ecmd->duplex = DUPLEX_UNKNOWN;
		cmd->base.duplex = DUPLEX_UNKNOWN;
	}
	}


	ecmd->autoneg = AUTONEG_DISABLE;
	cmd->base.autoneg = AUTONEG_DISABLE;


	return 0;
	return 0;
}
}


static int igbvf_set_settings(struct net_device *netdev,
static int igbvf_set_link_ksettings(struct net_device *netdev,
			      struct ethtool_cmd *ecmd)
				    const struct ethtool_link_ksettings *cmd)
{
{
	return -EOPNOTSUPP;
	return -EOPNOTSUPP;
}
}
@@ -443,8 +443,6 @@ static void igbvf_get_strings(struct net_device *netdev, u32 stringset,
}
}


static const struct ethtool_ops igbvf_ethtool_ops = {
static const struct ethtool_ops igbvf_ethtool_ops = {
	.get_settings		= igbvf_get_settings,
	.set_settings		= igbvf_set_settings,
	.get_drvinfo		= igbvf_get_drvinfo,
	.get_drvinfo		= igbvf_get_drvinfo,
	.get_regs_len		= igbvf_get_regs_len,
	.get_regs_len		= igbvf_get_regs_len,
	.get_regs		= igbvf_get_regs,
	.get_regs		= igbvf_get_regs,
@@ -467,6 +465,8 @@ static const struct ethtool_ops igbvf_ethtool_ops = {
	.get_ethtool_stats	= igbvf_get_ethtool_stats,
	.get_ethtool_stats	= igbvf_get_ethtool_stats,
	.get_coalesce		= igbvf_get_coalesce,
	.get_coalesce		= igbvf_get_coalesce,
	.set_coalesce		= igbvf_set_coalesce,
	.set_coalesce		= igbvf_set_coalesce,
	.get_link_ksettings	= igbvf_get_link_ksettings,
	.set_link_ksettings	= igbvf_set_link_ksettings,
};
};


void igbvf_set_ethtool_ops(struct net_device *netdev)
void igbvf_set_ethtool_ops(struct net_device *netdev)