Commit 8f9000a5 authored by Pavel Belous's avatar Pavel Belous Committed by David S. Miller

net:ethernet:aquantia: Add 2500/5000 mbit link modes support.

Using new link mode indices instead deprecated SUPPORTED_/ADVERTISED_
macro.

Added indication for 2500 and 5000mbit link modes (AQtion adapter already
supports these speeds).
Signed-off-by: default avatarPavel Belous <pavel.belous@aquantia.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent caa137ee
...@@ -737,48 +737,70 @@ err_exit:; ...@@ -737,48 +737,70 @@ err_exit:;
void aq_nic_get_link_ksettings(struct aq_nic_s *self, void aq_nic_get_link_ksettings(struct aq_nic_s *self,
struct ethtool_link_ksettings *cmd) struct ethtool_link_ksettings *cmd)
{ {
u32 supported, advertising;
cmd->base.port = PORT_TP; cmd->base.port = PORT_TP;
/* This driver supports only 10G capable adapters, so DUPLEX_FULL */ /* This driver supports only 10G capable adapters, so DUPLEX_FULL */
cmd->base.duplex = DUPLEX_FULL; cmd->base.duplex = DUPLEX_FULL;
cmd->base.autoneg = self->aq_nic_cfg.is_autoneg; cmd->base.autoneg = self->aq_nic_cfg.is_autoneg;
ethtool_convert_link_mode_to_legacy_u32(&supported, ethtool_link_ksettings_zero_link_mode(cmd, supported);
cmd->link_modes.supported);
ethtool_convert_link_mode_to_legacy_u32(&advertising, if (self->aq_hw_caps.link_speed_msk & AQ_NIC_RATE_10G)
cmd->link_modes.advertising); ethtool_link_ksettings_add_link_mode(cmd, supported,
10000baseT_Full);
supported |= (self->aq_hw_caps.link_speed_msk & AQ_NIC_RATE_10G) ?
ADVERTISED_10000baseT_Full : 0U; if (self->aq_hw_caps.link_speed_msk & AQ_NIC_RATE_5G)
supported |= (self->aq_hw_caps.link_speed_msk & AQ_NIC_RATE_1G) ? ethtool_link_ksettings_add_link_mode(cmd, supported,
ADVERTISED_1000baseT_Full : 0U; 5000baseT_Full);
supported |= (self->aq_hw_caps.link_speed_msk & AQ_NIC_RATE_100M) ?
ADVERTISED_100baseT_Full : 0U; if (self->aq_hw_caps.link_speed_msk & AQ_NIC_RATE_2GS)
supported |= self->aq_hw_caps.flow_control ? SUPPORTED_Pause : 0; ethtool_link_ksettings_add_link_mode(cmd, supported,
supported |= SUPPORTED_Autoneg; 2500baseT_Full);
supported |= SUPPORTED_TP;
if (self->aq_hw_caps.link_speed_msk & AQ_NIC_RATE_1G)
advertising = (self->aq_nic_cfg.is_autoneg) ? ethtool_link_ksettings_add_link_mode(cmd, supported,
ADVERTISED_Autoneg : 0U; 1000baseT_Full);
advertising |=
(self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_10G) ? if (self->aq_hw_caps.link_speed_msk & AQ_NIC_RATE_100M)
ADVERTISED_10000baseT_Full : 0U; ethtool_link_ksettings_add_link_mode(cmd, supported,
advertising |= 100baseT_Full);
(self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_1G) ?
ADVERTISED_1000baseT_Full : 0U; if (self->aq_hw_caps.flow_control)
ethtool_link_ksettings_add_link_mode(cmd, supported,
advertising |= Pause);
(self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_100M) ?
ADVERTISED_100baseT_Full : 0U; ethtool_link_ksettings_add_link_mode(cmd, supported, Autoneg);
advertising |= (self->aq_nic_cfg.flow_control) ? ethtool_link_ksettings_add_link_mode(cmd, supported, TP);
ADVERTISED_Pause : 0U;
advertising |= ADVERTISED_TP; ethtool_link_ksettings_zero_link_mode(cmd, advertising);
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported, if (self->aq_nic_cfg.is_autoneg)
supported); ethtool_link_ksettings_add_link_mode(cmd, advertising, Autoneg);
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
advertising); if (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_10G)
ethtool_link_ksettings_add_link_mode(cmd, advertising,
10000baseT_Full);
if (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_5G)
ethtool_link_ksettings_add_link_mode(cmd, advertising,
5000baseT_Full);
if (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_2GS)
ethtool_link_ksettings_add_link_mode(cmd, advertising,
2500baseT_Full);
if (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_1G)
ethtool_link_ksettings_add_link_mode(cmd, advertising,
1000baseT_Full);
if (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_100M)
ethtool_link_ksettings_add_link_mode(cmd, advertising,
100baseT_Full);
if (self->aq_nic_cfg.flow_control)
ethtool_link_ksettings_add_link_mode(cmd, advertising,
Pause);
ethtool_link_ksettings_add_link_mode(cmd, advertising, TP);
} }
int aq_nic_set_link_ksettings(struct aq_nic_s *self, int aq_nic_set_link_ksettings(struct aq_nic_s *self,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment