xref: /OK3568_Linux_fs/kernel/drivers/net/ethernet/brocade/bna/bfi_cna.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Linux network driver for QLogic BR-series Converged Network Adapter.
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun /*
6*4882a593Smuzhiyun  * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
7*4882a593Smuzhiyun  * Copyright (c) 2014-2015 QLogic Corporation
8*4882a593Smuzhiyun  * All rights reserved
9*4882a593Smuzhiyun  * www.qlogic.com
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun #ifndef __BFI_CNA_H__
12*4882a593Smuzhiyun #define __BFI_CNA_H__
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #include "bfi.h"
15*4882a593Smuzhiyun #include "bfa_defs_cna.h"
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun enum bfi_port_h2i {
18*4882a593Smuzhiyun 	BFI_PORT_H2I_ENABLE_REQ		= (1),
19*4882a593Smuzhiyun 	BFI_PORT_H2I_DISABLE_REQ	= (2),
20*4882a593Smuzhiyun 	BFI_PORT_H2I_GET_STATS_REQ	= (3),
21*4882a593Smuzhiyun 	BFI_PORT_H2I_CLEAR_STATS_REQ	= (4),
22*4882a593Smuzhiyun };
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun enum bfi_port_i2h {
25*4882a593Smuzhiyun 	BFI_PORT_I2H_ENABLE_RSP		= BFA_I2HM(1),
26*4882a593Smuzhiyun 	BFI_PORT_I2H_DISABLE_RSP	= BFA_I2HM(2),
27*4882a593Smuzhiyun 	BFI_PORT_I2H_GET_STATS_RSP	= BFA_I2HM(3),
28*4882a593Smuzhiyun 	BFI_PORT_I2H_CLEAR_STATS_RSP	= BFA_I2HM(4),
29*4882a593Smuzhiyun };
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun /* Generic REQ type */
32*4882a593Smuzhiyun struct bfi_port_generic_req {
33*4882a593Smuzhiyun 	struct bfi_mhdr mh;		/*!< msg header			    */
34*4882a593Smuzhiyun 	u32	msgtag;		/*!< msgtag for reply		    */
35*4882a593Smuzhiyun 	u32	rsvd;
36*4882a593Smuzhiyun } __packed;
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun /* Generic RSP type */
39*4882a593Smuzhiyun struct bfi_port_generic_rsp {
40*4882a593Smuzhiyun 	struct bfi_mhdr mh;		/*!< common msg header		    */
41*4882a593Smuzhiyun 	u8		status;		/*!< port enable status		    */
42*4882a593Smuzhiyun 	u8		rsvd[3];
43*4882a593Smuzhiyun 	u32	msgtag;		/*!< msgtag for reply		    */
44*4882a593Smuzhiyun } __packed;
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun /* BFI_PORT_H2I_GET_STATS_REQ */
47*4882a593Smuzhiyun struct bfi_port_get_stats_req {
48*4882a593Smuzhiyun 	struct bfi_mhdr mh;		/*!< common msg header		    */
49*4882a593Smuzhiyun 	union bfi_addr_u   dma_addr;
50*4882a593Smuzhiyun } __packed;
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun union bfi_port_h2i_msg_u {
53*4882a593Smuzhiyun 	struct bfi_mhdr mh;
54*4882a593Smuzhiyun 	struct bfi_port_generic_req enable_req;
55*4882a593Smuzhiyun 	struct bfi_port_generic_req disable_req;
56*4882a593Smuzhiyun 	struct bfi_port_get_stats_req getstats_req;
57*4882a593Smuzhiyun 	struct bfi_port_generic_req clearstats_req;
58*4882a593Smuzhiyun } __packed;
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun union bfi_port_i2h_msg_u {
61*4882a593Smuzhiyun 	struct bfi_mhdr mh;
62*4882a593Smuzhiyun 	struct bfi_port_generic_rsp enable_rsp;
63*4882a593Smuzhiyun 	struct bfi_port_generic_rsp disable_rsp;
64*4882a593Smuzhiyun 	struct bfi_port_generic_rsp getstats_rsp;
65*4882a593Smuzhiyun 	struct bfi_port_generic_rsp clearstats_rsp;
66*4882a593Smuzhiyun } __packed;
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun /* @brief Mailbox commands from host to (DCBX/LLDP) firmware */
69*4882a593Smuzhiyun enum bfi_cee_h2i_msgs {
70*4882a593Smuzhiyun 	BFI_CEE_H2I_GET_CFG_REQ = 1,
71*4882a593Smuzhiyun 	BFI_CEE_H2I_RESET_STATS = 2,
72*4882a593Smuzhiyun 	BFI_CEE_H2I_GET_STATS_REQ = 3,
73*4882a593Smuzhiyun };
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /* @brief Mailbox reply and AEN messages from DCBX/LLDP firmware to host */
76*4882a593Smuzhiyun enum bfi_cee_i2h_msgs {
77*4882a593Smuzhiyun 	BFI_CEE_I2H_GET_CFG_RSP = BFA_I2HM(1),
78*4882a593Smuzhiyun 	BFI_CEE_I2H_RESET_STATS_RSP = BFA_I2HM(2),
79*4882a593Smuzhiyun 	BFI_CEE_I2H_GET_STATS_RSP = BFA_I2HM(3),
80*4882a593Smuzhiyun };
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun /* Data structures */
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun /*
85*4882a593Smuzhiyun  * @brief H2I command structure for resetting the stats.
86*4882a593Smuzhiyun  * BFI_CEE_H2I_RESET_STATS
87*4882a593Smuzhiyun  */
88*4882a593Smuzhiyun struct bfi_lldp_reset_stats {
89*4882a593Smuzhiyun 	struct bfi_mhdr mh;
90*4882a593Smuzhiyun } __packed;
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun /*
93*4882a593Smuzhiyun  * @brief H2I command structure for resetting the stats.
94*4882a593Smuzhiyun  * BFI_CEE_H2I_RESET_STATS
95*4882a593Smuzhiyun  */
96*4882a593Smuzhiyun struct bfi_cee_reset_stats {
97*4882a593Smuzhiyun 	struct bfi_mhdr mh;
98*4882a593Smuzhiyun } __packed;
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun /*
101*4882a593Smuzhiyun  * @brief  get configuration  command from host
102*4882a593Smuzhiyun  * BFI_CEE_H2I_GET_CFG_REQ
103*4882a593Smuzhiyun  */
104*4882a593Smuzhiyun struct bfi_cee_get_req {
105*4882a593Smuzhiyun 	struct bfi_mhdr mh;
106*4882a593Smuzhiyun 	union bfi_addr_u   dma_addr;
107*4882a593Smuzhiyun } __packed;
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun /*
110*4882a593Smuzhiyun  * @brief reply message from firmware
111*4882a593Smuzhiyun  * BFI_CEE_I2H_GET_CFG_RSP
112*4882a593Smuzhiyun  */
113*4882a593Smuzhiyun struct bfi_cee_get_rsp {
114*4882a593Smuzhiyun 	struct bfi_mhdr mh;
115*4882a593Smuzhiyun 	u8			cmd_status;
116*4882a593Smuzhiyun 	u8			rsvd[3];
117*4882a593Smuzhiyun } __packed;
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun /*
120*4882a593Smuzhiyun  * @brief  get configuration  command from host
121*4882a593Smuzhiyun  * BFI_CEE_H2I_GET_STATS_REQ
122*4882a593Smuzhiyun  */
123*4882a593Smuzhiyun struct bfi_cee_stats_req {
124*4882a593Smuzhiyun 	struct bfi_mhdr mh;
125*4882a593Smuzhiyun 	union bfi_addr_u   dma_addr;
126*4882a593Smuzhiyun } __packed;
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /*
129*4882a593Smuzhiyun  * @brief reply message from firmware
130*4882a593Smuzhiyun  * BFI_CEE_I2H_GET_STATS_RSP
131*4882a593Smuzhiyun  */
132*4882a593Smuzhiyun struct bfi_cee_stats_rsp {
133*4882a593Smuzhiyun 	struct bfi_mhdr mh;
134*4882a593Smuzhiyun 	u8			cmd_status;
135*4882a593Smuzhiyun 	u8			rsvd[3];
136*4882a593Smuzhiyun } __packed;
137*4882a593Smuzhiyun 
138*4882a593Smuzhiyun /* @brief mailbox command structures from host to firmware */
139*4882a593Smuzhiyun union bfi_cee_h2i_msg_u {
140*4882a593Smuzhiyun 	struct bfi_mhdr mh;
141*4882a593Smuzhiyun 	struct bfi_cee_get_req get_req;
142*4882a593Smuzhiyun 	struct bfi_cee_stats_req stats_req;
143*4882a593Smuzhiyun } __packed;
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun /* @brief mailbox message structures from firmware to host	*/
146*4882a593Smuzhiyun union bfi_cee_i2h_msg_u {
147*4882a593Smuzhiyun 	struct bfi_mhdr mh;
148*4882a593Smuzhiyun 	struct bfi_cee_get_rsp get_rsp;
149*4882a593Smuzhiyun 	struct bfi_cee_stats_rsp stats_rsp;
150*4882a593Smuzhiyun } __packed;
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun #endif /* __BFI_CNA_H__ */
153