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 16struct 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 26struct 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 56void cxgb3i_conn_closing(struct s3_conn *c3cn); 57void cxgb3i_conn_pdu_ready(struct s3_conn *c3cn); 58void cxgb3i_conn_tx_open(struct s3_conn *c3cn); 59#endif 60