Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
remote_node_context.h File Reference
#include "isci.h"

Go to the source code of this file.

Data Structures

struct  sci_remote_node_context
 

Macros

#define SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX   0x0FFF
 
#define SCI_SOFTWARE_SUSPEND_CMD   SCU_CONTEXT_COMMAND_POST_RNC_SUSPEND_TX_RX
 
#define SCI_SOFTWARE_SUSPEND_EXPECTED_EVENT   SCU_EVENT_TL_RNC_SUSPEND_TX_RX
 
#define RNC_STATES
 
#define C(a)   SCI_##a
 

Typedefs

typedef void(* scics_sds_remote_node_context_callback )(void *)
 

Enumerations

enum  sci_remote_node_suspension_reasons { SCI_HW_SUSPEND, SCI_SW_SUSPEND_NORMAL, SCI_SW_SUSPEND_LINKHANG_DETECT }
 
enum  sci_remote_node_context_destination_state {
  RNC_DEST_UNSPECIFIED, RNC_DEST_READY, RNC_DEST_FINAL, RNC_DEST_SUSPENDED,
  RNC_DEST_SUSPENDED_RESUME
}
 

Functions

const charrnc_state_name (enum scis_sds_remote_node_context_states state)
 
void sci_remote_node_context_construct (struct sci_remote_node_context *rnc, u16 remote_node_index)
 
bool sci_remote_node_context_is_ready (struct sci_remote_node_context *sci_rnc)
 
bool sci_remote_node_context_is_suspended (struct sci_remote_node_context *sci_rnc)
 
enum sci_status sci_remote_node_context_event_handler (struct sci_remote_node_context *sci_rnc, u32 event_code)
 
enum sci_status sci_remote_node_context_destruct (struct sci_remote_node_context *sci_rnc, scics_sds_remote_node_context_callback callback, void *callback_parameter)
 
enum sci_status sci_remote_node_context_suspend (struct sci_remote_node_context *sci_rnc, enum sci_remote_node_suspension_reasons reason, u32 suspension_code)
 
enum sci_status sci_remote_node_context_resume (struct sci_remote_node_context *sci_rnc, scics_sds_remote_node_context_callback cb_fn, void *cb_p)
 
enum sci_status sci_remote_node_context_start_task (struct sci_remote_node_context *sci_rnc, struct isci_request *ireq, scics_sds_remote_node_context_callback cb_fn, void *cb_p)
 
enum sci_status sci_remote_node_context_start_io (struct sci_remote_node_context *sci_rnc, struct isci_request *ireq)
 
int sci_remote_node_context_is_safe_to_abort (struct sci_remote_node_context *sci_rnc)
 

Variables

enum
scis_sds_remote_node_context_states 
RNC_STATES
 

Macro Definition Documentation

#define C (   a)    SCI_##a

Definition at line 133 of file remote_node_context.h.

#define RNC_STATES
Value:
{\
C(RNC_INITIAL),\
C(RNC_POSTING),\
C(RNC_INVALIDATING),\
C(RNC_RESUMING),\
C(RNC_READY),\
C(RNC_TX_SUSPENDED),\
C(RNC_TX_RX_SUSPENDED),\
C(RNC_AWAIT_SUSPENSION),\
}

enum sci_remote_node_context_states initial state for a remote node context. On a resume request the remote node context will transition to the posting state.

: transition state that posts the RNi to the hardware. Once the RNC is posted the remote node context will be made ready.

: transition state that will post an RNC invalidate to the hardware. Once the invalidate is complete the remote node context will transition to the posting state.

: transition state that will post an RNC resume to the hardare. Once the event notification of resume complete is received the remote node context will transition to the ready state.

: state that the remote node context must be in to accept io request operations.

: state that the remote node context transitions to when it gets a TX suspend notification from the hardware.

: state that the remote node context transitions to when it gets a TX RX suspend notification from the hardware.

: wait state for the remote node context that waits for a suspend notification from the hardware. This state is entered when either there is a request to supend the remote node context or when there is a TC completion where the remote node will be suspended by the hardware.

Definition at line 122 of file remote_node_context.h.

#define SCI_SOFTWARE_SUSPEND_CMD   SCU_CONTEXT_COMMAND_POST_RNC_SUSPEND_TX_RX

Definition at line 83 of file remote_node_context.h.

#define SCI_SOFTWARE_SUSPEND_EXPECTED_EVENT   SCU_EVENT_TL_RNC_SUSPEND_TX_RX

Definition at line 84 of file remote_node_context.h.

#define SCIC_SDS_REMOTE_NODE_CONTEXT_INVALID_INDEX   0x0FFF

This file contains the structures, constants, and prototypes associated with the remote node context in the silicon. It exists to model and manage the remote node context in the silicon.

This constant represents an invalid remote device id, it is used to program the STPDARNI register so the driver knows when it has received a SIGNATURE FIS from the SCU.

Definition at line 76 of file remote_node_context.h.

Typedef Documentation

typedef void(* scics_sds_remote_node_context_callback)(void *)

Definition at line 90 of file remote_node_context.h.

Enumeration Type Documentation

This enumeration is used to define the end destination state for the remote node context.

Enumerator:
RNC_DEST_UNSPECIFIED 
RNC_DEST_READY 
RNC_DEST_FINAL 
RNC_DEST_SUSPENDED 
RNC_DEST_SUSPENDED_RESUME 

Definition at line 144 of file remote_node_context.h.

Enumerator:
SCI_HW_SUSPEND 
SCI_SW_SUSPEND_NORMAL 
SCI_SW_SUSPEND_LINKHANG_DETECT 

Definition at line 78 of file remote_node_context.h.

Function Documentation

const char* rnc_state_name ( enum scis_sds_remote_node_context_states  state)

Definition at line 65 of file remote_node_context.c.

void sci_remote_node_context_construct ( struct sci_remote_node_context rnc,
u16  remote_node_index 
)

Definition at line 414 of file remote_node_context.c.

enum sci_status sci_remote_node_context_destruct ( struct sci_remote_node_context sci_rnc,
scics_sds_remote_node_context_callback  callback,
void callback_parameter 
)

Definition at line 528 of file remote_node_context.c.

enum sci_status sci_remote_node_context_event_handler ( struct sci_remote_node_context sci_rnc,
u32  event_code 
)

Definition at line 425 of file remote_node_context.c.

bool sci_remote_node_context_is_ready ( struct sci_remote_node_context sci_rnc)

: The state of the remote node context object to check.

This method will return true if the remote node context is in a READY state otherwise it will return false bool true if the remote node context is in the ready state. false if the remote node context is not in the ready state.

Definition at line 81 of file remote_node_context.c.

int sci_remote_node_context_is_safe_to_abort ( struct sci_remote_node_context sci_rnc)

Definition at line 787 of file remote_node_context.c.

bool sci_remote_node_context_is_suspended ( struct sci_remote_node_context sci_rnc)

Definition at line 93 of file remote_node_context.c.

enum sci_status sci_remote_node_context_resume ( struct sci_remote_node_context sci_rnc,
scics_sds_remote_node_context_callback  cb_fn,
void cb_p 
)

Definition at line 659 of file remote_node_context.c.

enum sci_status sci_remote_node_context_start_io ( struct sci_remote_node_context sci_rnc,
struct isci_request ireq 
)

Definition at line 748 of file remote_node_context.c.

enum sci_status sci_remote_node_context_start_task ( struct sci_remote_node_context sci_rnc,
struct isci_request ireq,
scics_sds_remote_node_context_callback  cb_fn,
void cb_p 
)

Definition at line 773 of file remote_node_context.c.

enum sci_status sci_remote_node_context_suspend ( struct sci_remote_node_context sci_rnc,
enum sci_remote_node_suspension_reasons  reason,
u32  suspension_code 
)

Definition at line 567 of file remote_node_context.c.

Variable Documentation

enum scis_sds_remote_node_context_states RNC_STATES

Definition at line 134 of file remote_node_context.h.