⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wavelan.p.h

📁 GNU Mach 微内核源代码, 基于美国卡内基美隆大学的 Mach 研究项目
💻 H
📖 第 1 页 / 共 2 页
字号:
/* *	Wavelan ISA driver * *		Jean II - HPLB '96 * * Reorganisation and extension of the driver. * * This file contain all definition and declarations necessary for the * wavelan isa driver. This file is a private header, so it should * be included only on wavelan.c !!! */#ifndef WAVELAN_P_H#define WAVELAN_P_H/************************** DOCUMENTATION **************************//* * This driver provide a Linux interface to the Wavelan ISA hardware * The Wavelan is a product of Lucent ("http://wavelan.netland.nl/"). * This division was formerly part of NCR and then AT&T. * Wavelan are also distributed by DEC (RoamAbout), Digital Ocean and * Aironet (Arlan). If you have one of those product, you will need to * make some changes below... * * This driver is still a beta software. A lot of bugs have been corrected, * a lot of functionalities are implemented, the whole appear pretty stable, * but there is still some area of improvement (encryption, performance...). * * To know how to use this driver, read the NET3 HOWTO. * If you want to exploit the many other fonctionalities, look comments * in the code... * * This driver is the result of the effort of many peoples (see below). *//* ------------------------ SPECIFIC NOTES ------------------------ *//* * wavelan.o is darn too big * ------------------------- *	That's true ! There is a very simple way to reduce the driver *	object by 33% (yes !). Comment out the following line : *		#include <linux/wireless.h> * * MAC address and hardware detection : * ---------------------------------- *	The detection code of the wavelan chech that the first 3 *	octets of the MAC address fit the company code. This type of *	detection work well for AT&T cards (because the AT&T code is *	hardcoded in wavelan.h), but of course will fail for other *	manufacturer. * *	If you are sure that your card is derived from the wavelan, *	here is the way to configure it : *	1) Get your MAC address *		a) With your card utilities (wfreqsel, instconf, ...) *		b) With the driver : *			o compile the kernel with DEBUG_CONFIG_INFO enabled *			o Boot and look the card messages *	2) Set your MAC code (3 octets) in MAC_ADDRESSES[][3] (wavelan.h) *	3) Compile & verify *	4) Send me the MAC code - I will include it in the next version... * * "CU Inactive" message at boot up : * ----------------------------------- *	It seem that there is some weird timings problems with the *	Intel microcontroler. In fact, this message is triggered by a *	bad reading of the on board ram the first time we read the *	control block. If you ignore this message, all is ok (but in *	fact, currently, it reset the wavelan hardware). * *	To get rid of that problem, there is two solution. The first *	is to add a dummy read of the scb at the end of *	wv_82586_config. The second is to add the timers *	wv_synchronous_cmd and wv_ack (the udelay just after the *	waiting loops - seem that the controler is not totally ready *	when it say it is !). * *	In the current code, I use the second solution (to be *	consistent with the original solution of Bruce Janson). *//* --------------------- WIRELESS EXTENSIONS --------------------- *//* * This driver is the first one to support "wireless extensions". * This set of extensions provide you some way to control the wireless * caracteristics of the hardware in a standard way and support for * applications for taking advantage of it (like Mobile IP). * * You will need to enable the CONFIG_NET_RADIO define in the kernel * configuration to enable the wireless extensions (this is the one * giving access to the radio network device choice). * * It might also be a good idea as well to fetch the wireless tools to * configure the device and play a bit. *//* ---------------------------- FILES ---------------------------- *//* * wavelan.c :		The actual code for the driver - C functions * * wavelan.p.h :	Private header : local types / vars for the driver * * wavelan.h :		Description of the hardware interface & structs * * i82586.h :		Description if the Ethernet controler *//* --------------------------- HISTORY --------------------------- *//* * (Made with information in drivers headers. It may not be accurate, * and I garantee nothing except my best effort...) * * The history of the Wavelan drivers is as complicated as history of * the Wavelan itself (NCR -> AT&T -> Lucent). * * All started with Anders Klemets <klemets@paul.rutgers.edu>, * writting a Wavelan ISA driver for the MACH microkernel. Girish * Welling <welling@paul.rutgers.edu> had also worked on it. * Keith Moore modify this for the Pcmcia hardware. *  * Robert Morris <rtm@das.harvard.edu> port these two drivers to BSDI * and add specific Pcmcia support (there is currently no equivalent * of the PCMCIA package under BSD...). * * Jim Binkley <jrb@cs.pdx.edu> port both BSDI drivers to freeBSD. * * Bruce Janson <bruce@cs.usyd.edu.au> port the BSDI ISA driver to Linux. * * Anthony D. Joseph <adj@lcs.mit.edu> started modify Bruce driver * (with help of the BSDI PCMCIA driver) for PCMCIA. * Yunzhou Li <yunzhou@strat.iol.unh.edu> finished is work. * Joe Finney <joe@comp.lancs.ac.uk> patched the driver to start * correctly 2.00 cards (2.4 GHz with frequency selection). * David Hinds <dhinds@hyper.stanford.edu> integrated the whole in his * Pcmcia package (+ bug corrections). * * I (Jean Tourrilhes - jt@hplb.hpl.hp.com) then started to make some * patchs to the Pcmcia driver. After, I added code in the ISA driver * for Wireless Extensions and full support of frequency selection * cards. Then, I've done the same to the Pcmcia driver + some * reorganisation. Finally, I came back to the ISA driver to * upgrade it at the same level as the Pcmcia one and reorganise * the code * Loeke Brederveld <lbrederv@wavelan.com> from Lucent has given me * much needed informations on the Wavelan hardware. *//* The original copyrights and litteratures mention others names and * credits. I don't know what there part in this development was... *//* By the way : for the copyright & legal stuff : * Almost everybody wrote code under GNU or BSD license (or alike), * and want that their original copyright remain somewhere in the * code (for myself, I go with the GPL). * Nobody want to take responsibility for anything, except the fame... *//* --------------------------- CREDITS --------------------------- *//* * This software was developed as a component of the * Linux operating system. * It is based on other device drivers and information * either written or supplied by: *	Ajay Bakre (bakre@paul.rutgers.edu), *	Donald Becker (becker@cesdis.gsfc.nasa.gov), *	Loeke Brederveld (Loeke.Brederveld@Utrecht.NCR.com), *	Brent Elphick <belphick@uwaterloo.ca>, *	Anders Klemets (klemets@it.kth.se), *	Vladimir V. Kolpakov (w@stier.koenig.ru), *	Marc Meertens (Marc.Meertens@Utrecht.NCR.com), *	Pauline Middelink (middelin@polyware.iaf.nl), *	Robert Morris (rtm@das.harvard.edu), *	Jean Tourrilhes (jt@hplb.hpl.hp.com), *	Girish Welling (welling@paul.rutgers.edu), *	Clark Woodworth <clark@hiway1.exit109.com> *	Yongguang Zhang <ygz@isl.hrl.hac.com>... * * Thanks go also to: *	James Ashton (jaa101@syseng.anu.edu.au), *	Alan Cox (iialan@iiit.swan.ac.uk), *	Allan Creighton (allanc@cs.usyd.edu.au), *	Matthew Geier (matthew@cs.usyd.edu.au), *	Remo di Giovanni (remo@cs.usyd.edu.au), *	Eckhard Grah (grah@wrcs1.urz.uni-wuppertal.de), *	Vipul Gupta (vgupta@cs.binghamton.edu), *	Mark Hagan (mhagan@wtcpost.daytonoh.NCR.COM), *	Tim Nicholson (tim@cs.usyd.edu.au), *	Ian Parkin (ian@cs.usyd.edu.au), *	John Rosenberg (johnr@cs.usyd.edu.au), *	George Rossi (george@phm.gov.au), *	Arthur Scott (arthur@cs.usyd.edu.au), *	Stanislav Sinyagin <stas@isf.ru> *	Peter Storey, * for their assistance and advice. * * Additional Credits: * * My developpement has been done under Linux 2.0.x (Debian 1.1) with *	an HP Vectra XP/60. * *//* ------------------------- IMPROVEMENTS ------------------------- *//* * I proudly present : * * Changes mades in first pre-release : * ---------------------------------- *	- Reorganisation of the code, function name change *	- Creation of private header (wavelan.p.h) *	- Reorganised debug messages *	- More comments, history, ... *	- mmc_init : configure the PSA if not done *	- mmc_init : correct default value of level threshold for pcmcia *	- mmc_init : 2.00 detection better code for 2.00 init *	- better info at startup *	- irq setting (note : this setting is permanent...) *	- Watchdog : change strategy (+ solve module removal problems) *	- add wireless extensions (ioctl & get_wireless_stats) *	  get/set nwid/frequency on fly, info for /proc/net/wireless *	- More wireless extension : SETSPY and GETSPY *	- Make wireless extensions optional *	- Private ioctl to set/get quality & level threshold, histogram *	- Remove /proc/net/wavelan *	- Supress useless stuff from lp (net_local) *	- kernel 2.1 support (copy_to/from_user instead of memcpy_to/fromfs) *	- Add message level (debug stuff in /var/adm/debug & errors not *	  displayed at console and still in /var/adm/messages) *	- multi device support *	- Start fixing the probe (init code) *	- More inlines *	- man page *	- Lot of others minor details & cleanups * * Changes made in second pre-release : * ---------------------------------- *	- Cleanup init code (probe & module init) *	- Better multi device support (module) *	- name assignement (module) * * Changes made in third pre-release : * --------------------------------- *	- Be more conservative on timers *	- Preliminary support for multicast (I still lack some details...) * * Changes made in fourth pre-release : * ---------------------------------- *	- multicast (revisited and finished) *	- Avoid reset in set_multicast_list (a really big hack) *	  if somebody could apply this code for other i82586 based driver... *	- Share on board memory 75% RU / 25% CU (instead of 50/50) * * Changes made for release in 2.1.15 : * ---------------------------------- *	- Change the detection code for multi manufacturer code support * * Changes made for release in 2.1.17 : * ---------------------------------- *	- Update to wireless extensions changes *	- Silly bug in card initial configuration (psa_conf_status) * * Changes made for release in 2.1.27 & 2.0.30 : * ------------------------------------------- *	- Small bug in debug code (probably not the last one...) *	- Remove extern kerword for wavelan_probe() *	- Level threshold is now a standard wireless extension (version 4 !) * * Changes made for release in 2.1.36 : * ---------------------------------- *	- Encryption setting from Brent Elphick (thanks a lot !) *	- 'ioaddr' to 'u_long' for the Alpha (thanks to Stanislav Sinyagin) * * Wishes & dreams : * --------------- *	- Roaming *//***************************** INCLUDES *****************************/#include	<linux/module.h>#include	<linux/kernel.h>#include	<linux/sched.h>#include	<linux/types.h>#include	<linux/fcntl.h>#include	<linux/interrupt.h>#include	<linux/stat.h>#include	<linux/ptrace.h>#include	<linux/ioport.h>#include	<linux/in.h>#include	<linux/string.h>#include	<linux/delay.h>#include	<asm/system.h>#include	<asm/bitops.h>#include	<asm/io.h>#include	<asm/dma.h>#include	<linux/errno.h>#include	<linux/netdevice.h>#include	<linux/etherdevice.h>#include	<linux/skbuff.h>#include	<linux/malloc.h>#include	<linux/timer.h>#include <linux/wireless.h>		/* Wireless extensions *//* Wavelan declarations */#ifdef MACH#include	<linuxdev/drivers/net/i82586.h>#else#include	"i82586.h"#endif#include	"wavelan.h"/****************************** DEBUG ******************************/#undef DEBUG_MODULE_TRACE	/* Module insertion/removal */#undef DEBUG_CALLBACK_TRACE	/* Calls made by Linux */#undef DEBUG_INTERRUPT_TRACE	/* Calls to handler */#undef DEBUG_INTERRUPT_INFO	/* type of interrupt & so on */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -