xref: /OK3568_Linux_fs/kernel/drivers/scsi/lpfc/lpfc_attr.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*******************************************************************
2*4882a593Smuzhiyun  * This file is part of the Emulex Linux Device Driver for         *
3*4882a593Smuzhiyun  * Fibre Channel Host Bus Adapters.                                *
4*4882a593Smuzhiyun  * Copyright (C) 2017-2018 Broadcom. All Rights Reserved. The term *
5*4882a593Smuzhiyun  * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.     *
6*4882a593Smuzhiyun  * Copyright (C) 2004-2016 Emulex.  All rights reserved.           *
7*4882a593Smuzhiyun  * EMULEX and SLI are trademarks of Emulex.                        *
8*4882a593Smuzhiyun  * www.broadcom.com                                                *
9*4882a593Smuzhiyun  * Portions Copyright (C) 2004-2005 Christoph Hellwig              *
10*4882a593Smuzhiyun  *                                                                 *
11*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or   *
12*4882a593Smuzhiyun  * modify it under the terms of version 2 of the GNU General       *
13*4882a593Smuzhiyun  * Public License as published by the Free Software Foundation.    *
14*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful. *
15*4882a593Smuzhiyun  * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND          *
16*4882a593Smuzhiyun  * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,  *
17*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE      *
18*4882a593Smuzhiyun  * DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD *
19*4882a593Smuzhiyun  * TO BE LEGALLY INVALID.  See the GNU General Public License for  *
20*4882a593Smuzhiyun  * more details, a copy of which can be found in the file COPYING  *
21*4882a593Smuzhiyun  * included with this package.                                     *
22*4882a593Smuzhiyun  *******************************************************************/
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #define LPFC_ATTR(name, defval, minval, maxval, desc) \
25*4882a593Smuzhiyun static uint lpfc_##name = defval;\
26*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
27*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
28*4882a593Smuzhiyun lpfc_param_init(name, defval, minval, maxval)
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define LPFC_ATTR_R(name, defval, minval, maxval, desc) \
31*4882a593Smuzhiyun static uint lpfc_##name = defval;\
32*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
33*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
34*4882a593Smuzhiyun lpfc_param_show(name)\
35*4882a593Smuzhiyun lpfc_param_init(name, defval, minval, maxval)\
36*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO, lpfc_##name##_show, NULL)
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #define LPFC_ATTR_RW(name, defval, minval, maxval, desc) \
39*4882a593Smuzhiyun static uint lpfc_##name = defval;\
40*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
41*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
42*4882a593Smuzhiyun lpfc_param_show(name)\
43*4882a593Smuzhiyun lpfc_param_init(name, defval, minval, maxval)\
44*4882a593Smuzhiyun lpfc_param_set(name, defval, minval, maxval)\
45*4882a593Smuzhiyun lpfc_param_store(name)\
46*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO | S_IWUSR,\
47*4882a593Smuzhiyun 		   lpfc_##name##_show, lpfc_##name##_store)
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun #define LPFC_BBCR_ATTR_RW(name, defval, minval, maxval, desc) \
50*4882a593Smuzhiyun static uint lpfc_##name = defval;\
51*4882a593Smuzhiyun module_param(lpfc_##name, uint, 0444);\
52*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
53*4882a593Smuzhiyun lpfc_param_show(name)\
54*4882a593Smuzhiyun lpfc_param_init(name, defval, minval, maxval)\
55*4882a593Smuzhiyun lpfc_param_store(name)\
56*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, 0444 | 0644,\
57*4882a593Smuzhiyun 		   lpfc_##name##_show, lpfc_##name##_store)
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun #define LPFC_ATTR_HEX_R(name, defval, minval, maxval, desc) \
60*4882a593Smuzhiyun static uint lpfc_##name = defval;\
61*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
62*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
63*4882a593Smuzhiyun lpfc_param_hex_show(name)\
64*4882a593Smuzhiyun lpfc_param_init(name, defval, minval, maxval)\
65*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO, lpfc_##name##_show, NULL)
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun #define LPFC_ATTR_HEX_RW(name, defval, minval, maxval, desc) \
68*4882a593Smuzhiyun static uint lpfc_##name = defval;\
69*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
70*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
71*4882a593Smuzhiyun lpfc_param_hex_show(name)\
72*4882a593Smuzhiyun lpfc_param_init(name, defval, minval, maxval)\
73*4882a593Smuzhiyun lpfc_param_set(name, defval, minval, maxval)\
74*4882a593Smuzhiyun lpfc_param_store(name)\
75*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO | S_IWUSR,\
76*4882a593Smuzhiyun 		   lpfc_##name##_show, lpfc_##name##_store)
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #define LPFC_VPORT_ATTR(name, defval, minval, maxval, desc) \
79*4882a593Smuzhiyun static uint lpfc_##name = defval;\
80*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
81*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
82*4882a593Smuzhiyun lpfc_vport_param_init(name, defval, minval, maxval)
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun #define LPFC_VPORT_ATTR_R(name, defval, minval, maxval, desc) \
85*4882a593Smuzhiyun static uint lpfc_##name = defval;\
86*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
87*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
88*4882a593Smuzhiyun lpfc_vport_param_show(name)\
89*4882a593Smuzhiyun lpfc_vport_param_init(name, defval, minval, maxval)\
90*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO, lpfc_##name##_show, NULL)
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #define LPFC_VPORT_ULL_ATTR_R(name, defval, minval, maxval, desc) \
93*4882a593Smuzhiyun static uint64_t lpfc_##name = defval;\
94*4882a593Smuzhiyun module_param(lpfc_##name, ullong, S_IRUGO);\
95*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
96*4882a593Smuzhiyun lpfc_vport_param_show(name)\
97*4882a593Smuzhiyun lpfc_vport_param_init(name, defval, minval, maxval)\
98*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO, lpfc_##name##_show, NULL)
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define LPFC_VPORT_ATTR_RW(name, defval, minval, maxval, desc) \
101*4882a593Smuzhiyun static uint lpfc_##name = defval;\
102*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
103*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
104*4882a593Smuzhiyun lpfc_vport_param_show(name)\
105*4882a593Smuzhiyun lpfc_vport_param_init(name, defval, minval, maxval)\
106*4882a593Smuzhiyun lpfc_vport_param_set(name, defval, minval, maxval)\
107*4882a593Smuzhiyun lpfc_vport_param_store(name)\
108*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO | S_IWUSR,\
109*4882a593Smuzhiyun 		   lpfc_##name##_show, lpfc_##name##_store)
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun #define LPFC_VPORT_ATTR_HEX_R(name, defval, minval, maxval, desc) \
112*4882a593Smuzhiyun static uint lpfc_##name = defval;\
113*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
114*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
115*4882a593Smuzhiyun lpfc_vport_param_hex_show(name)\
116*4882a593Smuzhiyun lpfc_vport_param_init(name, defval, minval, maxval)\
117*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO, lpfc_##name##_show, NULL)
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun #define LPFC_VPORT_ATTR_HEX_RW(name, defval, minval, maxval, desc) \
120*4882a593Smuzhiyun static uint lpfc_##name = defval;\
121*4882a593Smuzhiyun module_param(lpfc_##name, uint, S_IRUGO);\
122*4882a593Smuzhiyun MODULE_PARM_DESC(lpfc_##name, desc);\
123*4882a593Smuzhiyun lpfc_vport_param_hex_show(name)\
124*4882a593Smuzhiyun lpfc_vport_param_init(name, defval, minval, maxval)\
125*4882a593Smuzhiyun lpfc_vport_param_set(name, defval, minval, maxval)\
126*4882a593Smuzhiyun lpfc_vport_param_store(name)\
127*4882a593Smuzhiyun static DEVICE_ATTR(lpfc_##name, S_IRUGO | S_IWUSR,\
128*4882a593Smuzhiyun 		   lpfc_##name##_show, lpfc_##name##_store)
129