nfp: add async reconfiguration mechanism
authorJakub Kicinski <jakub.kicinski@netronome.com>
Sat, 16 Apr 2016 10:25:54 +0000 (11:25 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 17 Apr 2016 02:34:40 +0000 (22:34 -0400)
commit3d780b926a12dd798417446d733d457f1be1cc73
tree6065a2d9bfe45518f6f8ce4e4425fc2460a70b22
parent180012dc05e565260a25696767c8f5b2df5fc50e
nfp: add async reconfiguration mechanism

Some callers of nfp_net_reconfig() are in atomic context so
we used to busy wait for commands to complete.  In worst case
scenario that means locking up a core for up to 5 seconds
when a command times out.  Lets add a timer-based mechanism
of asynchronously checking whether reconfiguration completed
successfully for atomic callers to use.  Non-atomic callers
can now just sleep.

The approach taken is quite simple because (1) synchronous
reconfigurations always happen under RTNL (or before device
is registered); (2) we can coalesce pending reconfigs.
There is no need for request queues, timer which eventually
takes a look at reconfiguration result to report errors is
good enough.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/nfp_net.h
drivers/net/ethernet/netronome/nfp/nfp_net_common.c