isci: cleanup/optimize pool implementation

The circ_buf macros are ~6% faster, as measured by perf, because they take
advantage of power-of-two math assumptions i.e. no test and branch for
rollover. Their semantics are clearer than the hidden side effects in pool.h
(like sci_pool_get() which hides an assignment).

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
diff --git a/drivers/scsi/isci/host.h b/drivers/scsi/isci/host.h
index 74035004..c61a9fa 100644
--- a/drivers/scsi/isci/host.h
+++ b/drivers/scsi/isci/host.h
@@ -57,7 +57,6 @@
 
 #include "remote_device.h"
 #include "phy.h"
-#include "pool.h"
 #include "isci.h"
 #include "remote_node_table.h"
 #include "registers.h"
@@ -180,11 +179,6 @@
 	struct scic_remote_node_table available_remote_nodes;
 
 	/**
-	 * This field is the TCi pool used to manage the task context index.
-	 */
-	SCI_POOL_CREATE(tci_pool, u16, SCI_MAX_IO_REQUESTS);
-
-	/**
 	 * This filed is the struct scic_power_control data used to controll when direct
 	 * attached devices can consume power.
 	 */
@@ -310,6 +304,10 @@
 
 struct isci_host {
 	struct scic_sds_controller sci;
+	u16 tci_head;
+	u16 tci_tail;
+	u16 tci_pool[SCI_MAX_IO_REQUESTS];
+
 	union scic_oem_parameters oem_parameters;
 
 	int id; /* unique within a given pci device */
@@ -423,8 +421,6 @@
 	SCIC_FAILED,
 };
 
-
-
 /**
  * struct isci_pci_info - This class represents the pci function containing the
  *    controllers. Depending on PCI SKU, there could be up to 2 controllers in