xref: /OK3568_Linux_fs/kernel/drivers/net/ethernet/brocade/bna/bfa_cee.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 
12*4882a593Smuzhiyun #ifndef __BFA_CEE_H__
13*4882a593Smuzhiyun #define __BFA_CEE_H__
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #include "bfa_defs_cna.h"
16*4882a593Smuzhiyun #include "bfa_ioc.h"
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun typedef void (*bfa_cee_get_attr_cbfn_t) (void *dev, enum bfa_status status);
19*4882a593Smuzhiyun typedef void (*bfa_cee_get_stats_cbfn_t) (void *dev, enum bfa_status status);
20*4882a593Smuzhiyun typedef void (*bfa_cee_reset_stats_cbfn_t) (void *dev, enum bfa_status status);
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun struct bfa_cee_cbfn {
23*4882a593Smuzhiyun 	bfa_cee_get_attr_cbfn_t    get_attr_cbfn;
24*4882a593Smuzhiyun 	void *get_attr_cbarg;
25*4882a593Smuzhiyun 	bfa_cee_get_stats_cbfn_t   get_stats_cbfn;
26*4882a593Smuzhiyun 	void *get_stats_cbarg;
27*4882a593Smuzhiyun 	bfa_cee_reset_stats_cbfn_t reset_stats_cbfn;
28*4882a593Smuzhiyun 	void *reset_stats_cbarg;
29*4882a593Smuzhiyun };
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun struct bfa_cee {
32*4882a593Smuzhiyun 	void *dev;
33*4882a593Smuzhiyun 	bool get_attr_pending;
34*4882a593Smuzhiyun 	bool get_stats_pending;
35*4882a593Smuzhiyun 	bool reset_stats_pending;
36*4882a593Smuzhiyun 	enum bfa_status get_attr_status;
37*4882a593Smuzhiyun 	enum bfa_status get_stats_status;
38*4882a593Smuzhiyun 	enum bfa_status reset_stats_status;
39*4882a593Smuzhiyun 	struct bfa_cee_cbfn cbfn;
40*4882a593Smuzhiyun 	struct bfa_ioc_notify ioc_notify;
41*4882a593Smuzhiyun 	struct bfa_cee_attr *attr;
42*4882a593Smuzhiyun 	struct bfa_cee_stats *stats;
43*4882a593Smuzhiyun 	struct bfa_dma attr_dma;
44*4882a593Smuzhiyun 	struct bfa_dma stats_dma;
45*4882a593Smuzhiyun 	struct bfa_ioc *ioc;
46*4882a593Smuzhiyun 	struct bfa_mbox_cmd get_cfg_mb;
47*4882a593Smuzhiyun 	struct bfa_mbox_cmd get_stats_mb;
48*4882a593Smuzhiyun 	struct bfa_mbox_cmd reset_stats_mb;
49*4882a593Smuzhiyun };
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun u32 bfa_nw_cee_meminfo(void);
52*4882a593Smuzhiyun void bfa_nw_cee_mem_claim(struct bfa_cee *cee, u8 *dma_kva,
53*4882a593Smuzhiyun 	u64 dma_pa);
54*4882a593Smuzhiyun void bfa_nw_cee_attach(struct bfa_cee *cee, struct bfa_ioc *ioc, void *dev);
55*4882a593Smuzhiyun enum bfa_status bfa_nw_cee_get_attr(struct bfa_cee *cee,
56*4882a593Smuzhiyun 				struct bfa_cee_attr *attr,
57*4882a593Smuzhiyun 				bfa_cee_get_attr_cbfn_t cbfn, void *cbarg);
58*4882a593Smuzhiyun #endif /* __BFA_CEE_H__ */
59