/* * Sequence Status Block. * This format is set by the FC-FS standard and is sent over the wire. * Note that the fields aren't all naturally aligned.
*/ struct fc_ssb {
__u8 ssb_seq_id; /* sequence ID */
__u8 _ssb_resvd;
__be16 ssb_low_seq_cnt; /* lowest SEQ_CNT */
/* * The SSB should be 17 bytes. Since it's layout is somewhat strange, * we define the size here so that code can ASSERT that the size comes out * correct.
*/ #define FC_SSB_SIZE 17 /* length of fc_ssb for assert */
#define SSB_ST_CLASS_BIT 4 /* class of service field LSB */ #define SSB_ST_CLASS_MASK 3 /* class of service mask */ #define SSB_ST_ACK (1 << 3) /* ACK (EOFt or EOFdt) transmitted */
/* * Exchange Status Block. * This format is set by the FC-FS standard and is sent over the wire. * Note that the fields aren't all naturally aligned.
*/ struct fc_esb {
__u8 esb_cs_ctl; /* CS_CTL for frame header */
__be16 esb_ox_id; /* originator exchange ID */
__be16 esb_rx_id; /* responder exchange ID */
__be32 esb_orig_fid; /* fabric ID of originator */
__be32 esb_resp_fid; /* fabric ID of responder */
__be32 esb_e_stat; /* status */
__u8 _esb_resvd[4];
__u8 esb_service_params[112]; /* TBD */
__u8 esb_seq_status[8]; /* sequence statuses, 8 bytes each */
} __attribute__((packed));
/* * Define expected size for ASSERTs. * See comments on FC_SSB_SIZE.
*/ #define FC_ESB_SIZE (1 + 5*4 + 112 + 8) /* expected size */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.