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 <m...@jakemoroni.com>
---
 drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c 
b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
index faea674..85306d1 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
+++ b/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)
                newadv = ADVERTISED_Pause | ADVERTISED_Asym_Pause;
        if (epause->tx_pause)
-               newadv |= ADVERTISED_Asym_Pause;
+               newadv ^= ADVERTISED_Asym_Pause;
 
        oldadv = phydev->advertising &
                        (ADVERTISED_Pause | ADVERTISED_Asym_Pause);
-- 
2.7.4

Reply via email to