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

Commit f88788f0 authored by Matt Carlson's avatar Matt Carlson Committed by David S. Miller
Browse files

tg3: Use mii_advertise_flowctrl



This patch replaces tg3's internal tg3_advert_flowctrl_1000T function
with mii_advertise_flowctrl provided by the kernel headers.

Signed-off-by: default avatarMatt Carlson <mcarlson@broadcom.com>
Reviewed-by: default avatarMichael Chan <mchan@broadcom.com>
Reviewed-by: default avatarBenjamin Li <benli@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 55086ad9
Loading
Loading
Loading
Loading
+3 −19
Original line number Original line Diff line number Diff line
@@ -1671,22 +1671,6 @@ static void tg3_link_report(struct tg3 *tp)
	}
	}
}
}


static u16 tg3_advert_flowctrl_1000T(u8 flow_ctrl)
{
	u16 miireg;

	if ((flow_ctrl & FLOW_CTRL_TX) && (flow_ctrl & FLOW_CTRL_RX))
		miireg = ADVERTISE_PAUSE_CAP;
	else if (flow_ctrl & FLOW_CTRL_TX)
		miireg = ADVERTISE_PAUSE_ASYM;
	else if (flow_ctrl & FLOW_CTRL_RX)
		miireg = ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
	else
		miireg = 0;

	return miireg;
}

static u16 tg3_advert_flowctrl_1000X(u8 flow_ctrl)
static u16 tg3_advert_flowctrl_1000X(u8 flow_ctrl)
{
{
	u16 miireg;
	u16 miireg;
@@ -1787,7 +1771,7 @@ static void tg3_adjust_link(struct net_device *dev)
		if (phydev->duplex == DUPLEX_HALF)
		if (phydev->duplex == DUPLEX_HALF)
			mac_mode |= MAC_MODE_HALF_DUPLEX;
			mac_mode |= MAC_MODE_HALF_DUPLEX;
		else {
		else {
			lcl_adv = tg3_advert_flowctrl_1000T(
			lcl_adv = mii_advertise_flowctrl(
				  tp->link_config.flowctrl);
				  tp->link_config.flowctrl);


			if (phydev->pause)
			if (phydev->pause)
@@ -3589,7 +3573,7 @@ static int tg3_phy_autoneg_cfg(struct tg3 *tp, u32 advertise, u32 flowctrl)


	new_adv = ADVERTISE_CSMA;
	new_adv = ADVERTISE_CSMA;
	new_adv |= ethtool_adv_to_mii_adv_t(advertise) & ADVERTISE_ALL;
	new_adv |= ethtool_adv_to_mii_adv_t(advertise) & ADVERTISE_ALL;
	new_adv |= tg3_advert_flowctrl_1000T(flowctrl);
	new_adv |= mii_advertise_flowctrl(flowctrl);


	err = tg3_writephy(tp, MII_ADVERTISE, new_adv);
	err = tg3_writephy(tp, MII_ADVERTISE, new_adv);
	if (err)
	if (err)
@@ -3777,7 +3761,7 @@ static bool tg3_phy_copper_an_config_ok(struct tg3 *tp, u32 *lcladv)


	advmsk = ADVERTISE_ALL;
	advmsk = ADVERTISE_ALL;
	if (tp->link_config.active_duplex == DUPLEX_FULL) {
	if (tp->link_config.active_duplex == DUPLEX_FULL) {
		tgtadv |= tg3_advert_flowctrl_1000T(tp->link_config.flowctrl);
		tgtadv |= mii_advertise_flowctrl(tp->link_config.flowctrl);
		advmsk |= ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
		advmsk |= ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
	}
	}