18c2ecf20Sopenharmony_ci/* 28c2ecf20Sopenharmony_ci * cxgb3i.h: Chelsio S3xx iSCSI driver. 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Copyright (c) 2008-2015 Chelsio Communications, Inc. 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * This program is free software; you can redistribute it and/or modify 78c2ecf20Sopenharmony_ci * it under the terms of the GNU General Public License as published by 88c2ecf20Sopenharmony_ci * the Free Software Foundation. 98c2ecf20Sopenharmony_ci * 108c2ecf20Sopenharmony_ci * Written by: Karen Xie (kxie@chelsio.com) 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#ifndef __CXGB3I_H__ 148c2ecf20Sopenharmony_ci#define __CXGB3I_H__ 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#define CXGB3I_SCSI_HOST_QDEPTH 1024 178c2ecf20Sopenharmony_ci#define CXGB3I_MAX_LUN 512 188c2ecf20Sopenharmony_ci#define ISCSI_PDU_NONPAYLOAD_MAX \ 198c2ecf20Sopenharmony_ci (sizeof(struct iscsi_hdr) + ISCSI_MAX_AHS_SIZE + 2*ISCSI_DIGEST_SIZE) 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/*for TX: a skb must have a headroom of at least TX_HEADER_LEN bytes */ 228c2ecf20Sopenharmony_ci#define CXGB3I_TX_HEADER_LEN \ 238c2ecf20Sopenharmony_ci (sizeof(struct tx_data_wr) + sizeof(struct sge_opaque_hdr)) 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ciextern cxgb3_cpl_handler_func cxgb3i_cpl_handlers[NUM_CPL_CMDS]; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistatic inline unsigned int cxgb3i_get_private_ipv4addr(struct net_device *ndev) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci return ((struct port_info *)(netdev_priv(ndev)))->iscsi_ipv4addr; 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic inline void cxgb3i_set_private_ipv4addr(struct net_device *ndev, 338c2ecf20Sopenharmony_ci unsigned int addr) 348c2ecf20Sopenharmony_ci{ 358c2ecf20Sopenharmony_ci struct port_info *pi = (struct port_info *)netdev_priv(ndev); 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci pi->iscsic.flags = addr ? 1 : 0; 388c2ecf20Sopenharmony_ci pi->iscsi_ipv4addr = addr; 398c2ecf20Sopenharmony_ci if (addr) 408c2ecf20Sopenharmony_ci memcpy(pi->iscsic.mac_addr, ndev->dev_addr, ETH_ALEN); 418c2ecf20Sopenharmony_ci} 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_cistruct cpl_iscsi_hdr_norss { 448c2ecf20Sopenharmony_ci union opcode_tid ot; 458c2ecf20Sopenharmony_ci u16 pdu_len_ddp; 468c2ecf20Sopenharmony_ci u16 len; 478c2ecf20Sopenharmony_ci u32 seq; 488c2ecf20Sopenharmony_ci u16 urg; 498c2ecf20Sopenharmony_ci u8 rsvd; 508c2ecf20Sopenharmony_ci u8 status; 518c2ecf20Sopenharmony_ci}; 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_cistruct cpl_rx_data_ddp_norss { 548c2ecf20Sopenharmony_ci union opcode_tid ot; 558c2ecf20Sopenharmony_ci u16 urg; 568c2ecf20Sopenharmony_ci u16 len; 578c2ecf20Sopenharmony_ci u32 seq; 588c2ecf20Sopenharmony_ci u32 nxt_seq; 598c2ecf20Sopenharmony_ci u32 ulp_crc; 608c2ecf20Sopenharmony_ci u32 ddp_status; 618c2ecf20Sopenharmony_ci}; 628c2ecf20Sopenharmony_ci#endif 63