Eli Cohen wrote:
Add checksum offload support to ipoib

Can you clarify the relation between this patch to "[PATCHv3] IB/ipoib: HW checksum support" patch posted later by Michael? for example, I see that you patch makes IPoIB to publish the NETIF_F_IP_CSUM capability and Michael's one publishes NETIF_F_HW_CSUM, etc

Index: ofa_1_3_dev_kernel/drivers/infiniband/ulp/ipoib/ipoib.h
===================================================================
--- ofa_1_3_dev_kernel.orig/drivers/infiniband/ulp/ipoib/ipoib.h        
2007-09-24 12:09:21.000000000 +0200
+++ ofa_1_3_dev_kernel/drivers/infiniband/ulp/ipoib/ipoib.h     2007-09-24 
12:49:00.000000000 +0200
@@ -86,6 +86,7 @@ enum {
        IPOIB_MCAST_STARTED       = 8,
        IPOIB_FLAG_NETIF_STOPPED  = 9,
        IPOIB_FLAG_ADMIN_CM       = 10,
+       IPOIB_FLAG_RX_CSUM        = 11,
IPOIB_MAX_BACKOFF_SECONDS = 16, Index: ofa_1_3_dev_kernel/drivers/infiniband/ulp/ipoib/ipoib_cm.c
===================================================================
--- ofa_1_3_dev_kernel.orig/drivers/infiniband/ulp/ipoib/ipoib_cm.c     
2007-09-24 12:23:26.000000000 +0200
+++ ofa_1_3_dev_kernel/drivers/infiniband/ulp/ipoib/ipoib_cm.c  2007-09-24 
13:05:21.000000000 +0200
@@ -1258,6 +1258,13 @@ static ssize_t set_mode(struct device *d
                set_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
                ipoib_warn(priv, "enabling connected mode "
                           "will cause multicast packet drops\n");
+
+               /* clear ipv6 flag too */
+               dev->features &= ~NETIF_F_IP_CSUM;
+
+               priv->tx_wr.send_flags &=
+                       ~(IB_SEND_UDP_TCP_CSUM | IB_SEND_IP_CSUM);
+
                ipoib_flush_paths(dev);
                return count;
        }
@@ -1266,6 +1273,10 @@ static ssize_t set_mode(struct device *d
                clear_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
                dev->mtu = min(priv->mcast_mtu, dev->mtu);
                ipoib_flush_paths(dev);
+
+               if (priv->ca->flags & IB_DEVICE_IP_CSUM)
+                       dev->features |= NETIF_F_IP_CSUM; /* ipv6 too */

didn't you want to use NETIF_F_HW_CSUM here?

Index: ofa_1_3_dev_kernel/drivers/infiniband/ulp/ipoib/ipoib_main.c
===================================================================
--- ofa_1_3_dev_kernel.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c   
2007-09-24 12:23:00.000000000 +0200
+++ ofa_1_3_dev_kernel/drivers/infiniband/ulp/ipoib/ipoib_main.c        
2007-09-24 13:04:52.000000000 +0200
@@ -1109,6 +1109,29 @@ int ipoib_add_pkey_attr(struct net_devic
        return device_create_file(&dev->dev, &dev_attr_pkey);
 }
+static void set_tx_csum(struct net_device *dev)
+{
+       struct ipoib_dev_priv *priv = netdev_priv(dev);
+
+       if (test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags))
+               return;
+
+       if (!(priv->ca->flags & IB_DEVICE_IP_CSUM))
+               return;
+
+       dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM; /* turn on ipv6 too */
can you explain why this line belongs specifically to set_tx_csum() ?

+}
+
+static void set_rx_csum(struct net_device *dev)
+{
+       struct ipoib_dev_priv *priv = netdev_priv(dev);
+
+       if (!(priv->ca->flags & IB_DEVICE_IP_CSUM))
+               return;
+
+       set_bit(IPOIB_FLAG_RX_CSUM, &priv->flags);
+}
+
 static struct net_device *ipoib_add_port(const char *format,
                                         struct ib_device *hca, u8 port)
 {
@@ -1165,6 +1188,9 @@ static struct net_device *ipoib_add_port
                goto event_failed;
        }
+ set_tx_csum(priv->dev);
+       set_rx_csum(priv->dev);

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to