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 node;
|
||||||
u8 cpi_alg;
|
u8 cpi_alg;
|
||||||
bool link_up;
|
bool link_up;
|
||||||
|
u8 mac_type;
|
||||||
u8 duplex;
|
u8 duplex;
|
||||||
u32 speed;
|
u32 speed;
|
||||||
bool tns_mode;
|
bool tns_mode;
|
||||||
@ -446,6 +447,7 @@ struct bgx_stats_msg {
|
|||||||
/* Physical interface link status */
|
/* Physical interface link status */
|
||||||
struct bgx_link_status {
|
struct bgx_link_status {
|
||||||
u8 msg;
|
u8 msg;
|
||||||
|
u8 mac_type;
|
||||||
u8 link_up;
|
u8 link_up;
|
||||||
u8 duplex;
|
u8 duplex;
|
||||||
u32 speed;
|
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.link_up = link.link_up;
|
||||||
mbx.link_status.duplex = link.duplex;
|
mbx.link_status.duplex = link.duplex;
|
||||||
mbx.link_status.speed = link.speed;
|
mbx.link_status.speed = link.speed;
|
||||||
|
mbx.link_status.mac_type = link.mac_type;
|
||||||
nic_send_msg_to_vf(nic, vf, &mbx);
|
nic_send_msg_to_vf(nic, vf, &mbx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -130,12 +130,42 @@ static int nicvf_get_settings(struct net_device *netdev,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nic->speed <= 1000) {
|
switch (nic->speed) {
|
||||||
cmd->port = PORT_MII;
|
case SPEED_1000:
|
||||||
|
cmd->port = PORT_MII | PORT_TP;
|
||||||
cmd->autoneg = AUTONEG_ENABLE;
|
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->port = PORT_FIBRE;
|
||||||
cmd->autoneg = AUTONEG_DISABLE;
|
cmd->autoneg = AUTONEG_DISABLE;
|
||||||
|
cmd->supported |= SUPPORTED_FIBRE;
|
||||||
|
cmd->supported |= SUPPORTED_40000baseCR4_Full;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
cmd->duplex = nic->duplex;
|
cmd->duplex = nic->duplex;
|
||||||
ethtool_cmd_speed_set(cmd, nic->speed);
|
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->link_up = mbx.link_status.link_up;
|
||||||
nic->duplex = mbx.link_status.duplex;
|
nic->duplex = mbx.link_status.duplex;
|
||||||
nic->speed = mbx.link_status.speed;
|
nic->speed = mbx.link_status.speed;
|
||||||
|
nic->mac_type = mbx.link_status.mac_type;
|
||||||
if (nic->link_up) {
|
if (nic->link_up) {
|
||||||
netdev_info(nic->netdev, "%s: Link is Up %d Mbps %s\n",
|
netdev_info(nic->netdev, "%s: Link is Up %d Mbps %s\n",
|
||||||
nic->netdev->name, nic->speed,
|
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;
|
return;
|
||||||
|
|
||||||
lmac = &bgx->lmac[lmacid];
|
lmac = &bgx->lmac[lmacid];
|
||||||
|
link->mac_type = lmac->lmac_type;
|
||||||
link->link_up = lmac->link_up;
|
link->link_up = lmac->link_up;
|
||||||
link->duplex = lmac->last_duplex;
|
link->duplex = lmac->last_duplex;
|
||||||
link->speed = lmac->last_speed;
|
link->speed = lmac->last_speed;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user