Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[cascardo/linux.git] / drivers / scsi / bfa / include / bfi / bfi_fcxp.h
1 /*
2  * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
3  * All rights reserved
4  * www.brocade.com
5  *
6  * Linux driver for Brocade Fibre Channel Host Bus Adapter.
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License (GPL) Version 2 as
10  * published by the Free Software Foundation
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * General Public License for more details.
16  */
17
18 #ifndef __BFI_FCXP_H__
19 #define __BFI_FCXP_H__
20
21 #include "bfi.h"
22
23 #pragma pack(1)
24
25 enum bfi_fcxp_h2i {
26         BFI_FCXP_H2I_SEND_REQ = 1,
27 };
28
29 enum bfi_fcxp_i2h {
30         BFI_FCXP_I2H_SEND_RSP = BFA_I2HM(1),
31 };
32
33 #define BFA_FCXP_MAX_SGES       2
34
35 /**
36  * FCXP send request structure
37  */
38 struct bfi_fcxp_send_req_s {
39         struct bfi_mhdr_s  mh;          /*  Common msg header               */
40         u16        fcxp_tag;    /*  driver request tag              */
41         u16        max_frmsz;   /*  max send frame size     */
42         u16        vf_id;               /*  vsan tag if applicable          */
43         u16        rport_fw_hndl;       /*  FW Handle for the remote port  */
44         u8         class;               /*  FC class used for req/rsp       */
45         u8         rsp_timeout; /*  timeout in secs, 0-no response */
46         u8         cts;         /*  continue sequence               */
47         u8         lp_tag;              /*  lport tag                       */
48         struct fchs_s   fchs;           /*  request FC header structure    */
49         u32        req_len;     /*  request payload length          */
50         u32        rsp_maxlen;  /*  max response length expected   */
51         struct bfi_sge_s   req_sge[BFA_FCXP_MAX_SGES];  /*  request buf    */
52         struct bfi_sge_s   rsp_sge[BFA_FCXP_MAX_SGES];  /*  response buf   */
53 };
54
55 /**
56  * FCXP send response structure
57  */
58 struct bfi_fcxp_send_rsp_s {
59         struct bfi_mhdr_s  mh;          /*  Common msg header               */
60         u16        fcxp_tag;    /*  send request tag                */
61         u8         req_status;  /*  request status                  */
62         u8         rsvd;
63         u32        rsp_len;     /*  actual response length          */
64         u32        residue_len; /*  residual response length        */
65         struct fchs_s   fchs;           /*  response FC header structure   */
66 };
67
68 #pragma pack()
69
70 #endif /* __BFI_FCXP_H__ */
71