[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190725132845.GC21952@lunn.ch>
Date: Thu, 25 Jul 2019 15:28:45 +0200
From: Andrew Lunn <andrew@...n.ch>
To: Shannon Nelson <snelson@...sando.io>
Cc: netdev@...r.kernel.org, davem@...emloft.net
Subject: Re: [PATCH v4 net-next 13/19] ionic: Add initial ethtool support
On Mon, Jul 22, 2019 at 02:40:17PM -0700, Shannon Nelson wrote:
> +static void ionic_get_pauseparam(struct net_device *netdev,
> + struct ethtool_pauseparam *pause)
> +{
> + struct lif *lif = netdev_priv(netdev);
> + struct ionic_dev *idev = &lif->ionic->idev;
> + uint8_t pause_type = idev->port_info->config.pause_type;
> +
> + pause->autoneg = 0;
> +
> + if (pause_type) {
> + pause->rx_pause = pause_type & IONIC_PAUSE_F_RX ? 1 : 0;
> + pause->tx_pause = pause_type & IONIC_PAUSE_F_TX ? 1 : 0;
> + }
> +}
> +
> +static int ionic_set_pauseparam(struct net_device *netdev,
> + struct ethtool_pauseparam *pause)
> +{
> + struct lif *lif = netdev_priv(netdev);
> + struct ionic *ionic = lif->ionic;
> + struct ionic_dev *idev = &lif->ionic->idev;
> + u32 requested_pause;
> + int err;
> +
> + if (pause->autoneg == AUTONEG_ENABLE) {
> + netdev_info(netdev, "Please use 'ethtool -s ...' to change autoneg\n");
> + return -EOPNOTSUPP;
> + }
> +
> + /* change both at the same time */
> + requested_pause = PORT_PAUSE_TYPE_LINK;
> + if (pause->rx_pause)
> + requested_pause |= IONIC_PAUSE_F_RX;
> + if (pause->tx_pause)
> + requested_pause |= IONIC_PAUSE_F_TX;
Hi Shannon
This not what i was expecting, and i'm guessing what you have here is
not right.
So you don't support the case of pause->autoneg ==
AUTONEG_ENABLE. That implies that setting pause values directly
configures the MAC. The values from auto-neg are always ignored. Then
why did you set PAUSE in the get ksettings function?
If you always ignore the values from auto-neg, then your info message
also makes no sense.
What really does the firmware do?
Andrew
Powered by blists - more mailing lists