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