mirror of https://gitee.com/openkylin/linux.git
Fix the way the local advertising flow options are determined
Local flow control options needed in order to resolve the negotiation are incorrectly calculated. Previously 'mii_advertise_flowctrl' was called to determine the local advertising options, but these were determined based on FLOW_CTRL_RX/TX flags which are never set through ethtool. The patch simply translates from ethtool flow options to mii flow options. Signed-off-by: Pavaluca Matei <matei.pavaluca@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cf987afc7e
commit
43ef8d29ee
|
@ -3373,7 +3373,11 @@ static u32 gfar_get_flowctrl_cfg(struct gfar_private *priv)
|
||||||
if (phydev->asym_pause)
|
if (phydev->asym_pause)
|
||||||
rmt_adv |= LPA_PAUSE_ASYM;
|
rmt_adv |= LPA_PAUSE_ASYM;
|
||||||
|
|
||||||
lcl_adv = mii_advertise_flowctrl(phydev->advertising);
|
lcl_adv = 0;
|
||||||
|
if (phydev->advertising & ADVERTISED_Pause)
|
||||||
|
lcl_adv |= ADVERTISE_PAUSE_CAP;
|
||||||
|
if (phydev->advertising & ADVERTISED_Asym_Pause)
|
||||||
|
lcl_adv |= ADVERTISE_PAUSE_ASYM;
|
||||||
|
|
||||||
flowctrl = mii_resolve_flowctrl_fdx(lcl_adv, rmt_adv);
|
flowctrl = mii_resolve_flowctrl_fdx(lcl_adv, rmt_adv);
|
||||||
if (flowctrl & FLOW_CTRL_TX)
|
if (flowctrl & FLOW_CTRL_TX)
|
||||||
|
|
Loading…
Reference in New Issue