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)
commitce03cd04dfe9453377c77c4b7da046add1a5c43a
treed2235bad8fa93762996e6004be336572a266a71b
parent412d113d95e2097e71f0078a305becbd76355b2e
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