netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] [NET] ethtool: Add LRO support
@ 2007-07-31 20:21 Auke Kok
  0 siblings, 0 replies; 8+ messages in thread
From: Auke Kok @ 2007-07-31 20:21 UTC (permalink / raw)
  To: netdev; +Cc: jgarzik, davem

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---

 include/linux/ethtool.h   |    8 +++++++
 include/linux/netdevice.h |    1 +
 net/core/ethtool.c        |   54 ++++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 62 insertions(+), 1 deletions(-)

diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 3a63224..ab9d688 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -274,6 +274,8 @@ int ethtool_op_get_perm_addr(struct net_device *dev,
 			     struct ethtool_perm_addr *addr, u8 *data);
 u32 ethtool_op_get_ufo(struct net_device *dev);
 int ethtool_op_set_ufo(struct net_device *dev, u32 data);
+u32 ethtool_op_get_lro(struct net_device *dev);
+int ethtool_op_set_lro(struct net_device *dev, u32 data);
 
 /**
  * &ethtool_ops - Alter and report network device settings
@@ -305,6 +307,8 @@ int ethtool_op_set_ufo(struct net_device *dev, u32 data);
  * set_tso: Turn TCP segmentation offload on or off
  * get_ufo: Report whether UDP fragmentation offload is enabled
  * set_ufo: Turn UDP fragmentation offload on or off
+ * get_lro: Report whether large receive offload is enabled
+ * set_lro: Turn large receive offload on or off
  * self_test: Run specified self-tests
  * get_strings: Return a set of strings that describe the requested objects 
  * phys_id: Identify the device
@@ -373,6 +377,8 @@ struct ethtool_ops {
 	void	(*complete)(struct net_device *);
 	u32     (*get_ufo)(struct net_device *);
 	int     (*set_ufo)(struct net_device *, u32);
+	u32     (*get_lro)(struct net_device *);
+	int     (*set_lro)(struct net_device *, u32);
 };
 #endif /* __KERNEL__ */
 
@@ -414,6 +420,8 @@ struct ethtool_ops {
 #define ETHTOOL_SUFO		0x00000022 /* Set UFO enable (ethtool_value) */
 #define ETHTOOL_GGSO		0x00000023 /* Get GSO enable (ethtool_value) */
 #define ETHTOOL_SGSO		0x00000024 /* Set GSO enable (ethtool_value) */
+#define ETHTOOL_GLRO		0x00000025 /* Get LRO enable (ethtool_value) */
+#define ETHTOOL_SLRO		0x00000026 /* Set LRO enable (ethtool_value) */
 
 /* compatibility with older code */
 #define SPARC_ETH_GSET		ETHTOOL_GSET
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 4a616d7..4863ffc 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -341,6 +341,7 @@ struct net_device
 #define NETIF_F_GSO		2048	/* Enable software GSO. */
 #define NETIF_F_LLTX		4096	/* LockLess TX */
 #define NETIF_F_MULTI_QUEUE	16384	/* Has multiple TX/RX queues */
+#define NETIF_F_LRO		32768	/* Has large receive offload */
 
 	/* Segmentation offload features */
 #define NETIF_F_GSO_SHIFT	16
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 0b531e9..23ccaa1 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -104,7 +104,6 @@ int ethtool_op_get_perm_addr(struct net_device *dev, struct ethtool_perm_addr *a
 	return 0;
 }
 
-
 u32 ethtool_op_get_ufo(struct net_device *dev)
 {
 	return (dev->features & NETIF_F_UFO) != 0;
@@ -119,6 +118,20 @@ int ethtool_op_set_ufo(struct net_device *dev, u32 data)
 	return 0;
 }
 
+u32 ethtool_op_get_lro(struct net_device *dev)
+{
+	return (dev->features & NETIF_F_LRO) != 0;
+}
+
+int ethtool_op_set_lro(struct net_device *dev, u32 data)
+{
+	if (data)
+		dev->features |= NETIF_F_LRO;
+	else
+		dev->features &= ~NETIF_F_LRO;
+	return 0;
+}
+
 /* Handlers for each ethtool command */
 
 static int ethtool_get_settings(struct net_device *dev, void __user *useraddr)
@@ -514,6 +527,13 @@ static int __ethtool_set_sg(struct net_device *dev, u32 data)
 		if (err)
 			return err;
 	}
+
+	if (!data && dev->ethtool_ops->set_lro) {
+		err = dev->ethtool_ops->set_lro(dev, 0);
+		if (err)
+			return err;
+	}
+
 	return dev->ethtool_ops->set_sg(dev, data);
 }
 
@@ -625,6 +645,29 @@ static int ethtool_set_ufo(struct net_device *dev, char __user *useraddr)
 	return dev->ethtool_ops->set_ufo(dev, edata.data);
 }
 
+static int ethtool_get_lro(struct net_device *dev, char __user *useraddr)
+{
+	struct ethtool_value edata = { ETHTOOL_GLRO };
+
+	edata.data = dev->features & NETIF_F_LRO;
+	if (copy_to_user(useraddr, &edata, sizeof(edata)))
+		 return -EFAULT;
+	return 0;
+}
+
+static int ethtool_set_lro(struct net_device *dev, char __user *useraddr)
+{
+	struct ethtool_value edata;
+
+	if (copy_from_user(&edata, useraddr, sizeof(edata)))
+		return -EFAULT;
+	if (edata.data)
+		dev->features |= NETIF_F_LRO;
+	else
+		dev->features &= ~NETIF_F_LRO;
+	return 0;
+}
+
 static int ethtool_get_gso(struct net_device *dev, char __user *useraddr)
 {
 	struct ethtool_value edata = { ETHTOOL_GGSO };
@@ -840,6 +883,7 @@ int dev_ethtool(struct ifreq *ifr)
 	case ETHTOOL_GTSO:
 	case ETHTOOL_GPERMADDR:
 	case ETHTOOL_GUFO:
+	case ETHTOOL_GLRO:
 	case ETHTOOL_GGSO:
 		break;
 	default:
@@ -953,6 +997,12 @@ int dev_ethtool(struct ifreq *ifr)
 	case ETHTOOL_SUFO:
 		rc = ethtool_set_ufo(dev, useraddr);
 		break;
+	case ETHTOOL_GLRO:
+		rc = ethtool_get_lro(dev, useraddr);
+		break;
+	case ETHTOOL_SLRO:
+		rc = ethtool_set_lro(dev, useraddr);
+		break;
 	case ETHTOOL_GGSO:
 		rc = ethtool_get_gso(dev, useraddr);
 		break;
@@ -994,3 +1044,5 @@ EXPORT_SYMBOL(ethtool_op_set_tx_hw_csum);
 EXPORT_SYMBOL(ethtool_op_set_tx_ipv6_csum);
 EXPORT_SYMBOL(ethtool_op_set_ufo);
 EXPORT_SYMBOL(ethtool_op_get_ufo);
+EXPORT_SYMBOL(ethtool_op_set_lro);
+EXPORT_SYMBOL(ethtool_op_get_lro);

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

* [PATCH] [NET] ethtool: Add LRO support
@ 2007-08-09 16:41 Auke Kok
  2007-08-09 22:00 ` David Miller
  2007-08-10  8:42 ` Jeff Garzik
  0 siblings, 2 replies; 8+ messages in thread
From: Auke Kok @ 2007-08-09 16:41 UTC (permalink / raw)
  To: davem, jeff; +Cc: netdev, ossthema

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---

 include/linux/ethtool.h   |    8 +++++++
 include/linux/netdevice.h |    1 +
 net/core/ethtool.c        |   53 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 23ccea8..a97248e 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -272,6 +272,8 @@ u32 ethtool_op_get_tso(struct net_device *dev);
 int ethtool_op_set_tso(struct net_device *dev, u32 data);
 u32 ethtool_op_get_ufo(struct net_device *dev);
 int ethtool_op_set_ufo(struct net_device *dev, u32 data);
+u32 ethtool_op_get_lro(struct net_device *dev);
+int ethtool_op_set_lro(struct net_device *dev, u32 data);
 
 /**
  * &ethtool_ops - Alter and report network device settings
@@ -303,6 +305,8 @@ int ethtool_op_set_ufo(struct net_device *dev, u32 data);
  * set_tso: Turn TCP segmentation offload on or off
  * get_ufo: Report whether UDP fragmentation offload is enabled
  * set_ufo: Turn UDP fragmentation offload on or off
+ * get_lro: Report whether large receive offload is enabled
+ * set_lro: Turn large receive offload on or off
  * self_test: Run specified self-tests
  * get_strings: Return a set of strings that describe the requested objects 
  * phys_id: Identify the device
@@ -369,6 +373,8 @@ struct ethtool_ops {
 	void	(*complete)(struct net_device *);
 	u32     (*get_ufo)(struct net_device *);
 	int     (*set_ufo)(struct net_device *, u32);
+	u32     (*get_lro)(struct net_device *);
+	int     (*set_lro)(struct net_device *, u32);
 };
 #endif /* __KERNEL__ */
 
@@ -410,6 +416,8 @@ struct ethtool_ops {
 #define ETHTOOL_SUFO		0x00000022 /* Set UFO enable (ethtool_value) */
 #define ETHTOOL_GGSO		0x00000023 /* Get GSO enable (ethtool_value) */
 #define ETHTOOL_SGSO		0x00000024 /* Set GSO enable (ethtool_value) */
+#define ETHTOOL_GLRO		0x00000025 /* Get LRO enable (ethtool_value) */
+#define ETHTOOL_SLRO		0x00000026 /* Set LRO enable (ethtool_value) */
 
 /* compatibility with older code */
 #define SPARC_ETH_GSET		ETHTOOL_GSET
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 4a616d7..4863ffc 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -341,6 +341,7 @@ struct net_device
 #define NETIF_F_GSO		2048	/* Enable software GSO. */
 #define NETIF_F_LLTX		4096	/* LockLess TX */
 #define NETIF_F_MULTI_QUEUE	16384	/* Has multiple TX/RX queues */
+#define NETIF_F_LRO		32768	/* Has large receive offload */
 
 	/* Segmentation offload features */
 #define NETIF_F_GSO_SHIFT	16
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 2ab0a60..65f751b 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -109,6 +109,20 @@ int ethtool_op_set_ufo(struct net_device *dev, u32 data)
 	return 0;
 }
 
+u32 ethtool_op_get_lro(struct net_device *dev)
+{
+	return (dev->features & NETIF_F_LRO) != 0;
+}
+
+int ethtool_op_set_lro(struct net_device *dev, u32 data)
+{
+	if (data)
+		dev->features |= NETIF_F_LRO;
+	else
+		dev->features &= ~NETIF_F_LRO;
+	return 0;
+}
+
 /* Handlers for each ethtool command */
 
 static int ethtool_get_settings(struct net_device *dev, void __user *useraddr)
@@ -504,6 +518,13 @@ static int __ethtool_set_sg(struct net_device *dev, u32 data)
 		if (err)
 			return err;
 	}
+
+	if (!data && dev->ethtool_ops->set_lro) {
+		err = dev->ethtool_ops->set_lro(dev, 0);
+		if (err)
+			return err;
+	}
+
 	return dev->ethtool_ops->set_sg(dev, data);
 }
 
@@ -615,6 +636,29 @@ static int ethtool_set_ufo(struct net_device *dev, char __user *useraddr)
 	return dev->ethtool_ops->set_ufo(dev, edata.data);
 }
 
+static int ethtool_get_lro(struct net_device *dev, char __user *useraddr)
+{
+	struct ethtool_value edata = { ETHTOOL_GLRO };
+
+	edata.data = dev->features & NETIF_F_LRO;
+	if (copy_to_user(useraddr, &edata, sizeof(edata)))
+		 return -EFAULT;
+	return 0;
+}
+
+static int ethtool_set_lro(struct net_device *dev, char __user *useraddr)
+{
+	struct ethtool_value edata;
+
+	if (copy_from_user(&edata, useraddr, sizeof(edata)))
+		return -EFAULT;
+	if (edata.data)
+		dev->features |= NETIF_F_LRO;
+	else
+		dev->features &= ~NETIF_F_LRO;
+	return 0;
+}
+
 static int ethtool_get_gso(struct net_device *dev, char __user *useraddr)
 {
 	struct ethtool_value edata = { ETHTOOL_GGSO };
@@ -816,6 +860,7 @@ int dev_ethtool(struct ifreq *ifr)
 	case ETHTOOL_GTSO:
 	case ETHTOOL_GPERMADDR:
 	case ETHTOOL_GUFO:
+	case ETHTOOL_GLRO:
 	case ETHTOOL_GGSO:
 		break;
 	default:
@@ -929,6 +974,12 @@ int dev_ethtool(struct ifreq *ifr)
 	case ETHTOOL_SUFO:
 		rc = ethtool_set_ufo(dev, useraddr);
 		break;
+	case ETHTOOL_GLRO:
+		rc = ethtool_get_lro(dev, useraddr);
+		break;
+	case ETHTOOL_SLRO:
+		rc = ethtool_set_lro(dev, useraddr);
+		break;
 	case ETHTOOL_GGSO:
 		rc = ethtool_get_gso(dev, useraddr);
 		break;
@@ -960,3 +1011,5 @@ EXPORT_SYMBOL(ethtool_op_set_tx_hw_csum);
 EXPORT_SYMBOL(ethtool_op_set_tx_ipv6_csum);
 EXPORT_SYMBOL(ethtool_op_set_ufo);
 EXPORT_SYMBOL(ethtool_op_get_ufo);
+EXPORT_SYMBOL(ethtool_op_set_lro);
+EXPORT_SYMBOL(ethtool_op_get_lro);

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

* Re: [PATCH] [NET] ethtool: Add LRO support
  2007-08-09 16:41 [PATCH] [NET] ethtool: Add LRO support Auke Kok
@ 2007-08-09 22:00 ` David Miller
  2007-08-10  7:47   ` Jan-Bernd Themann
  2007-08-10  8:42 ` Jeff Garzik
  1 sibling, 1 reply; 8+ messages in thread
From: David Miller @ 2007-08-09 22:00 UTC (permalink / raw)
  To: auke-jan.h.kok; +Cc: jeff, netdev, ossthema

From: Auke Kok <auke-jan.h.kok@intel.com>
Date: Thu, 09 Aug 2007 09:41:17 -0700

> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>

I think this is definitely how we should handle LRO
configuration instead of the ad-hoc module parameters
current LRO drivers use now.

I'll put this infrastructure into net-2.6.24, it would
be nice if the EHEA and myri10g folks submitted conversions.

Thanks.

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

* Re: [PATCH] [NET] ethtool: Add LRO support
  2007-08-09 22:00 ` David Miller
@ 2007-08-10  7:47   ` Jan-Bernd Themann
  0 siblings, 0 replies; 8+ messages in thread
From: Jan-Bernd Themann @ 2007-08-10  7:47 UTC (permalink / raw)
  To: David Miller; +Cc: auke-jan.h.kok, jeff, netdev

Hi

On Friday 10 August 2007 00:00, David Miller wrote:
> From: Auke Kok <auke-jan.h.kok@intel.com>
> Date: Thu, 09 Aug 2007 09:41:17 -0700
> 
> > Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
> 
> I think this is definitely how we should handle LRO
> configuration instead of the ad-hoc module parameters
> current LRO drivers use now.
> 
> I'll put this infrastructure into net-2.6.24, it would
> be nice if the EHEA and myri10g folks submitted conversions.
> 

yes, I'll submit a patch soon


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

* Re: [PATCH] [NET] ethtool: Add LRO support
  2007-08-09 16:41 [PATCH] [NET] ethtool: Add LRO support Auke Kok
  2007-08-09 22:00 ` David Miller
@ 2007-08-10  8:42 ` Jeff Garzik
  2007-08-10  9:28   ` David Miller
  2007-08-10 16:24   ` Kok, Auke
  1 sibling, 2 replies; 8+ messages in thread
From: Jeff Garzik @ 2007-08-10  8:42 UTC (permalink / raw)
  To: Auke Kok, davem; +Cc: netdev, ossthema

Auke Kok wrote:
> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
> ---
> 
>  include/linux/ethtool.h   |    8 +++++++
>  include/linux/netdevice.h |    1 +
>  net/core/ethtool.c        |   53 +++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 62 insertions(+), 0 deletions(-)
> 
> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
> index 23ccea8..a97248e 100644
> --- a/include/linux/ethtool.h
> +++ b/include/linux/ethtool.h
> @@ -272,6 +272,8 @@ u32 ethtool_op_get_tso(struct net_device *dev);
>  int ethtool_op_set_tso(struct net_device *dev, u32 data);
>  u32 ethtool_op_get_ufo(struct net_device *dev);
>  int ethtool_op_set_ufo(struct net_device *dev, u32 data);
> +u32 ethtool_op_get_lro(struct net_device *dev);
> +int ethtool_op_set_lro(struct net_device *dev, u32 data);

I'm thinking we don't need to keep adding two function pointers for each 
boolean choice.

I propose adding two operations:

get-flags:	return 32-bit (even on 64-bit platforms) flags bitmap
set-flags:	set 32-bit flags bitmap

The 32 bits shall be divided as follows:

bits 0-23:	ETHTOOL_FLAG_xxx defined in linux/ethtool.h
bits 24-31:	driver-specific boolean flags

The driver-specific flags are first enumerated by userland via an 
ETHTOOL_GSTRINGS call, using new string set ETH_SS_FLAGS.  The first 
string returned names the first driver-private flag (bit 24).  This also 
indicates that driver-private bit 24 is a valid flag for this driver and 
network interface.

The overall goal is to replace get-LRO/set-LRO operations with the 
setting/clearing of ETH_FLAG_LRO, and as well, provide a more-scalable 
ethtool interface.

I'll code this up, along with the associated generic helpers 
(net/core/ethtool.c), if there are no objections.

	Jeff




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

* Re: [PATCH] [NET] ethtool: Add LRO support
  2007-08-10  8:42 ` Jeff Garzik
@ 2007-08-10  9:28   ` David Miller
  2007-08-10  9:32     ` Jeff Garzik
  2007-08-10 16:24   ` Kok, Auke
  1 sibling, 1 reply; 8+ messages in thread
From: David Miller @ 2007-08-10  9:28 UTC (permalink / raw)
  To: jeff; +Cc: auke-jan.h.kok, netdev, ossthema

From: Jeff Garzik <jeff@garzik.org>
Date: Fri, 10 Aug 2007 04:42:44 -0400

> I'll code this up, along with the associated generic helpers 
> (net/core/ethtool.c), if there are no objections.

No objections except I would give the driver private it's
own set of flags.

Otherwise the number of bits you choose is arbitrary and
the potential for mistakes is definitely there is you mix
the two uses.

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

* Re: [PATCH] [NET] ethtool: Add LRO support
  2007-08-10  9:28   ` David Miller
@ 2007-08-10  9:32     ` Jeff Garzik
  0 siblings, 0 replies; 8+ messages in thread
From: Jeff Garzik @ 2007-08-10  9:32 UTC (permalink / raw)
  To: David Miller; +Cc: auke-jan.h.kok, netdev, ossthema

David Miller wrote:
> From: Jeff Garzik <jeff@garzik.org>
> Date: Fri, 10 Aug 2007 04:42:44 -0400
> 
>> I'll code this up, along with the associated generic helpers 
>> (net/core/ethtool.c), if there are no objections.
> 
> No objections except I would give the driver private it's
> own set of flags.

Great minds think alike, I started leaning towards that as I coded up 
ETHTOOL_[GS]FLAGS...

	Jeff




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

* Re: [PATCH] [NET] ethtool: Add LRO support
  2007-08-10  8:42 ` Jeff Garzik
  2007-08-10  9:28   ` David Miller
@ 2007-08-10 16:24   ` Kok, Auke
  1 sibling, 0 replies; 8+ messages in thread
From: Kok, Auke @ 2007-08-10 16:24 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: davem, netdev, ossthema

Jeff Garzik wrote:
> Auke Kok wrote:
>> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
>> ---
>>
>>  include/linux/ethtool.h   |    8 +++++++
>>  include/linux/netdevice.h |    1 +
>>  net/core/ethtool.c        |   53 +++++++++++++++++++++++++++++++++++++++++++++
>>  3 files changed, 62 insertions(+), 0 deletions(-)
>>
>> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
>> index 23ccea8..a97248e 100644
>> --- a/include/linux/ethtool.h
>> +++ b/include/linux/ethtool.h
>> @@ -272,6 +272,8 @@ u32 ethtool_op_get_tso(struct net_device *dev);
>>  int ethtool_op_set_tso(struct net_device *dev, u32 data);
>>  u32 ethtool_op_get_ufo(struct net_device *dev);
>>  int ethtool_op_set_ufo(struct net_device *dev, u32 data);
>> +u32 ethtool_op_get_lro(struct net_device *dev);
>> +int ethtool_op_set_lro(struct net_device *dev, u32 data);
> 
> I'm thinking we don't need to keep adding two function pointers for each 
> boolean choice.
> 
> I propose adding two operations:
> 
> get-flags:	return 32-bit (even on 64-bit platforms) flags bitmap
> set-flags:	set 32-bit flags bitmap
> 
> The 32 bits shall be divided as follows:
> 
> bits 0-23:	ETHTOOL_FLAG_xxx defined in linux/ethtool.h
> bits 24-31:	driver-specific boolean flags
> 
> The driver-specific flags are first enumerated by userland via an 
> ETHTOOL_GSTRINGS call, using new string set ETH_SS_FLAGS.  The first 
> string returned names the first driver-private flag (bit 24).  This also 
> indicates that driver-private bit 24 is a valid flag for this driver and 
> network interface.
> 
> The overall goal is to replace get-LRO/set-LRO operations with the 
> setting/clearing of ETH_FLAG_LRO, and as well, provide a more-scalable 
> ethtool interface.
> 
> I'll code this up, along with the associated generic helpers 
> (net/core/ethtool.c), if there are no objections.

absolutely not. While going over the flags in netdevice.h I can already see that 
the room for more flags is rapidly becoming smaller. Unfortunately we're stuck 
with the current flags for compatiblity :)

The above idea sounds good to me and should give that room.

Auke

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

end of thread, other threads:[~2007-08-10 16:24 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-09 16:41 [PATCH] [NET] ethtool: Add LRO support Auke Kok
2007-08-09 22:00 ` David Miller
2007-08-10  7:47   ` Jan-Bernd Themann
2007-08-10  8:42 ` Jeff Garzik
2007-08-10  9:28   ` David Miller
2007-08-10  9:32     ` Jeff Garzik
2007-08-10 16:24   ` Kok, Auke
  -- strict thread matches above, loose matches on Subject: below --
2007-07-31 20:21 Auke Kok

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).