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

Commit 1cc70259 authored by Thanneeru Srinivasulu's avatar Thanneeru Srinivasulu Committed by David S. Miller
Browse files

net: thunderx: Add ethtool support for supported ports and link modes.

parent 5271156b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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);
		}
	}
+33 −3
Original line number Diff line number Diff line
@@ -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;
		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);
+1 −0
Original line number Diff line number Diff line
@@ -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,
+1 −0
Original line number Diff line number Diff line
@@ -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;