.. | .. |
---|
124 | 124 | return 0; |
---|
125 | 125 | } |
---|
126 | 126 | |
---|
127 | | -static const struct seq_operations ipoib_mcg_seq_ops = { |
---|
| 127 | +static const struct seq_operations ipoib_mcg_sops = { |
---|
128 | 128 | .start = ipoib_mcg_seq_start, |
---|
129 | 129 | .next = ipoib_mcg_seq_next, |
---|
130 | 130 | .stop = ipoib_mcg_seq_stop, |
---|
131 | 131 | .show = ipoib_mcg_seq_show, |
---|
132 | 132 | }; |
---|
133 | 133 | |
---|
134 | | -static int ipoib_mcg_open(struct inode *inode, struct file *file) |
---|
135 | | -{ |
---|
136 | | - struct seq_file *seq; |
---|
137 | | - int ret; |
---|
138 | | - |
---|
139 | | - ret = seq_open(file, &ipoib_mcg_seq_ops); |
---|
140 | | - if (ret) |
---|
141 | | - return ret; |
---|
142 | | - |
---|
143 | | - seq = file->private_data; |
---|
144 | | - seq->private = inode->i_private; |
---|
145 | | - |
---|
146 | | - return 0; |
---|
147 | | -} |
---|
148 | | - |
---|
149 | | -static const struct file_operations ipoib_mcg_fops = { |
---|
150 | | - .owner = THIS_MODULE, |
---|
151 | | - .open = ipoib_mcg_open, |
---|
152 | | - .read = seq_read, |
---|
153 | | - .llseek = seq_lseek, |
---|
154 | | - .release = seq_release |
---|
155 | | -}; |
---|
| 134 | +DEFINE_SEQ_ATTRIBUTE(ipoib_mcg); |
---|
156 | 135 | |
---|
157 | 136 | static void *ipoib_path_seq_start(struct seq_file *file, loff_t *pos) |
---|
158 | 137 | { |
---|
.. | .. |
---|
229 | 208 | return 0; |
---|
230 | 209 | } |
---|
231 | 210 | |
---|
232 | | -static const struct seq_operations ipoib_path_seq_ops = { |
---|
| 211 | +static const struct seq_operations ipoib_path_sops = { |
---|
233 | 212 | .start = ipoib_path_seq_start, |
---|
234 | 213 | .next = ipoib_path_seq_next, |
---|
235 | 214 | .stop = ipoib_path_seq_stop, |
---|
236 | 215 | .show = ipoib_path_seq_show, |
---|
237 | 216 | }; |
---|
238 | 217 | |
---|
239 | | -static int ipoib_path_open(struct inode *inode, struct file *file) |
---|
240 | | -{ |
---|
241 | | - struct seq_file *seq; |
---|
242 | | - int ret; |
---|
243 | | - |
---|
244 | | - ret = seq_open(file, &ipoib_path_seq_ops); |
---|
245 | | - if (ret) |
---|
246 | | - return ret; |
---|
247 | | - |
---|
248 | | - seq = file->private_data; |
---|
249 | | - seq->private = inode->i_private; |
---|
250 | | - |
---|
251 | | - return 0; |
---|
252 | | -} |
---|
253 | | - |
---|
254 | | -static const struct file_operations ipoib_path_fops = { |
---|
255 | | - .owner = THIS_MODULE, |
---|
256 | | - .open = ipoib_path_open, |
---|
257 | | - .read = seq_read, |
---|
258 | | - .llseek = seq_lseek, |
---|
259 | | - .release = seq_release |
---|
260 | | -}; |
---|
| 218 | +DEFINE_SEQ_ATTRIBUTE(ipoib_path); |
---|
261 | 219 | |
---|
262 | 220 | void ipoib_create_debug_files(struct net_device *dev) |
---|
263 | 221 | { |
---|
.. | .. |
---|
267 | 225 | snprintf(name, sizeof(name), "%s_mcg", dev->name); |
---|
268 | 226 | priv->mcg_dentry = debugfs_create_file(name, S_IFREG | S_IRUGO, |
---|
269 | 227 | ipoib_root, dev, &ipoib_mcg_fops); |
---|
270 | | - if (!priv->mcg_dentry) |
---|
271 | | - ipoib_warn(priv, "failed to create mcg debug file\n"); |
---|
272 | 228 | |
---|
273 | 229 | snprintf(name, sizeof(name), "%s_path", dev->name); |
---|
274 | 230 | priv->path_dentry = debugfs_create_file(name, S_IFREG | S_IRUGO, |
---|
275 | 231 | ipoib_root, dev, &ipoib_path_fops); |
---|
276 | | - if (!priv->path_dentry) |
---|
277 | | - ipoib_warn(priv, "failed to create path debug file\n"); |
---|
278 | 232 | } |
---|
279 | 233 | |
---|
280 | 234 | void ipoib_delete_debug_files(struct net_device *dev) |
---|
.. | .. |
---|
286 | 240 | priv->mcg_dentry = priv->path_dentry = NULL; |
---|
287 | 241 | } |
---|
288 | 242 | |
---|
289 | | -int ipoib_register_debugfs(void) |
---|
| 243 | +void ipoib_register_debugfs(void) |
---|
290 | 244 | { |
---|
291 | 245 | ipoib_root = debugfs_create_dir("ipoib", NULL); |
---|
292 | | - return ipoib_root ? 0 : -ENOMEM; |
---|
293 | 246 | } |
---|
294 | 247 | |
---|
295 | 248 | void ipoib_unregister_debugfs(void) |
---|