net: thunderx: Add ethtool support for supported ports and link modes.
Signed-off-by: Thanneeru Srinivasulu <tsrinivasulu@cavium.com> Signed-off-by: Sunil Goutham <sgoutham@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5271156b1a
commit
1cc702591b
@ -292,6 +292,7 @@ struct nicvf {
|
||||
u8 node;
|
||||
u8 cpi_alg;
|
||||
bool link_up;
|
||||
u8 mac_type;
|
||||
u8 duplex;
|
||||
u32 speed;
|
||||
bool tns_mode;
|
||||
@ -446,6 +447,7 @@ struct bgx_stats_msg {
|
||||
/* Physical interface link status */
|
||||
struct bgx_link_status {
|
||||
u8 msg;
|
||||
u8 mac_type;
|
||||
u8 link_up;
|
||||
u8 duplex;
|
||||
u32 speed;
|
||||
|
@ -1258,6 +1258,7 @@ static void nic_poll_for_link(struct work_struct *work)
|
||||
mbx.link_status.link_up = link.link_up;
|
||||
mbx.link_status.duplex = link.duplex;
|
||||
mbx.link_status.speed = link.speed;
|
||||
mbx.link_status.mac_type = link.mac_type;
|
||||
nic_send_msg_to_vf(nic, vf, &mbx);
|
||||
}
|
||||
}
|
||||
|
@ -130,12 +130,42 @@ static int nicvf_get_settings(struct net_device *netdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (nic->speed <= 1000) {
|
||||
cmd->port = PORT_MII;
|
||||
switch (nic->speed) {
|
||||
case SPEED_1000:
|
||||
cmd->port = PORT_MII | PORT_TP;
|
||||
cmd->autoneg = AUTONEG_ENABLE;
|
||||
} else {
|
||||
cmd->supported |= SUPPORTED_MII | SUPPORTED_TP;
|
||||
cmd->supported |= SUPPORTED_1000baseT_Full |
|
||||
SUPPORTED_1000baseT_Half |
|
||||
SUPPORTED_100baseT_Full |
|
||||
SUPPORTED_100baseT_Half |
|
||||
SUPPORTED_10baseT_Full |
|
||||
SUPPORTED_10baseT_Half;
|
||||
cmd->supported |= SUPPORTED_Autoneg;
|
||||
cmd->advertising |= ADVERTISED_1000baseT_Full |
|
||||
ADVERTISED_1000baseT_Half |
|
||||
ADVERTISED_100baseT_Full |
|
||||
ADVERTISED_100baseT_Half |
|
||||
ADVERTISED_10baseT_Full |
|
||||
ADVERTISED_10baseT_Half;
|
||||
break;
|
||||
case SPEED_10000:
|
||||
if (nic->mac_type == BGX_MODE_RXAUI) {
|
||||
cmd->port = PORT_TP;
|
||||
cmd->supported |= SUPPORTED_TP;
|
||||
} else {
|
||||
cmd->port = PORT_FIBRE;
|
||||
cmd->supported |= SUPPORTED_FIBRE;
|
||||
}
|
||||
cmd->autoneg = AUTONEG_DISABLE;
|
||||
cmd->supported |= SUPPORTED_10000baseT_Full;
|
||||
break;
|
||||
case SPEED_40000:
|
||||
cmd->port = PORT_FIBRE;
|
||||
cmd->autoneg = AUTONEG_DISABLE;
|
||||
cmd->supported |= SUPPORTED_FIBRE;
|
||||
cmd->supported |= SUPPORTED_40000baseCR4_Full;
|
||||
break;
|
||||
}
|
||||
cmd->duplex = nic->duplex;
|
||||
ethtool_cmd_speed_set(cmd, nic->speed);
|
||||
|
@ -221,6 +221,7 @@ static void nicvf_handle_mbx_intr(struct nicvf *nic)
|
||||
nic->link_up = mbx.link_status.link_up;
|
||||
nic->duplex = mbx.link_status.duplex;
|
||||
nic->speed = mbx.link_status.speed;
|
||||
nic->mac_type = mbx.link_status.mac_type;
|
||||
if (nic->link_up) {
|
||||
netdev_info(nic->netdev, "%s: Link is Up %d Mbps %s\n",
|
||||
nic->netdev->name, nic->speed,
|
||||
|
@ -161,6 +161,7 @@ void bgx_get_lmac_link_state(int node, int bgx_idx, int lmacid, void *status)
|
||||
return;
|
||||
|
||||
lmac = &bgx->lmac[lmacid];
|
||||
link->mac_type = lmac->lmac_type;
|
||||
link->link_up = lmac->link_up;
|
||||
link->duplex = lmac->last_duplex;
|
||||
link->speed = lmac->last_speed;
|
||||
|
Loading…
x
Reference in New Issue
Block a user