public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] ib/ipoib: allow disabling/enabling TSO through ethtool
@ 2010-03-04 13:16 Or Gerlitz
       [not found] ` <Pine.LNX.4.64.1003041516300.2755-aDiYczhfhVLdX2U7gxhm1tBPR1lH4CV8@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Or Gerlitz @ 2010-03-04 13:16 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linux-rdma

allow disabling/enabling TSO on the fly by ethtool

Signed-off-by: Or Gerlitz <ogerlitz-smomgflXvOZWk0Htik3J/w@public.gmane.org>

---
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c |   19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

Index: linux-2.6.33/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
===================================================================
--- linux-2.6.33.orig/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
+++ linux-2.6.33/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
@@ -49,6 +49,24 @@ static u32 ipoib_get_rx_csum(struct net_
 		!test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
 }

+static int ipoib_set_tso(struct net_device *dev, u32 data)
+{
+	struct ipoib_dev_priv *priv = netdev_priv(dev);
+
+	if (data) {
+		if (!test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags) &&
+			(dev->features & NETIF_F_SG) &&
+				(priv->hca_caps & IB_DEVICE_UD_TSO))
+			dev->features |= NETIF_F_TSO;
+		else {
+			ipoib_warn(priv, "can't set TSO on\n");
+			return -EOPNOTSUPP;
+		}
+	} else
+		dev->features &= ~NETIF_F_TSO;
+	return 0;
+}
+
 static int ipoib_get_coalesce(struct net_device *dev,
 			      struct ethtool_coalesce *coal)
 {
@@ -131,6 +149,7 @@ static void ipoib_get_ethtool_stats(stru
 static const struct ethtool_ops ipoib_ethtool_ops = {
 	.get_drvinfo		= ipoib_get_drvinfo,
 	.get_rx_csum		= ipoib_get_rx_csum,
+	.set_tso		= ipoib_set_tso,
 	.get_coalesce		= ipoib_get_coalesce,
 	.set_coalesce		= ipoib_set_coalesce,
 	.get_flags		= ethtool_op_get_flags,
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] ib/ipoib: allow disabling/enabling TSO through ethtool
       [not found] ` <Pine.LNX.4.64.1003041516300.2755-aDiYczhfhVLdX2U7gxhm1tBPR1lH4CV8@public.gmane.org>
@ 2010-03-04 13:40   ` Eli Cohen
       [not found]     ` <20100304134018.GA17107-8YAHvHwT2UEvbXDkjdHOrw/a8Rv0c6iv@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Eli Cohen @ 2010-03-04 13:40 UTC (permalink / raw)
  To: Or Gerlitz; +Cc: Roland Dreier, linux-rdma

On Thu, Mar 04, 2010 at 03:16:52PM +0200, Or Gerlitz wrote:
> 
> +static int ipoib_set_tso(struct net_device *dev, u32 data)
> +{
> +	struct ipoib_dev_priv *priv = netdev_priv(dev);
> +
> +	if (data) {
> +		if (!test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags) &&
> +			(dev->features & NETIF_F_SG) &&
> +				(priv->hca_caps & IB_DEVICE_UD_TSO))
> +			dev->features |= NETIF_F_TSO;
> +		else {
> +			ipoib_warn(priv, "can't set TSO on\n");
> +			return -EOPNOTSUPP;
> +		}
> +	} else
> +		dev->features &= ~NETIF_F_TSO;
> +	return 0;
> +}
> +

I believe dev->features should be protected by rtnl lock.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] ib/ipoib: allow disabling/enabling TSO through ethtool
       [not found]     ` <20100304134018.GA17107-8YAHvHwT2UEvbXDkjdHOrw/a8Rv0c6iv@public.gmane.org>
@ 2010-03-04 14:42       ` Or Gerlitz
  2010-03-04 15:13       ` Or Gerlitz
  1 sibling, 0 replies; 4+ messages in thread
From: Or Gerlitz @ 2010-03-04 14:42 UTC (permalink / raw)
  To: Eli Cohen; +Cc: Roland Dreier, linux-rdma

Eli Cohen wrote:
> I believe dev->features should be protected by rtnl lock.

okay, will fix, thanks

Or.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] ib/ipoib: allow disabling/enabling TSO through ethtool
       [not found]     ` <20100304134018.GA17107-8YAHvHwT2UEvbXDkjdHOrw/a8Rv0c6iv@public.gmane.org>
  2010-03-04 14:42       ` Or Gerlitz
@ 2010-03-04 15:13       ` Or Gerlitz
  1 sibling, 0 replies; 4+ messages in thread
From: Or Gerlitz @ 2010-03-04 15:13 UTC (permalink / raw)
  To: Eli Cohen; +Cc: Roland Dreier, linux-rdma

Eli Cohen wrote:
> I believe dev->features should be protected by rtnl lock.

NAK.

ethtool issues the SIOCETHTOOL ioctl which goes to net/core/dev.c :: dev_ioctl who in turn
wraps the call to dev_ethtool with rtnl_lock/unlock, see below. I have also verified this in practice, that is rtnl_trylock() always fails if called from ipoib ethtool code

Or.

>         case SIOCETHTOOL:
>                 dev_load(net, ifr.ifr_name);
>                 rtnl_lock();
>                 ret = dev_ethtool(net, &ifr);
>                 rtnl_unlock();
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-03-04 15:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-04 13:16 [PATCH 1/2] ib/ipoib: allow disabling/enabling TSO through ethtool Or Gerlitz
     [not found] ` <Pine.LNX.4.64.1003041516300.2755-aDiYczhfhVLdX2U7gxhm1tBPR1lH4CV8@public.gmane.org>
2010-03-04 13:40   ` Eli Cohen
     [not found]     ` <20100304134018.GA17107-8YAHvHwT2UEvbXDkjdHOrw/a8Rv0c6iv@public.gmane.org>
2010-03-04 14:42       ` Or Gerlitz
2010-03-04 15:13       ` Or Gerlitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox