isci: workaround port task scheduler starvation issue
authorTomasz Chudy <Tomasz.Chudy@intel.com>
Fri, 25 Feb 2011 10:25:09 +0000 (02:25 -0800)
committerDan Williams <dan.j.williams@intel.com>
Sun, 3 Jul 2011 10:55:28 +0000 (03:55 -0700)
commita8d4b9fe911c7d48f7a75c37eb1bfa3273547d97
tree8b5fbdb2b6ea0e31dfcfc4c336b8bb5f4ba7d84a
parent7c40a8035815479c7c12ab0cdcea71e0f4c3a9c8
isci: workaround port task scheduler starvation issue

There is a condition whereby TCs (task contexts) can jump to the head of
the round robin queue causing indefinite starvation of pending tasks.
Posting a TC to a suspended RNC (remote node context) causes the
hardware to select that task first, but since the RNC is suspended the
scheduler proceeds to the next task in the expected round robin fashion,
restoring TC arbitration fairness.

Signed-off-by: Tomasz Chudy <tomasz.chudy@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/scsi/isci/core/scic_port.h
drivers/scsi/isci/core/scic_sds_controller.c
drivers/scsi/isci/core/scic_sds_port.c
drivers/scsi/isci/core/scic_sds_port.h
drivers/scsi/isci/host.c