Răsfoiți Sursa

dpaa_eth: fix pause capability advertisement logic

The ADVERTISED_Asym_Pause bit was being improperly set when both
rx and tx pause were enabled. When rx and tx are both enabled, only
the ADVERTISED_Pause bit is supposed to be set.

Signed-off-by: Jake Moroni <mail@jakemoroni.com>
Acked-by: Madalin Bucur <madalin.bucur@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jake Moroni 7 ani în urmă
părinte
comite
3021efb440
1 a modificat fișierele cu 1 adăugiri și 1 ștergeri
  1. 1 1
      drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c

+ 1 - 1
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c

@@ -211,7 +211,7 @@ static int dpaa_set_pauseparam(struct net_device *net_dev,
 	if (epause->rx_pause)
 	if (epause->rx_pause)
 		newadv = ADVERTISED_Pause | ADVERTISED_Asym_Pause;
 		newadv = ADVERTISED_Pause | ADVERTISED_Asym_Pause;
 	if (epause->tx_pause)
 	if (epause->tx_pause)
-		newadv |= ADVERTISED_Asym_Pause;
+		newadv ^= ADVERTISED_Asym_Pause;
 
 
 	oldadv = phydev->advertising &
 	oldadv = phydev->advertising &
 			(ADVERTISED_Pause | ADVERTISED_Asym_Pause);
 			(ADVERTISED_Pause | ADVERTISED_Asym_Pause);