Thread (23 messages) 23 messages, 4 authors, 2011-05-04

Re: [ethtool PATCH 4/4] v5 Add RX packet classification interface

From: Alexander Duyck <hidden>
Date: 2011-05-04 03:10:14

On Tue, May 3, 2011 at 6:35 PM, Dimitris Michailidis [off-list ref] wrote:
On 05/03/2011 05:29 PM, Alexander Duyck wrote:
quoted
The thing to keep in mind is that the index doesn't have to be a hardware
index.  In ixgbe we have a field in the hardware which is meant to just be a
unique software index and that is what I am using as the location field for
our filters.  All the location information in the rules really provides is a
logical way of tracking rules.  It doesn't necessarily have to represent the
physical location of the rule in hardware.
I appreciate the intent but there are couple problems.
a) ethtool.h documents location as

 * @location: Index of filter in hardware table

i.e., physical location.  But we could change that.
I will probably want to change that.  The fact is as I recall even niu
was using a hash in addition to the location index.  As such it isn't
really the true location in the hardware since there is a second piece
to determining the actual location in hardware.
b) for TCAMs physical location is important and if ethtool offers to provide
only a logical index and massages the original user input to do so where
will a driver get the physical location it ultimately needs?  For a device
with physical indices a multiple of 4 the logical index ethtool picks will
very frequently be illegal as physical location.  E.g., if location 1 is
available ethtool will keep selecting it and the driver will need to deal
with these requests without the benefit of knowing what the user really
asked for.

Another problem with ethtool selecting locations is it assumes it's the sole
allocator (I think there's a comment in the code pointing this out).  But
this isn't a valid assumption, e.g., HW RFS comes to mind as another
allocator.
The other thing to keep in mind is that this doesn't preclude the
option of adding an ethtool command at some point in the future for
handling the determination of filter location.  The fact is all that
would need to be done is to add an extra ioctl call to determine the
location based on the filter and if that returns op not supported we
fall back to the current rule manager.

The way I have things setup now provides a good foundation in
user-space for managing the rules.  I fully admit it doesn't fit all
solutions, and I welcome follow-on patches to add extra functionality,
but at this time I really would prefer avoiding adding extra
functionality for yet to be implemented features in device drivers.
The ntuple display functionality provides a good example of why I
would prefer to avoid it.  Everything looked like it should have
worked when get_rx_ntuple was implemented in the device drivers, but
as soon as I implemented a get_rx_ntuple for ixgbe I quickly
discovered it didn't work and as such I am now stuck moving everything
over to network flow classifier for ixgbe.

Thanks,

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