• Yuval Mintz's avatar
    bnx2x: Fix statistics locking scheme · dff173de
    Yuval Mintz authored
    Statistics' state-machine in bnx2x driver must be synced with various driver
    flows, but its current locking scheme manages to be wasteful [using 2 locks +
    additional local variable] and prone to race-conditions at the same time,
    as the state-machine and 'action' are being accessed under different locks.
    
    In addition, current 'safe exec' isn't in fact safe, since the only guarantee
    it gives is that DMA transactions are over, but ramrods might still be running.
    
    This patch cleans up said logic, leaving us with a single lock for the entire
    flow and removing the possible races.
    
    Changes from v2:
    	- Switched into mutex locking from semaphore locking.
    	- Release locks on error flows.
    
    Changes from v1:
    	Failure to acquire lock fails flow instead of printing a warning and
    	allowing access to the critical section.
    Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
    Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dff173de
bnx2x_stats.h 15.7 KB