sfc: Add flag for stack-owned RX MAC filters
authorBen Hutchings <bhutchings@solarflare.com>
Mon, 19 Nov 2012 23:08:20 +0000 (23:08 +0000)
committerBen Hutchings <bhutchings@solarflare.com>
Thu, 22 Aug 2013 18:25:59 +0000 (19:25 +0100)
commit8803e15042fbf5bd53b9b43147a91e3f50cffb03
treed2235bad8fa93762996e6004be336572a266a71b
parent14990a5d66b5b51a422bc46a9e8fedb20d8a770c
sfc: Add flag for stack-owned RX MAC filters

MAC filters inserted on request from the stack (ndo_set_rx_mode)
should allow manual steering but not removal.  Currently we have a
special case for Siena's all-multicast and all-unicast MAC filters,
but on EF10 we need to allow for steering of precise MAC filters as
well.

The EFX_FILTER_FLAG_RX_STACK flag changes the behaviour of replacement
and removal requests:

- Replacement *of* a filter with this flag never clears the flag but
  does change steering and saved priority
- Replacement *by* a filter with this flag only sets the flag but does
  not change steering
- Removal with priority < EFX_FILTER_PRI_REQUIRED really resets RX
  steering and saved priority

This could support precise MAC filtering on Siena in future.

As a side-benefit, the default MAC filters are hidden from ethtool
until they are steered.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
drivers/net/ethernet/sfc/farch.c
drivers/net/ethernet/sfc/filter.h