Re: [PATCH v4 net-next 13/19] ionic: Add initial ethtool support
From: Andrew Lunn <andrew@lunn.ch>
Date: 2019-07-25 13:28:53
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