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