Linux Kernel
3.7.1
|
#include "isci.h"
Go to the source code of this file.
Data Structures | |
struct | sci_remote_node_table |
Macros | |
#define | SCIC_SDS_REMOTE_NODE_SETS_PER_BYTE 2 |
#define | SCIC_SDS_REMOTE_NODE_SETS_PER_DWORD (sizeof(u32) * SCIC_SDS_REMOTE_NODE_SETS_PER_BYTE) |
#define | SCIC_SDS_REMOTE_NODES_PER_BYTE (SCU_STP_REMOTE_NODE_COUNT * SCIC_SDS_REMOTE_NODE_SETS_PER_BYTE) |
#define | SCIC_SDS_REMOTE_NODES_PER_DWORD (sizeof(u32) * SCIC_SDS_REMOTE_NODES_PER_BYTE) |
#define | SCIC_SDS_REMOTE_NODES_BITS_PER_GROUP 4 |
#define | SCIC_SDS_REMOTE_NODE_TABLE_INVALID_INDEX (0xFFFFFFFF) |
#define | SCIC_SDS_REMOTE_NODE_TABLE_FULL_SLOT_VALUE (0x07) |
#define | SCIC_SDS_REMOTE_NODE_TABLE_EMPTY_SLOT_VALUE (0x00) |
#define | SCU_STP_REMOTE_NODE_COUNT 3 |
#define | SCU_SSP_REMOTE_NODE_COUNT 1 |
#define | SCU_SATA_REMOTE_NODE_COUNT 1 |
Functions | |
void | sci_remote_node_table_initialize (struct sci_remote_node_table *remote_node_table, u32 remote_node_entries) |
u16 | sci_remote_node_table_allocate_remote_node (struct sci_remote_node_table *remote_node_table, u32 remote_node_count) |
void | sci_remote_node_table_release_remote_node_index (struct sci_remote_node_table *remote_node_table, u32 remote_node_count, u16 remote_node_index) |
#define SCIC_SDS_REMOTE_NODE_SETS_PER_BYTE 2 |
Remote node sets are sets of remote node index in the remtoe node table The SCU hardware requires that STP remote node entries take three consecutive remote node index so the table is arranged in sets of three. The bits are used as 0111 0111 to make a byte and the bits define the set of three remote nodes to use as a sequence.
Definition at line 70 of file remote_node_table.h.
#define SCIC_SDS_REMOTE_NODE_SETS_PER_DWORD (sizeof(u32) * SCIC_SDS_REMOTE_NODE_SETS_PER_BYTE) |
Since the remote node table is organized as DWORDS take the remote node sets in bytes and represent them in DWORDs. The lowest ordered bits are the ones used in case full DWORD is not being used. i.e. 0000 0000 0000 0000 0111 0111 0111 0111 // if only a single WORD is in use in the DWORD.
Definition at line 80 of file remote_node_table.h.
#define SCIC_SDS_REMOTE_NODE_TABLE_EMPTY_SLOT_VALUE (0x00) |
Definition at line 109 of file remote_node_table.h.
#define SCIC_SDS_REMOTE_NODE_TABLE_FULL_SLOT_VALUE (0x07) |
Definition at line 108 of file remote_node_table.h.
#define SCIC_SDS_REMOTE_NODE_TABLE_INVALID_INDEX (0xFFFFFFFF) |
Definition at line 107 of file remote_node_table.h.
#define SCIC_SDS_REMOTE_NODES_BITS_PER_GROUP 4 |
This is the number of bits in a remote node group
Definition at line 105 of file remote_node_table.h.
#define SCIC_SDS_REMOTE_NODES_PER_BYTE (SCU_STP_REMOTE_NODE_COUNT * SCIC_SDS_REMOTE_NODE_SETS_PER_BYTE) |
This is a count of the numeber of remote nodes that can be represented in a byte
Definition at line 88 of file remote_node_table.h.
#define SCIC_SDS_REMOTE_NODES_PER_DWORD (sizeof(u32) * SCIC_SDS_REMOTE_NODES_PER_BYTE) |
This is a count of the number of remote nodes that can be represented in a DWROD
Definition at line 97 of file remote_node_table.h.
#define SCU_SATA_REMOTE_NODE_COUNT 1 |
Direct attached STP remote node count
Definition at line 130 of file remote_node_table.h.
#define SCU_SSP_REMOTE_NODE_COUNT 1 |
Expander or direct attached ssp remote node count
Definition at line 123 of file remote_node_table.h.
#define SCU_STP_REMOTE_NODE_COUNT 3 |
Expander attached sata remote node count
Definition at line 116 of file remote_node_table.h.
u16 sci_remote_node_table_allocate_remote_node | ( | struct sci_remote_node_table * | remote_node_table, |
u32 | remote_node_count | ||
) |
: This is the remote node table from which the remote node allocation is to take place. : This is ther remote node count which is one of SCU_SSP_REMOTE_NODE_COUNT(1) or SCU_STP_REMOTE_NODE_COUNT(3).
This method will allocate a remote node that mataches the remote node count specified by the caller. Valid values for remote node count is SCU_SSP_REMOTE_NODE_COUNT(1) or SCU_STP_REMOTE_NODE_COUNT(3). u16 This is the remote node index that is returned or an invalid remote node context.
Definition at line 476 of file remote_node_table.c.
void sci_remote_node_table_initialize | ( | struct sci_remote_node_table * | remote_node_table, |
u32 | remote_node_entries | ||
) |
void sci_remote_node_table_release_remote_node_index | ( | struct sci_remote_node_table * | remote_node_table, |
u32 | remote_node_count, | ||
u16 | remote_node_index | ||
) |