]>
Commit | Line | Data |
---|---|---|
04672fe6 | 1 | // SPDX-License-Identifier: GPL-2.0-only |
8987691a IPG |
2 | /* |
3 | * Intel Wireless WiMAX Connection 2400m | |
4 | * Sysfs interfaces to show driver and device information | |
5 | * | |
8987691a IPG |
6 | * Copyright (C) 2007 Intel Corporation <linux-wimax@intel.com> |
7 | * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> | |
8987691a IPG |
8 | */ |
9 | ||
10 | #include <linux/netdevice.h> | |
11 | #include <linux/etherdevice.h> | |
12 | #include <linux/spinlock.h> | |
13 | #include <linux/device.h> | |
14 | #include "i2400m.h" | |
15 | ||
16 | ||
17 | #define D_SUBMODULE sysfs | |
18 | #include "debug-levels.h" | |
19 | ||
20 | ||
21 | /* | |
22 | * Set the idle timeout (msecs) | |
23 | * | |
24 | * FIXME: eventually this should be a common WiMAX stack method, but | |
25 | * would like to wait to see how other devices manage it. | |
26 | */ | |
27 | static | |
28 | ssize_t i2400m_idle_timeout_store(struct device *dev, | |
29 | struct device_attribute *attr, | |
30 | const char *buf, size_t size) | |
31 | { | |
32 | ssize_t result; | |
33 | struct i2400m *i2400m = net_dev_to_i2400m(to_net_dev(dev)); | |
34 | unsigned val; | |
35 | ||
36 | result = -EINVAL; | |
37 | if (sscanf(buf, "%u\n", &val) != 1) | |
38 | goto error_no_unsigned; | |
39 | if (val != 0 && (val < 100 || val > 300000 || val % 100 != 0)) { | |
40 | dev_err(dev, "idle_timeout: %u: invalid msecs specification; " | |
41 | "valid values are 0, 100-300000 in 100 increments\n", | |
42 | val); | |
43 | goto error_bad_value; | |
44 | } | |
45 | result = i2400m_set_idle_timeout(i2400m, val); | |
46 | if (result >= 0) | |
47 | result = size; | |
48 | error_no_unsigned: | |
49 | error_bad_value: | |
50 | return result; | |
51 | } | |
52 | ||
53 | static | |
6cbaefb4 | 54 | DEVICE_ATTR_WO(i2400m_idle_timeout); |
8987691a IPG |
55 | |
56 | static | |
57 | struct attribute *i2400m_dev_attrs[] = { | |
58 | &dev_attr_i2400m_idle_timeout.attr, | |
59 | NULL, | |
60 | }; | |
61 | ||
62 | struct attribute_group i2400m_dev_attr_group = { | |
63 | .name = NULL, /* we want them in the same directory */ | |
64 | .attrs = i2400m_dev_attrs, | |
65 | }; |