82 lines
		
	
	
	
		
			3.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
	
		
			3.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | 
 | ||
|  |    Linux kernel WiMAX stack | ||
|  | 
 | ||
|  |    (C) 2008 Intel Corporation < linux-wimax@intel.com > | ||
|  | 
 | ||
|  |    This provides a basic Linux kernel WiMAX stack to provide a common | ||
|  |    control API for WiMAX devices, usable from kernel and user space. | ||
|  | 
 | ||
|  | 1. Design | ||
|  | 
 | ||
|  |    The WiMAX stack is designed to provide for common WiMAX control | ||
|  |    services to current and future WiMAX devices from any vendor. | ||
|  | 
 | ||
|  |    Because currently there is only one and we don't know what would be the | ||
|  |    common services, the APIs it currently provides are very minimal. | ||
|  |    However, it is done in such a way that it is easily extensible to | ||
|  |    accommodate future requirements. | ||
|  | 
 | ||
|  |    The stack works by embedding a struct wimax_dev in your device's | ||
|  |    control structures. This provides a set of callbacks that the WiMAX | ||
|  |    stack will call in order to implement control operations requested by | ||
|  |    the user. As well, the stack provides API functions that the driver | ||
|  |    calls to notify about changes of state in the device. | ||
|  | 
 | ||
|  |    The stack exports the API calls needed to control the device to user | ||
|  |    space using generic netlink as a marshalling mechanism. You can access | ||
|  |    them using your own code or use the wrappers provided for your | ||
|  |    convenience in libwimax (in the wimax-tools package). | ||
|  | 
 | ||
|  |    For detailed information on the stack, please see | ||
|  |    include/linux/wimax.h. | ||
|  | 
 | ||
|  | 2. Usage | ||
|  | 
 | ||
|  |    For usage in a driver (registration, API, etc) please refer to the | ||
|  |    instructions in the header file include/linux/wimax.h. | ||
|  | 
 | ||
|  |    When a device is registered with the WiMAX stack, a set of debugfs | ||
|  |    files will appear in /sys/kernel/debug/wimax:wmxX can tweak for | ||
|  |    control. | ||
|  | 
 | ||
|  | 2.1. Obtaining debug information: debugfs entries | ||
|  | 
 | ||
|  |    The WiMAX stack is compiled, by default, with debug messages that can | ||
|  |    be used to diagnose issues. By default, said messages are disabled. | ||
|  | 
 | ||
|  |    The drivers will register debugfs entries that allow the user to tweak | ||
|  |    debug settings. | ||
|  | 
 | ||
|  |    Each driver, when registering with the stack, will cause a debugfs | ||
|  |    directory named wimax:DEVICENAME to be created; optionally, it might | ||
|  |    create more subentries below it. | ||
|  | 
 | ||
|  | 2.1.1. Increasing debug output | ||
|  | 
 | ||
|  |    The files named *dl_* indicate knobs for controlling the debug output | ||
|  |    of different submodules of the WiMAX stack: | ||
|  |      * | ||
|  | # find /sys/kernel/debug/wimax\:wmx0 -name \*dl_\* | ||
|  | /sys/kernel/debug/wimax:wmx0/wimax_dl_stack | ||
|  | /sys/kernel/debug/wimax:wmx0/wimax_dl_op_rfkill | ||
|  | /sys/kernel/debug/wimax:wmx0/wimax_dl_op_reset | ||
|  | /sys/kernel/debug/wimax:wmx0/wimax_dl_op_msg | ||
|  | /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table | ||
|  | /sys/kernel/debug/wimax:wmx0/wimax_dl_debugfs | ||
|  | /sys/kernel/debug/wimax:wmx0/.... # other driver specific files | ||
|  | 
 | ||
|  |        NOTE: Of course, if debugfs is mounted in a directory other than | ||
|  |        /sys/kernel/debug, those paths will change. | ||
|  | 
 | ||
|  |    By reading the file you can obtain the current value of said debug | ||
|  |    level; by writing to it, you can set it. | ||
|  | 
 | ||
|  |    To increase the debug level of, for example, the id-table submodule, | ||
|  |    just write: | ||
|  | 
 | ||
|  | $ echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table | ||
|  | 
 | ||
|  |    Increasing numbers yield increasing debug information; for details of | ||
|  |    what is printed and the available levels, check the source. The code | ||
|  |    uses 0 for disabled and increasing values until 8. |