Thread (12 messages) 12 messages, 4 authors, 2010-02-27

Re: [net-next-2.6 PATCH] ethtool: Add n-tuple string length to drvinfo and return it

From: Jeff Garzik <hidden>
Date: 2010-02-27 06:31:12

On 02/26/2010 06:49 PM, Peter P Waskiewicz Jr wrote:
On Fri, 2010-02-26 at 05:56 -0800, Jeff Garzik wrote:
quoted
On 02/26/2010 06:54 AM, Jeff Kirsher wrote:
quoted
From: Peter Waskiewicz<redacted>

The drvinfo struct should include the number of strings that
get_rx_ntuple will return.  It will be variable if an underlying
driver implements its own get_rx_ntuple routine, so userspace
needs to know how much data is coming.

Signed-off-by: Peter P Waskiewicz Jr<redacted>
Signed-off-by: Jeff Kirsher<redacted>
---

   include/linux/ethtool.h |    1 +
   net/core/ethtool.c      |    3 +++
   2 files changed, 4 insertions(+), 0 deletions(-)
(resending reply, standard patch-sending box is having trouble sending
to vger)


As noted in the other email, your patch breaks ABI.  The proper path is
to decrease the size of reserved struct member, and NOT shift the offset
of other members.



However, perhaps consider the following patch for returning n-tuple
count, for four reasons:

1) space in ethtool_drvinfo is limited

2) the patch below permits trivial string set addition, without
     ABI changes beyond adding a new ETH_SS_xxx constant.

3) the patch below permits direct access to ops->get_sset_count(),
     rather than implicit access via ethtool_drvinfo

4) ethtool_drvinfo interface does not permit indication of
     ops->get_sset_count() failure, versus returning zero value.  The
     patch below does so, via output sset_mask.

WARNING: this patch is compile-tested only.

NOTE: I added a cosmetic fix to ETHTOOL_[GS]RXNTUPLE constants, making
their indentation consistent with the rest of the list of constants.

Signed-off-by: Jeff Garzik<redacted>
I'm updating your patch since I found an issue.  The mask is passing in
the ETH_SS_* flags, but then they're treated as bits, not enumerated
flags.  I'm thinking of the best non-intrusive way to correct it.
As Ben noted, you cannot change those enumerated values, as they are 
already part of the ABI.

For ETHTOOL_GSSET_INFO, you initialize the sset_mask like this:

	info.sset_mask = (1ULL << ETH_SS_NTUPLE_FILTERS);

A multiple initialization would look like this:

	info.sset_mask = (1ULL << ETH_SS_NTUPLE_FILTERS) |
			(1ULL << ETH_SS_STATS) |
			(1ULL << ETH_SS_PRIV_FLAGS);

Do you still see an issue in my suggested code, now that sset_mask 
confusion is cleared up?

Regards,

	Jeff


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help