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 91. 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 332. 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 422.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 542.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. 82