]> 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)
commitd5a90d45fd2248870184552d87e99e770a0a6390
tree4edc743e7f21cf1d2c4a97eb9d96c66e29f41789
parente376c3b8caa2c85f74e90c836bfb28ed50193762
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