qed: Change locking scheme for VF channel
authorYuval Mintz <Yuval.Mintz@qlogic.com>
Mon, 22 Aug 2016 10:25:12 +0000 (13:25 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 23 Aug 2016 01:24:52 +0000 (18:24 -0700)
commitb0bccb69eba3629949eaa28017be56c8b1319b45
treea14ea846328b94de9f474ba9a65c79828087cb11
parentd8c2c7e3404e5bcaeae4af78d6935e5b8fcc97ee
qed: Change locking scheme for VF channel

Each VF employees a lock that's supposed to serialize its usage of the
HW channel for communication with its PF, but the critical section is
ill-defined:

  - VFs currently release the lock whenever the PF response arrives,
    prior to actually processing the reply buffer [which was also supposed
    to have been protected by same lock].

  - The lock would be released on first response, ignoring the possibilty
    the sw flow isn't over [as might be the case of the acquisition flow].
    As a result, the flow would run unprotected and would cause a double
    mutex release [as the additional message completion would release it
    while its actually already free].

Change the flow to have a dedicated function to be called at end of each
flow and release the lock.

Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qed/qed_vf.c