All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 0/2] Allow NICs to pass Frame Checksum up the stack.
@ 2011-06-17  4:30 greearb
  2011-06-17  4:30 ` [RFC 1/2] net: Support getting/setting RX-FCS in drivers greearb
  2011-06-17  4:30 ` [RFC 2/2] e100: Support receiving Ethernet FCS greearb
  0 siblings, 2 replies; 7+ messages in thread
From: greearb @ 2011-06-17  4:30 UTC (permalink / raw)
  To: netdev; +Cc: Ben Greear

From: Ben Greear <greearb@candelatech.com>

This series provides ethtool support to set and get the rx-checksum
flag, and adds support to the e100 driver.

Assuming this series is acceptable, I would then propose a series of patches
to allow receiving all frames, even ones with bad checksums, etc.

And if that is acceptable, a third series would allow user-space to generate
packets with custom ethernet frame checksums (ie, bad ones if desired).

And finally, more drivers, such as e1000 and hopefully e100e can
be supported.

Ben Greear (2):
  net:  Support getting/setting RX-FCS in drivers.
  e100:  Support receiving Ethernet FCS.

 drivers/net/e100.c      |   39 ++++++++++++++++++++++++++++++++++++---
 include/linux/ethtool.h |    5 +++++
 net/core/ethtool.c      |   38 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 79 insertions(+), 3 deletions(-)

-- 
1.7.3.4


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

* [RFC 1/2] net:  Support getting/setting RX-FCS in drivers.
  2011-06-17  4:30 [RFC 0/2] Allow NICs to pass Frame Checksum up the stack greearb
@ 2011-06-17  4:30 ` greearb
  2011-06-17  7:36   ` Michał Mirosław
  2011-06-17 12:20   ` Ben Hutchings
  2011-06-17  4:30 ` [RFC 2/2] e100: Support receiving Ethernet FCS greearb
  1 sibling, 2 replies; 7+ messages in thread
From: greearb @ 2011-06-17  4:30 UTC (permalink / raw)
  To: netdev; +Cc: Ben Greear

From: Ben Greear <greearb@candelatech.com>

This will allow us to enable/disable having the Ethernet
frame checksum appended to the skb.  Enabling this is
useful when sniffing packets.

In particular, this can be used to test logic that allows
a NIC to receive all frames, even ones with bad checksums.

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 439b173... e5e8747... M	include/linux/ethtool.h
:100644 100644 fd14116... b36bac7... M	net/core/ethtool.c
 include/linux/ethtool.h |    5 +++++
 net/core/ethtool.c      |   38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 439b173..e5e8747 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -955,6 +955,8 @@ struct ethtool_ops {
 	int	(*get_dump_data)(struct net_device *,
 				 struct ethtool_dump *, void *);
 	int	(*set_dump)(struct net_device *, struct ethtool_dump *);
+	int	(*set_save_fcs)(struct net_device *, u32);
+	int	(*get_save_fcs)(struct net_device *, u32 *);
 
 };
 #endif /* __KERNEL__ */
@@ -1029,6 +1031,9 @@ struct ethtool_ops {
 #define ETHTOOL_SET_DUMP	0x0000003e /* Set dump settings */
 #define ETHTOOL_GET_DUMP_FLAG	0x0000003f /* Get dump settings */
 #define ETHTOOL_GET_DUMP_DATA	0x00000040 /* Get dump data */
+#define ETHTOOL_GETRXFCS	0x00000041 /* Get RX Save Frame Checksum */
+#define ETHTOOL_SETRXFCS	0x00000042 /* Set RX Save Frame Checksum */
+
 
 /* compatibility with older code */
 #define SPARC_ETH_GSET		ETHTOOL_GSET
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index fd14116..b36bac7 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -1927,6 +1927,38 @@ out:
 	return ret;
 }
 
+static int ethtool_get_rx_fcs(struct net_device *dev, void __user *useraddr)
+{
+	struct ethtool_value edata;
+	int rv = 0;
+
+	if (!dev->ethtool_ops->get_save_fcs)
+		return -EOPNOTSUPP;
+
+	rv = dev->ethtool_ops->get_save_fcs(dev, &edata.data);
+	if (rv < 0)
+		return rv;
+
+	if (copy_to_user(useraddr, &edata, sizeof(edata)))
+		return -EFAULT;
+	return 0;
+}
+
+
+static int ethtool_set_rx_fcs(struct net_device *dev, void __user *useraddr)
+{
+	struct ethtool_value id;
+
+	if (!dev->ethtool_ops->set_save_fcs)
+		return -EOPNOTSUPP;
+
+	if (copy_from_user(&id, useraddr, sizeof(id)))
+		return -EFAULT;
+
+	return dev->ethtool_ops->set_save_fcs(dev, id.data);
+}
+
+
 /* The main entry point in this file.  Called from net/core/dev.c */
 
 int dev_ethtool(struct net *net, struct ifreq *ifr)
@@ -2152,6 +2184,12 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
 	case ETHTOOL_GET_DUMP_DATA:
 		rc = ethtool_get_dump_data(dev, useraddr);
 		break;
+	case ETHTOOL_SETRXFCS:
+		rc = ethtool_set_rx_fcs(dev, useraddr);
+		break;
+	case ETHTOOL_GETRXFCS:
+		rc = ethtool_get_rx_fcs(dev, useraddr);
+		break;
 	default:
 		rc = -EOPNOTSUPP;
 	}
-- 
1.7.3.4


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

* [RFC 2/2] e100:  Support receiving Ethernet FCS.
  2011-06-17  4:30 [RFC 0/2] Allow NICs to pass Frame Checksum up the stack greearb
  2011-06-17  4:30 ` [RFC 1/2] net: Support getting/setting RX-FCS in drivers greearb
@ 2011-06-17  4:30 ` greearb
  1 sibling, 0 replies; 7+ messages in thread
From: greearb @ 2011-06-17  4:30 UTC (permalink / raw)
  To: netdev; +Cc: Ben Greear

From: Ben Greear <greearb@candelatech.com>

Helps when sniffing packets.

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 e336c79... 80fcadf... M	drivers/net/e100.c
 drivers/net/e100.c |   39 ++++++++++++++++++++++++++++++++++++---
 1 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index e336c79..80fcadf 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -587,6 +587,7 @@ struct nic {
 		multicast_all      = (1 << 2),
 		wol_magic          = (1 << 3),
 		ich_10h_workaround = (1 << 4),
+		save_fcs           = (1 << 5),
 	} flags					____cacheline_aligned;
 
 	enum mac mac;
@@ -1130,6 +1131,9 @@ static void e100_configure(struct nic *nic, struct cb *cb, struct sk_buff *skb)
 		config->promiscuous_mode = 0x1;		/* 1=on, 0=off */
 	}
 
+	if (nic->flags & save_fcs)
+		config->rx_crc_transfer = 0x1;	/* 1=save, 0=discard */
+
 	if (nic->flags & multicast_all)
 		config->multicast_all = 0x1;		/* 1=accept, 0=no */
 
@@ -1917,6 +1921,7 @@ static int e100_rx_indicate(struct nic *nic, struct rx *rx,
 	struct sk_buff *skb = rx->skb;
 	struct rfd *rfd = (struct rfd *)skb->data;
 	u16 rfd_status, actual_size;
+	u16 fcs_pad = 0;
 
 	if (unlikely(work_done && *work_done >= work_to_do))
 		return -EAGAIN;
@@ -1949,9 +1954,11 @@ static int e100_rx_indicate(struct nic *nic, struct rx *rx,
 	}
 
 	/* Get actual data size */
+	if (nic->flags & save_fcs)
+		fcs_pad = 4;
 	actual_size = le16_to_cpu(rfd->actual_size) & 0x3FFF;
-	if (unlikely(actual_size > RFD_BUF_LEN - sizeof(struct rfd)))
-		actual_size = RFD_BUF_LEN - sizeof(struct rfd);
+	if (unlikely(actual_size > RFD_BUF_LEN + fcs_pad - sizeof(struct rfd)))
+		actual_size = RFD_BUF_LEN + fcs_pad - sizeof(struct rfd);
 
 	/* Get data */
 	pci_unmap_single(nic->pdev, rx->dma_addr,
@@ -1978,7 +1985,7 @@ static int e100_rx_indicate(struct nic *nic, struct rx *rx,
 	if (unlikely(!(rfd_status & cb_ok))) {
 		/* Don't indicate if hardware indicates errors */
 		dev_kfree_skb_any(skb);
-	} else if (actual_size > ETH_DATA_LEN + VLAN_ETH_HLEN) {
+	} else if (actual_size > ETH_DATA_LEN + VLAN_ETH_HLEN + fcs_pad) {
 		/* Don't indicate oversized frames */
 		nic->rx_over_length_errors++;
 		dev_kfree_skb_any(skb);
@@ -2370,6 +2377,30 @@ static int e100_set_settings(struct net_device *netdev, struct ethtool_cmd *cmd)
 	return err;
 }
 
+static int e100_set_save_fcs(struct net_device *netdev, u32 data)
+{
+	struct nic *nic = netdev_priv(netdev);
+	if (data)
+		nic->flags |= save_fcs;
+	else
+		nic->flags &= ~save_fcs;
+
+	e100_exec_cb(nic, NULL, e100_configure);
+
+	return 0;
+}
+
+static int e100_get_save_fcs(struct net_device *netdev, u32* data)
+{
+	struct nic *nic = netdev_priv(netdev);
+	if (nic->flags & save_fcs)
+		*data = 1;
+	else
+		*data = 0;
+
+	return 0;
+}
+
 static void e100_get_drvinfo(struct net_device *netdev,
 	struct ethtool_drvinfo *info)
 {
@@ -2689,6 +2720,8 @@ static const struct ethtool_ops e100_ethtool_ops = {
 	.set_phys_id		= e100_set_phys_id,
 	.get_ethtool_stats	= e100_get_ethtool_stats,
 	.get_sset_count		= e100_get_sset_count,
+	.set_save_fcs           = e100_set_save_fcs,
+	.get_save_fcs           = e100_get_save_fcs,
 };
 
 static int e100_do_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
-- 
1.7.3.4


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

* Re: [RFC 1/2] net: Support getting/setting RX-FCS in drivers.
  2011-06-17  4:30 ` [RFC 1/2] net: Support getting/setting RX-FCS in drivers greearb
@ 2011-06-17  7:36   ` Michał Mirosław
  2011-06-17 12:20   ` Ben Hutchings
  1 sibling, 0 replies; 7+ messages in thread
From: Michał Mirosław @ 2011-06-17  7:36 UTC (permalink / raw)
  To: greearb; +Cc: netdev

2011/6/17  <greearb@candelatech.com>:
> From: Ben Greear <greearb@candelatech.com>
>
> This will allow us to enable/disable having the Ethernet
> frame checksum appended to the skb.  Enabling this is
> useful when sniffing packets.
>
> In particular, this can be used to test logic that allows
> a NIC to receive all frames, even ones with bad checksums.

You want to silently run away from extending dev->features field? ;-)

Best Regards,
Michał Mirosław

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

* Re: [RFC 1/2] net:  Support getting/setting RX-FCS in drivers.
  2011-06-17  4:30 ` [RFC 1/2] net: Support getting/setting RX-FCS in drivers greearb
  2011-06-17  7:36   ` Michał Mirosław
@ 2011-06-17 12:20   ` Ben Hutchings
  2011-06-17 15:33     ` Ben Greear
  1 sibling, 1 reply; 7+ messages in thread
From: Ben Hutchings @ 2011-06-17 12:20 UTC (permalink / raw)
  To: greearb; +Cc: netdev

On Thu, 2011-06-16 at 21:30 -0700, greearb@candelatech.com wrote:
> From: Ben Greear <greearb@candelatech.com>
> 
> This will allow us to enable/disable having the Ethernet
> frame checksum appended to the skb.  Enabling this is
> useful when sniffing packets.
> 
> In particular, this can be used to test logic that allows
> a NIC to receive all frames, even ones with bad checksums.
> 
> Signed-off-by: Ben Greear <greearb@candelatech.com>
> ---
> :100644 100644 439b173... e5e8747... M	include/linux/ethtool.h
> :100644 100644 fd14116... b36bac7... M	net/core/ethtool.c
>  include/linux/ethtool.h |    5 +++++
>  net/core/ethtool.c      |   38 ++++++++++++++++++++++++++++++++++++++
>  2 files changed, 43 insertions(+), 0 deletions(-)
> 
> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
> index 439b173..e5e8747 100644
> --- a/include/linux/ethtool.h
> +++ b/include/linux/ethtool.h
> @@ -955,6 +955,8 @@ struct ethtool_ops {
>  	int	(*get_dump_data)(struct net_device *,
>  				 struct ethtool_dump *, void *);
>  	int	(*set_dump)(struct net_device *, struct ethtool_dump *);
> +	int	(*set_save_fcs)(struct net_device *, u32);
> +	int	(*get_save_fcs)(struct net_device *, u32 *);

These need to be described in the kernel-doc.

Why do these function names use 'save_fcs' whereas the command names use
'RXFCS'?

>  };
>  #endif /* __KERNEL__ */
> @@ -1029,6 +1031,9 @@ struct ethtool_ops {
>  #define ETHTOOL_SET_DUMP	0x0000003e /* Set dump settings */
>  #define ETHTOOL_GET_DUMP_FLAG	0x0000003f /* Get dump settings */
>  #define ETHTOOL_GET_DUMP_DATA	0x00000040 /* Get dump data */
> +#define ETHTOOL_GETRXFCS	0x00000041 /* Get RX Save Frame Checksum */
> +#define ETHTOOL_SETRXFCS	0x00000042 /* Set RX Save Frame Checksum */
> +
>  
>  /* compatibility with older code */
>  #define SPARC_ETH_GSET		ETHTOOL_GSET
> diff --git a/net/core/ethtool.c b/net/core/ethtool.c
> index fd14116..b36bac7 100644
> --- a/net/core/ethtool.c
> +++ b/net/core/ethtool.c
> @@ -1927,6 +1927,38 @@ out:
>  	return ret;
>  }
>  
> +static int ethtool_get_rx_fcs(struct net_device *dev, void __user *useraddr)
> +{
> +	struct ethtool_value edata;
> +	int rv = 0;
> +
> +	if (!dev->ethtool_ops->get_save_fcs)
> +		return -EOPNOTSUPP;
> +
> +	rv = dev->ethtool_ops->get_save_fcs(dev, &edata.data);
> +	if (rv < 0)
> +		return rv;
> +
> +	if (copy_to_user(useraddr, &edata, sizeof(edata)))
> +		return -EFAULT;
> +	return 0;
> +}
> +
> +
> +static int ethtool_set_rx_fcs(struct net_device *dev, void __user *useraddr)
> +{
> +	struct ethtool_value id;
> +
> +	if (!dev->ethtool_ops->set_save_fcs)
> +		return -EOPNOTSUPP;
> +
> +	if (copy_from_user(&id, useraddr, sizeof(id)))
> +		return -EFAULT;
> +
> +	return dev->ethtool_ops->set_save_fcs(dev, id.data);
> +}
> +
> +
>  /* The main entry point in this file.  Called from net/core/dev.c */
>  
>  int dev_ethtool(struct net *net, struct ifreq *ifr)
> @@ -2152,6 +2184,12 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
>  	case ETHTOOL_GET_DUMP_DATA:
>  		rc = ethtool_get_dump_data(dev, useraddr);
>  		break;
> +	case ETHTOOL_SETRXFCS:
> +		rc = ethtool_set_rx_fcs(dev, useraddr);
> +		break;
> +	case ETHTOOL_GETRXFCS:
> +		rc = ethtool_get_rx_fcs(dev, useraddr);
> +		break;

You can use ethtool_{get,set}_value() rather than adding new trivial
functions.

And as Michal says, this could reasonably be a feature not an entirely
separate flag.  I'm not sure it's that important to have debugging flags
in features, but I also don't want to have 2 commands per flag...

Ben.

>  	default:
>  		rc = -EOPNOTSUPP;
>  	}

-- 
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


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

* Re: [RFC 1/2] net:  Support getting/setting RX-FCS in drivers.
  2011-06-17 12:20   ` Ben Hutchings
@ 2011-06-17 15:33     ` Ben Greear
  2011-06-17 16:00       ` Ben Hutchings
  0 siblings, 1 reply; 7+ messages in thread
From: Ben Greear @ 2011-06-17 15:33 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: netdev

On 06/17/2011 05:20 AM, Ben Hutchings wrote:
> On Thu, 2011-06-16 at 21:30 -0700, greearb@candelatech.com wrote:
>> From: Ben Greear<greearb@candelatech.com>
>>
>> This will allow us to enable/disable having the Ethernet
>> frame checksum appended to the skb.  Enabling this is
>> useful when sniffing packets.
>>
>> In particular, this can be used to test logic that allows
>> a NIC to receive all frames, even ones with bad checksums.
>>
>> Signed-off-by: Ben Greear<greearb@candelatech.com>
>> ---
>> :100644 100644 439b173... e5e8747... M	include/linux/ethtool.h
>> :100644 100644 fd14116... b36bac7... M	net/core/ethtool.c
>>   include/linux/ethtool.h |    5 +++++
>>   net/core/ethtool.c      |   38 ++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 43 insertions(+), 0 deletions(-)
>>
>> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
>> index 439b173..e5e8747 100644
>> --- a/include/linux/ethtool.h
>> +++ b/include/linux/ethtool.h
>> @@ -955,6 +955,8 @@ struct ethtool_ops {
>>   	int	(*get_dump_data)(struct net_device *,
>>   				 struct ethtool_dump *, void *);
>>   	int	(*set_dump)(struct net_device *, struct ethtool_dump *);
>> +	int	(*set_save_fcs)(struct net_device *, u32);
>> +	int	(*get_save_fcs)(struct net_device *, u32 *);
>
> These need to be described in the kernel-doc.
>
> Why do these function names use 'save_fcs' whereas the command names use
> 'RXFCS'?
>
>>   };
>>   #endif /* __KERNEL__ */
>> @@ -1029,6 +1031,9 @@ struct ethtool_ops {
>>   #define ETHTOOL_SET_DUMP	0x0000003e /* Set dump settings */
>>   #define ETHTOOL_GET_DUMP_FLAG	0x0000003f /* Get dump settings */
>>   #define ETHTOOL_GET_DUMP_DATA	0x00000040 /* Get dump data */
>> +#define ETHTOOL_GETRXFCS	0x00000041 /* Get RX Save Frame Checksum */
>> +#define ETHTOOL_SETRXFCS	0x00000042 /* Set RX Save Frame Checksum */
>> +
>>
>>   /* compatibility with older code */
>>   #define SPARC_ETH_GSET		ETHTOOL_GSET
>> diff --git a/net/core/ethtool.c b/net/core/ethtool.c
>> index fd14116..b36bac7 100644
>> --- a/net/core/ethtool.c
>> +++ b/net/core/ethtool.c
>> @@ -1927,6 +1927,38 @@ out:
>>   	return ret;
>>   }
>>
>> +static int ethtool_get_rx_fcs(struct net_device *dev, void __user *useraddr)
>> +{
>> +	struct ethtool_value edata;
>> +	int rv = 0;
>> +
>> +	if (!dev->ethtool_ops->get_save_fcs)
>> +		return -EOPNOTSUPP;
>> +
>> +	rv = dev->ethtool_ops->get_save_fcs(dev,&edata.data);
>> +	if (rv<  0)
>> +		return rv;
>> +
>> +	if (copy_to_user(useraddr,&edata, sizeof(edata)))
>> +		return -EFAULT;
>> +	return 0;
>> +}
>> +
>> +
>> +static int ethtool_set_rx_fcs(struct net_device *dev, void __user *useraddr)
>> +{
>> +	struct ethtool_value id;
>> +
>> +	if (!dev->ethtool_ops->set_save_fcs)
>> +		return -EOPNOTSUPP;
>> +
>> +	if (copy_from_user(&id, useraddr, sizeof(id)))
>> +		return -EFAULT;
>> +
>> +	return dev->ethtool_ops->set_save_fcs(dev, id.data);
>> +}
>> +
>> +
>>   /* The main entry point in this file.  Called from net/core/dev.c */
>>
>>   int dev_ethtool(struct net *net, struct ifreq *ifr)
>> @@ -2152,6 +2184,12 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
>>   	case ETHTOOL_GET_DUMP_DATA:
>>   		rc = ethtool_get_dump_data(dev, useraddr);
>>   		break;
>> +	case ETHTOOL_SETRXFCS:
>> +		rc = ethtool_set_rx_fcs(dev, useraddr);
>> +		break;
>> +	case ETHTOOL_GETRXFCS:
>> +		rc = ethtool_get_rx_fcs(dev, useraddr);
>> +		break;
>
> You can use ethtool_{get,set}_value() rather than adding new trivial
> functions.

I'll look at that.

>
> And as Michal says, this could reasonably be a feature not an entirely
> separate flag.  I'm not sure it's that important to have debugging flags
> in features, but I also don't want to have 2 commands per flag...

I'm not sure it really counts as a feature, and I've no desire to tangle
with the effort to extend features beyond 32 bits.  Maybe we could have a new
ethtool command that took a struct with two args, so we can "set flag-foo val"
instead of 'enable-flag-foo' and 'disable-flag-foo'?

That should be only one additional method for the drivers to implement, and
can be used for the other patches I have planned as well.

Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

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

* Re: [RFC 1/2] net:  Support getting/setting RX-FCS in drivers.
  2011-06-17 15:33     ` Ben Greear
@ 2011-06-17 16:00       ` Ben Hutchings
  0 siblings, 0 replies; 7+ messages in thread
From: Ben Hutchings @ 2011-06-17 16:00 UTC (permalink / raw)
  To: Ben Greear; +Cc: netdev

On Fri, 2011-06-17 at 08:33 -0700, Ben Greear wrote:
> On 06/17/2011 05:20 AM, Ben Hutchings wrote:
> > On Thu, 2011-06-16 at 21:30 -0700, greearb@candelatech.com wrote:
> >> From: Ben Greear<greearb@candelatech.com>
> >>
> >> This will allow us to enable/disable having the Ethernet
> >> frame checksum appended to the skb.  Enabling this is
> >> useful when sniffing packets.
> >>
> >> In particular, this can be used to test logic that allows
> >> a NIC to receive all frames, even ones with bad checksums.
[...]
> > And as Michal says, this could reasonably be a feature not an entirely
> > separate flag.  I'm not sure it's that important to have debugging flags
> > in features, but I also don't want to have 2 commands per flag...
> 
> I'm not sure it really counts as a feature, and I've no desire to tangle
> with the effort to extend features beyond 32 bits.

There are several people wanting to add new flags, so between you I'm
sure you can manage it.

> Maybe we could have a new
> ethtool command that took a struct with two args, so we can "set flag-foo val"
> instead of 'enable-flag-foo' and 'disable-flag-foo'?
> 
> That should be only one additional method for the drivers to implement, and
> can be used for the other patches I have planned as well.

Whereas implementing an extra feature toggle now requires zero extra
methods.

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


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

end of thread, other threads:[~2011-06-17 16:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-17  4:30 [RFC 0/2] Allow NICs to pass Frame Checksum up the stack greearb
2011-06-17  4:30 ` [RFC 1/2] net: Support getting/setting RX-FCS in drivers greearb
2011-06-17  7:36   ` Michał Mirosław
2011-06-17 12:20   ` Ben Hutchings
2011-06-17 15:33     ` Ben Greear
2011-06-17 16:00       ` Ben Hutchings
2011-06-17  4:30 ` [RFC 2/2] e100: Support receiving Ethernet FCS greearb

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.