[SCSI] cxgb3i: Add cxgb3i iSCSI driver.
[linux-2.6.git] / drivers / scsi / cxgb3i / cxgb3i_pdu.h
1 /*
2  * cxgb3i_ulp2.h: Chelsio S3xx iSCSI driver.
3  *
4  * Copyright (c) 2008 Chelsio Communications, Inc.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation.
9  *
10  * Written by: Karen Xie (kxie@chelsio.com)
11  */
12
13 #ifndef __CXGB3I_ULP2_PDU_H__
14 #define __CXGB3I_ULP2_PDU_H__
15
16 struct cpl_iscsi_hdr_norss {
17         union opcode_tid ot;
18         u16 pdu_len_ddp;
19         u16 len;
20         u32 seq;
21         u16 urg;
22         u8 rsvd;
23         u8 status;
24 };
25
26 struct cpl_rx_data_ddp_norss {
27         union opcode_tid ot;
28         u16 urg;
29         u16 len;
30         u32 seq;
31         u32 nxt_seq;
32         u32 ulp_crc;
33         u32 ddp_status;
34 };
35
36 #define RX_DDP_STATUS_IPP_SHIFT         27      /* invalid pagepod */
37 #define RX_DDP_STATUS_TID_SHIFT         26      /* tid mismatch */
38 #define RX_DDP_STATUS_COLOR_SHIFT       25      /* color mismatch */
39 #define RX_DDP_STATUS_OFFSET_SHIFT      24      /* offset mismatch */
40 #define RX_DDP_STATUS_ULIMIT_SHIFT      23      /* ulimit error */
41 #define RX_DDP_STATUS_TAG_SHIFT         22      /* tag mismatch */
42 #define RX_DDP_STATUS_DCRC_SHIFT        21      /* dcrc error */
43 #define RX_DDP_STATUS_HCRC_SHIFT        20      /* hcrc error */
44 #define RX_DDP_STATUS_PAD_SHIFT         19      /* pad error */
45 #define RX_DDP_STATUS_PPP_SHIFT         18      /* pagepod parity error */
46 #define RX_DDP_STATUS_LLIMIT_SHIFT      17      /* llimit error */
47 #define RX_DDP_STATUS_DDP_SHIFT         16      /* ddp'able */
48 #define RX_DDP_STATUS_PMM_SHIFT         15      /* pagepod mismatch */
49
50 #define ULP2_FLAG_DATA_READY            0x1
51 #define ULP2_FLAG_DATA_DDPED            0x2
52 #define ULP2_FLAG_HCRC_ERROR            0x10
53 #define ULP2_FLAG_DCRC_ERROR            0x20
54 #define ULP2_FLAG_PAD_ERROR             0x40
55
56 void cxgb3i_conn_closing(struct s3_conn *);
57 void cxgb3i_conn_pdu_ready(struct s3_conn *c3cn);
58 void cxgb3i_conn_tx_open(struct s3_conn *c3cn);
59 #endif