Commit | Line | Data |
---|---|---|
0d695913 IPG |
1 | |
2 | Linux kernel WiMAX stack | |
3 | ||
4 | (C) 2008 Intel Corporation < linux-wimax@intel.com > | |
5 | ||
6 | This provides a basic Linux kernel WiMAX stack to provide a common | |
7 | control API for WiMAX devices, usable from kernel and user space. | |
8 | ||
9 | 1. Design | |
10 | ||
11 | The WiMAX stack is designed to provide for common WiMAX control | |
12 | services to current and future WiMAX devices from any vendor. | |
13 | ||
14 | Because currently there is only one and we don't know what would be the | |
15 | common services, the APIs it currently provides are very minimal. | |
16 | However, it is done in such a way that it is easily extensible to | |
17 | accommodate future requirements. | |
18 | ||
19 | The stack works by embedding a struct wimax_dev in your device's | |
20 | control structures. This provides a set of callbacks that the WiMAX | |
21 | stack will call in order to implement control operations requested by | |
22 | the user. As well, the stack provides API functions that the driver | |
23 | calls to notify about changes of state in the device. | |
24 | ||
25 | The stack exports the API calls needed to control the device to user | |
26 | space using generic netlink as a marshalling mechanism. You can access | |
27 | them using your own code or use the wrappers provided for your | |
28 | convenience in libwimax (in the wimax-tools package). | |
29 | ||
30 | For detailed information on the stack, please see | |
31 | include/linux/wimax.h. | |
32 | ||
33 | 2. Usage | |
34 | ||
35 | For usage in a driver (registration, API, etc) please refer to the | |
36 | instructions in the header file include/linux/wimax.h. | |
37 | ||
38 | When a device is registered with the WiMAX stack, a set of debugfs | |
39 | files will appear in /sys/kernel/debug/wimax:wmxX can tweak for | |
40 | control. | |
41 | ||
42 | 2.1. Obtaining debug information: debugfs entries | |
43 | ||
44 | The WiMAX stack is compiled, by default, with debug messages that can | |
45 | be used to diagnose issues. By default, said messages are disabled. | |
46 | ||
47 | The drivers will register debugfs entries that allow the user to tweak | |
48 | debug settings. | |
49 | ||
50 | Each driver, when registering with the stack, will cause a debugfs | |
51 | directory named wimax:DEVICENAME to be created; optionally, it might | |
52 | create more subentries below it. | |
53 | ||
54 | 2.1.1. Increasing debug output | |
55 | ||
56 | The files named *dl_* indicate knobs for controlling the debug output | |
57 | of different submodules of the WiMAX stack: | |
58 | * | |
59 | # find /sys/kernel/debug/wimax\:wmx0 -name \*dl_\* | |
60 | /sys/kernel/debug/wimax:wmx0/wimax_dl_stack | |
61 | /sys/kernel/debug/wimax:wmx0/wimax_dl_op_rfkill | |
62 | /sys/kernel/debug/wimax:wmx0/wimax_dl_op_reset | |
63 | /sys/kernel/debug/wimax:wmx0/wimax_dl_op_msg | |
64 | /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table | |
65 | /sys/kernel/debug/wimax:wmx0/wimax_dl_debugfs | |
66 | /sys/kernel/debug/wimax:wmx0/.... # other driver specific files | |
67 | ||
68 | NOTE: Of course, if debugfs is mounted in a directory other than | |
69 | /sys/kernel/debug, those paths will change. | |
70 | ||
71 | By reading the file you can obtain the current value of said debug | |
72 | level; by writing to it, you can set it. | |
73 | ||
74 | To increase the debug level of, for example, the id-table submodule, | |
75 | just write: | |
76 | ||
77 | $ echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table | |
78 | ||
79 | Increasing numbers yield increasing debug information; for details of | |
80 | what is printed and the available levels, check the source. The code | |
81 | uses 0 for disabled and increasing values until 8. |