]> git.baikalelectronics.ru Git - kernel.git/commit
qed: fix handling of concurrent ramrods.
authorTomer Tayar <Tomer.Tayar@qlogic.com>
Mon, 7 Dec 2015 11:25:57 +0000 (06:25 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 7 Dec 2015 19:14:03 +0000 (14:14 -0500)
commit6131d5c2b349c9611f6812381b696d18a37e0bd4
tree4edc743e7f21cf1d2c4a97eb9d96c66e29f41789
parent28f56d17dae61bb126261deddc3233883f4ecf52
qed: fix handling of concurrent ramrods.

Concurrent non-blocking slowpath ramrods can be completed
out-of-order on the completion chain. Recycling completed elements,
while previously sent elements are still completion pending,
can lead to overriding of active elements on the chain. Furthermore,
sending pending slowpath ramrods currently lacks the update of the
chain element physical pointer.

This patch:
* Ensures that ramrods are sent to the FW with
  consecutive echo values.
* Handles out-of-order completions by freeing only first
  successive completed entries.
* Updates the chain element physical pointer when copying
  a pending element into a free element for sending.

Signed-off-by: Tomer Tayar <Tomer.Tayar@qlogic.com>
Signed-off-by: Manish Chopra <manish.chopra@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qed/qed_sp.h
drivers/net/ethernet/qlogic/qed/qed_spq.c
include/linux/qed/common_hsi.h