Message ID | 1351271832-21275-1-git-send-email-fbl@redhat.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, 2012-10-26 at 15:17 -0200, Flavio Leitner wrote: > The hardware doesn't support controlling pause frames autoneg, so > report that back correctly to userspace. > > Signed-off-by: Flavio Leitner <fbl@redhat.com> > --- > drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > I don't have the hardware handy to test this, so I appreciate > if someone could do it. > > diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c > index 10468e7..b4b46f9 100644 > --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c > +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c > @@ -488,6 +488,8 @@ netxen_nic_get_pauseparam(struct net_device *dev, > __u32 val; > int port = adapter->physical_port; > > + pause->autoneg = AUTONEG_DISABLE; AUTONEG_DISABLE is really meant for use in ethtool_cmd::autoneg, not ethtool_pauseparam::autoneg. (Though they are both really booleans so this works in practice.) > if (adapter->ahw.port_type == NETXEN_NIC_GBE) { > if ((port < 0) || (port >= NETXEN_NIU_MAX_GBE_PORTS)) > return; > @@ -532,6 +534,10 @@ netxen_nic_set_pauseparam(struct net_device *dev, > struct netxen_adapter *adapter = netdev_priv(dev); > __u32 val; > int port = adapter->physical_port; > + > + if (pause->autoneg) > + return -EOPNOTSUPP; Should be -EINVAL; the operation (ETHTOOL_SPAUSEPARAM) is supported but not these particular arguments. Ben. > /* read mode */ > if (adapter->ahw.port_type == NETXEN_NIC_GBE) { > if ((port < 0) || (port >= NETXEN_NIU_MAX_GBE_PORTS))
On Fri, 26 Oct 2012 22:10:42 +0100 Ben Hutchings <bhutchings@solarflare.com> wrote: > On Fri, 2012-10-26 at 15:17 -0200, Flavio Leitner wrote: > > The hardware doesn't support controlling pause frames autoneg, so > > report that back correctly to userspace. > > > > Signed-off-by: Flavio Leitner <fbl@redhat.com> > > --- > > drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > I don't have the hardware handy to test this, so I appreciate > > if someone could do it. > > > > diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c > > index 10468e7..b4b46f9 100644 > > --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c > > +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c > > @@ -488,6 +488,8 @@ netxen_nic_get_pauseparam(struct net_device *dev, > > __u32 val; > > int port = adapter->physical_port; > > > > + pause->autoneg = AUTONEG_DISABLE; > > AUTONEG_DISABLE is really meant for use in ethtool_cmd::autoneg, not > ethtool_pauseparam::autoneg. (Though they are both really booleans so > this works in practice.) I saw few places using it. I will change to 0 instead, though as the meaning for both use-cases are the same (auto negotiation being enabled or disabled) and probably won't change, maybe we could just share. > > if (adapter->ahw.port_type == NETXEN_NIC_GBE) { > > if ((port < 0) || (port >= NETXEN_NIU_MAX_GBE_PORTS)) > > return; > > @@ -532,6 +534,10 @@ netxen_nic_set_pauseparam(struct net_device *dev, > > struct netxen_adapter *adapter = netdev_priv(dev); > > __u32 val; > > int port = adapter->physical_port; > > + > > + if (pause->autoneg) > > + return -EOPNOTSUPP; > > Should be -EINVAL; the operation (ETHTOOL_SPAUSEPARAM) is supported but > not these particular arguments. agree, fixing on v2. thanks, fbl -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c index 10468e7..b4b46f9 100644 --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c @@ -488,6 +488,8 @@ netxen_nic_get_pauseparam(struct net_device *dev, __u32 val; int port = adapter->physical_port; + pause->autoneg = AUTONEG_DISABLE; + if (adapter->ahw.port_type == NETXEN_NIC_GBE) { if ((port < 0) || (port >= NETXEN_NIU_MAX_GBE_PORTS)) return; @@ -532,6 +534,10 @@ netxen_nic_set_pauseparam(struct net_device *dev, struct netxen_adapter *adapter = netdev_priv(dev); __u32 val; int port = adapter->physical_port; + + if (pause->autoneg) + return -EOPNOTSUPP; + /* read mode */ if (adapter->ahw.port_type == NETXEN_NIC_GBE) { if ((port < 0) || (port >= NETXEN_NIU_MAX_GBE_PORTS))
The hardware doesn't support controlling pause frames autoneg, so report that back correctly to userspace. Signed-off-by: Flavio Leitner <fbl@redhat.com> --- drivers/net/ethernet/qlogic/netxen/netxen_nic_ethtool.c | 6 ++++++ 1 file changed, 6 insertions(+) I don't have the hardware handy to test this, so I appreciate if someone could do it.