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>
This commit is contained in:
Dan Williams
2011-06-07 18:50:55 -07:00
rodzic 9b917987fd
commit ac668c6970
4 zmienionych plików z 56 dodań i 231 usunięć

Wyświetl plik

@@ -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"
@@ -179,11 +178,6 @@ struct scic_sds_controller {
*/
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 scic_sds_controller {
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 @@ enum scic_sds_controller_states {
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