• Edward Cree's avatar
    sfc: limit ARFS workitems in flight per channel · f993740e
    Edward Cree authored
    A misconfigured system (e.g. with all interrupts affinitised to all CPUs)
     may produce a storm of ARFS steering events.  With the existing sfc ARFS
     implementation, that could create a backlog of workitems that grinds the
     system to a halt.  To prevent this, limit the number of workitems that
     may be in flight for a given SFC device to 8 (EFX_RPS_MAX_IN_FLIGHT), and
     return EBUSY from our ndo_rx_flow_steer method if the limit is reached.
    Given this limit, also store the workitems in an array of slots within the
     struct efx_nic, rather than dynamically allocating for each request.
    The limit should not negatively impact performance, because it is only
     likely to be hit in cases where ARFS will be ineffective anyway.
    Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f993740e
net_driver.h 59.2 KB