sfc: Fix RX drop filters for EF10
authorBen Hutchings <bhutchings@solarflare.com>
Mon, 16 Dec 2013 18:56:24 +0000 (18:56 +0000)
committerBen Hutchings <bhutchings@solarflare.com>
Mon, 16 Dec 2013 19:01:27 +0000 (19:01 +0000)
When we insert an filter, the firmware checks that the given RX queue
index is in range even if it will not be used.  In case we're
inserting a drop filter, pass the value 0.

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

index d352bdc4e53ea01bd6e3eb74c05d2c012fa671ab..4dfc2296600d30af117104123d9eddef56231688 100644 (file)
@@ -2245,7 +2245,9 @@ static void efx_ef10_filter_push_prep(struct efx_nic *efx,
                       MC_CMD_FILTER_OP_IN_RX_DEST_HOST);
        MCDI_SET_DWORD(inbuf, FILTER_OP_IN_TX_DEST,
                       MC_CMD_FILTER_OP_IN_TX_DEST_DEFAULT);
-       MCDI_SET_DWORD(inbuf, FILTER_OP_IN_RX_QUEUE, spec->dmaq_id);
+       MCDI_SET_DWORD(inbuf, FILTER_OP_IN_RX_QUEUE,
+                      spec->dmaq_id == EFX_FILTER_RX_DMAQ_ID_DROP ?
+                      0 : spec->dmaq_id);
        MCDI_SET_DWORD(inbuf, FILTER_OP_IN_RX_MODE,
                       (spec->flags & EFX_FILTER_FLAG_RX_RSS) ?
                       MC_CMD_FILTER_OP_IN_RX_MODE_RSS :