#include <compiler.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <sys/timer.h>
#include <sys/thread.h>
#include <sys/event.h>
#include <errno.h>
#include <netinet/if_ether.h>
#include <net/ether.h>
#include <net/if_var.h>
#include <dev/irqreg.h>
#include <dev/wlantypes.h>
#include <dev/pcmcia.h>
#include <dev/wlancfg.h>
#include <dev/wlan.h>
#include <dev/wlandrv.h>
Data Structures | |
struct | wi_card_ident |
struct | ieee80211_frame_addr4 |
struct | wi_frame |
struct | wi_ssid |
struct | LLCS_SNAP_HEADER |
Defines | |
#define | __WLANDRV_C__ |
#define | Debug(_x) |
#define | Debug2(_x) |
#define | panic |
#define | WI_LOCK(sc) NutEventWait(&hDeviceSemaphore,0) |
#define | WI_UNLOCK(sc) NutEventPost(&hDeviceSemaphore) |
#define | ieee80211_new_state(_a, _b, _c) _a->ic_state=_b |
#define | isset(_a, _b) (*_a & (1<<_b)) |
#define | CSR_WRITE_2(_a, _b, _c) pcmcia_WriteReg(_b,_c) |
#define | CSR_READ_2(_a, _b) pcmcia_ReadReg(_b) |
#define | WLAN_MIN_ETHERNET_FRAME_LEN 60 |
#define | WLAN_MAX_ETHERNET_FRAME_LEN 1514 |
#define | WLAN_ETHERNET_HEADER_LEN 14 |
#define | WI_INTRS (WI_EV_RX | WI_EV_ALLOC | WI_EV_INFO) |
Functions | |
void | DumpWlanData (BYTE *pBuffer, WORD wBufferSize) |
void | wi_stop (struct wi_softc *sc, int disable) |
void | RxThread (void *arg) |
int | wlandrv_ProbeDevice (void) |
int | wlandrv_Attach (device_t dev) |
void | wlandrv_Init (device_t dev) |
int | wlandrv_PutPacket (NUTDEVICE *dev, NETBUF *nb) |
int | wlandrv_IOCTL (NUTDEVICE *dev, int req, void *conf) |
Variables | |
struct wi_card_ident | wi_card_ident [] |
#define __WLANDRV_C__ |
#define Debug | ( | _x | ) |
Referenced by DumpWlanData(), RxThread(), wlandrv_Attach(), wlandrv_Init(), and wlandrv_PutPacket().
#define Debug2 | ( | _x | ) |
#define panic |
#define WI_LOCK | ( | sc | ) | NutEventWait(&hDeviceSemaphore,0) |
Referenced by RxThread(), wlandrv_Init(), wlandrv_IOCTL(), and wlandrv_PutPacket().
#define WI_UNLOCK | ( | sc | ) | NutEventPost(&hDeviceSemaphore) |
Referenced by RxThread(), wlandrv_Init(), wlandrv_IOCTL(), and wlandrv_PutPacket().
#define ieee80211_new_state | ( | _a, | |
_b, | |||
_c | |||
) | _a->ic_state=_b |
Referenced by wi_stop(), and wlandrv_Init().
#define isset | ( | _a, | |
_b | |||
) | (*_a & (1<<_b)) |
#define CSR_WRITE_2 | ( | _a, | |
_b, | |||
_c | |||
) | pcmcia_WriteReg(_b,_c) |
Referenced by RxThread(), wi_stop(), and wlandrv_Init().
#define CSR_READ_2 | ( | _a, | |
_b | |||
) | pcmcia_ReadReg(_b) |
#define WLAN_MIN_ETHERNET_FRAME_LEN 60 |
#define WLAN_MAX_ETHERNET_FRAME_LEN 1514 |
#define WLAN_ETHERNET_HEADER_LEN 14 |
#define WI_INTRS (WI_EV_RX | WI_EV_ALLOC | WI_EV_INFO) |
Referenced by RxThread(), and wlandrv_Init().
References Debug.
Referenced by wlandrv_PutPacket().
void wi_stop | ( | struct wi_softc * | sc, |
int | disable | ||
) |
References CSR_WRITE_2, ieee80211_new_state, IEEE80211_S_INIT, wi_softc::sc_enabled, wi_softc::sc_ic, wi_softc::sc_portnum, wi_softc::sc_scan_timer, wi_softc::sc_tx_timer, WI_CMD_DISABLE, wi_softc::wi_gone, and WI_INT_EN.
Referenced by wlandrv_Init(), and wlandrv_IOCTL().
void RxThread | ( | void * | arg | ) |
References CSR_WRITE_2, Debug, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, wi_softc::EventStatus, ifnet::if_recv, wi_softc::InterruptEvent, NutEventWait(), wi_softc::sc_enabled, WI_EV_ALLOC, WI_EV_INFO, WI_EV_RX, WI_EV_TX_EXC, wi_softc::wi_gone, WI_INT_EN, WI_INTRS, WI_LOCK, WI_UNLOCK, and wlandrv_Init().
Referenced by wlandrv_Init().
int wlandrv_ProbeDevice | ( | void | ) |
References NutSleep(), pcmcia_ReadReg(), pcmcia_WriteMem(), pcmcia_WriteReg(), RESET_BIT, RESET_EN_PORT, RESET_PORT, WI_COR_OFFSET, WI_COR_VALUE, WI_HFA384X_SWSUPPORT0_OFF, and WI_PRISM2STA_MAGIC.
Referenced by WlanInit().
int wlandrv_Attach | ( | device_t | dev | ) |
References ieee80211com::ChannelList, Debug, device_get_softc, ENXIO, htole16, ieee80211com::ic_caps, ieee80211com::ic_fixed_rate, ieee80211com::ic_ibss_chan, ieee80211com::ic_myaddr, ieee80211com::ic_opmode, ieee80211com::ic_state, ieee80211com::ic_sup_rates, IEEE80211_ADDR_LEN, IEEE80211_AUTH_OPEN, IEEE80211_C_AHDEMO, IEEE80211_C_HOSTAP, IEEE80211_C_IBSS, IEEE80211_C_MONITOR, IEEE80211_C_PMGT, IEEE80211_C_WEP, IEEE80211_M_STA, IEEE80211_MODE_11B, IEEE80211_RATE_MAXSIZE, IEEE80211_RATE_SIZE, IEEE80211_S_INIT, le16toh, NutEventPost(), ieee80211_rateset::rs_nrates, ieee80211_rateset::rs_rates, wi_softc::sc_authtype, wi_softc::sc_cnfauthmode, wi_softc::sc_dbm_offset, wi_softc::sc_firmware_type, wi_softc::sc_flags, wi_softc::sc_ibss_port, wi_softc::sc_ic, wi_softc::sc_max_datalen, wi_softc::sc_max_rssi, wi_softc::sc_min_rssi, wi_softc::sc_ntxbuf, wi_softc::sc_portnum, wi_softc::sc_roaming_mode, wi_softc::sc_sta_firmware_ver, wi_softc::sc_system_scale, wi_softc::wi_cmd_count, WI_DEFAULT_AUTHTYPE, WI_DEFAULT_PORT, WI_DEFAULT_ROAMING, WI_FLAGS_BUG_AUTOINC, WI_FLAGS_HAS_DBMADJUST, WI_FLAGS_HAS_DIVERSITY, WI_FLAGS_HAS_FRAGTHR, WI_FLAGS_HAS_MOR, WI_FLAGS_HAS_ROAMING, WI_FLAGS_HAS_SYSSCALE, WI_INTERSIL, WI_LUCENT, WI_LUCENT_DBM_OFFSET, WI_LUCENT_MAX_RSSI, WI_LUCENT_MIN_RSSI, WI_NTXBUF, WI_PRISM_DBM_OFFSET, WI_PRISM_MAX_RSSI, WI_PRISM_MIN_RSSI, WI_RID_CHANNEL_LIST, WI_RID_DATA_RATES, WI_RID_DBM_ADJUST, WI_RID_MAC_NODE, WI_RID_OWN_CHNL, WI_RID_WEP_AVAIL, and WI_SYMBOL.
Referenced by WlanInit().
void wlandrv_Init | ( | device_t | dev | ) |
References CSR_WRITE_2, wi_softc::d_fid, wi_softc::d_len, Debug, device_get_softc, EICR, FALSE, htole16, ieee80211com::ic_caps, ieee80211com::ic_des_essid, ieee80211com::ic_des_esslen, ieee80211com::ic_flags, ieee80211com::ic_ibss_chan, ieee80211com::ic_myaddr, ieee80211com::ic_opmode, IEEE80211_ADDR_LEN, IEEE80211_C_WEP, IEEE80211_CHAN_ANYC, IEEE80211_F_DESBSSID, IEEE80211_F_IBSSON, IEEE80211_F_PMGTON, IEEE80211_M_AHDEMO, IEEE80211_M_HOSTAP, IEEE80211_M_IBSS, IEEE80211_M_MONITOR, IEEE80211_M_STA, IEEE80211_MAX_LEN, ieee80211_new_state, IEEE80211_S_RUN, INT7, wi_softc::InterruptInitDone, memset(), NutRegisterIrqHandler(), NutThreadCreate(), wi_softc::PromiscuousMode, RxThread(), sbi, wi_softc::sc_buflen, wi_softc::sc_enabled, wi_softc::sc_firmware_type, wi_softc::sc_flags, wi_softc::sc_ibss_port, wi_softc::sc_ic, wi_softc::sc_max_datalen, wi_softc::sc_microwave_oven, wi_softc::sc_ntxbuf, wi_softc::sc_portnum, wi_softc::sc_roaming_mode, wi_softc::sc_system_scale, wi_softc::sc_txcur, wi_softc::sc_txd, wi_softc::sc_txnext, sig_INTERRUPT7, WI_CMD_DEBUG, WI_CMD_DISABLE, WI_CMD_ENABLE, WI_FLAGS_HAS_FRAGTHR, WI_FLAGS_HAS_MOR, WI_FLAGS_HAS_ROAMING, WI_FLAGS_HAS_SYSSCALE, WI_FLAGS_OUTRANGE, wi_softc::wi_gone, WI_INT_EN, WI_INTERSIL, WI_INTRS, WI_LOCK, WI_LUCENT, WI_PORT0, WI_PORTTYPE_ADHOC, WI_PORTTYPE_BSS, WI_PORTTYPE_HOSTAP, WI_RID_BASIC_RATE, WI_RID_CREATE_IBSS, WI_RID_DESIRED_SSID, WI_RID_DTIM_PERIOD, WI_RID_FRAG_THRESH, WI_RID_MAC_NODE, WI_RID_MAX_DATALEN, WI_RID_MAX_SLEEP, WI_RID_MICROWAVE_OVEN, WI_RID_NODENAME, WI_RID_OWN_BEACON_INT, WI_RID_OWN_CHNL, WI_RID_OWN_SSID, WI_RID_PM_ENABLED, WI_RID_PORTTYPE, WI_RID_PROMISC, WI_RID_ROAMING_MODE, WI_RID_RTS_THRESH, WI_RID_SUPPORT_RATE, WI_RID_SYSTEM_SCALE, wi_stop(), WI_SYMBOL, WI_TEST_MONITOR, and WI_UNLOCK.
Referenced by RxThread(), wlandrv_IOCTL(), and WlanInit().
References wi_softc::d_fid, wi_softc::d_len, Debug, _NUTDEVICE::dev_dcb, DumpWlanData(), IEEE80211_ADDR_LEN, memcpy(), memset(), _NETBUF::nb_ap, _NETBUF::nb_dl, _NETBUF::nb_nw, _NETBUF::nb_tp, wi_softc::sc_ntxbuf, wi_softc::sc_txcur, wi_softc::sc_txd, wi_softc::sc_txnext, SWAP, _NBDATA::sz, _NBDATA::vp, WI_CMD_TX, wi_softc::wi_gone, WI_LOCK, WI_RECLAIM, and WI_UNLOCK.
Referenced by WlanOutput().
int wlandrv_IOCTL | ( | NUTDEVICE * | dev, |
int | req, | ||
void * | conf | ||
) |
References _NUTDEVICE::dev_dcb, ieee80211com::ic_des_essid, ieee80211com::ic_des_esslen, ieee80211com::ic_flags, ieee80211com::ic_myaddr, ieee80211com::ic_nw_keys, ieee80211com::ic_opmode, ieee80211com::ic_wep_txkey, IEEE80211_ADDR_LEN, IEEE80211_F_WEPON, IEEE80211_M_IBSS, IEEE80211_M_STA, memcpy(), memset(), NULL, wi_softc::sc_ic, strlen(), wi_softc::wi_gone, WI_LOCK, WI_RID_CUR_TX_RATE, WI_RID_CURRENT_BSSID, WI_RID_CURRENT_CHAN, WI_RID_DBM_COMMS_QUAL, WI_RID_PORT_STAT, wi_stop(), WI_UNLOCK, ieee80211_wepkey::wk_key, ieee80211_wepkey::wk_len, WLAN_IOCTL_GET_MAC_ADDRESS, WLAN_IOCTL_GET_STATUS, WLAN_IOCTL_SET_CONFIG, WLAN_MODE_ADHOC, WLAN_MODE_STATION, WLAN_MODE_STOP, WLAN_USE_128BIT_WEP, WLAN_USE_64BIT_WEP, WLAN_USE_NO_WEP, WLAN_WEP_MAX_KEY_COUNT, WLAN_WEP_MAX_KEY_SIZE, and wlandrv_Init().
Referenced by WlanIOCtl().
struct wi_card_ident wi_card_ident[] |
{ {WI_NIC_LUCENT_ID, WI_NIC_LUCENT_STR, WI_LUCENT}, {WI_NIC_SONY_ID, WI_NIC_SONY_STR, WI_LUCENT}, {WI_NIC_LUCENT_EMB_ID, WI_NIC_LUCENT_EMB_STR, WI_LUCENT}, {WI_NIC_EVB2_ID, WI_NIC_EVB2_STR, WI_INTERSIL}, {WI_NIC_HWB3763_ID, WI_NIC_HWB3763_STR, WI_INTERSIL}, {WI_NIC_HWB3163_ID, WI_NIC_HWB3163_STR, WI_INTERSIL}, {WI_NIC_HWB3163B_ID, WI_NIC_HWB3163B_STR, WI_INTERSIL}, {WI_NIC_EVB3_ID, WI_NIC_EVB3_STR, WI_INTERSIL}, {WI_NIC_HWB1153_ID, WI_NIC_HWB1153_STR, WI_INTERSIL}, {WI_NIC_P2_SST_ID, WI_NIC_P2_SST_STR, WI_INTERSIL}, {WI_NIC_EVB2_SST_ID, WI_NIC_EVB2_SST_STR, WI_INTERSIL}, {WI_NIC_3842_EVA_ID, WI_NIC_3842_EVA_STR, WI_INTERSIL}, {WI_NIC_3842_PCMCIA_AMD_ID, WI_NIC_3842_PCMCIA_STR, WI_INTERSIL}, {WI_NIC_3842_PCMCIA_SST_ID, WI_NIC_3842_PCMCIA_STR, WI_INTERSIL}, {WI_NIC_3842_PCMCIA_ATL_ID, WI_NIC_3842_PCMCIA_STR, WI_INTERSIL}, {WI_NIC_3842_PCMCIA_ATS_ID, WI_NIC_3842_PCMCIA_STR, WI_INTERSIL}, {WI_NIC_3842_MINI_AMD_ID, WI_NIC_3842_MINI_STR, WI_INTERSIL}, {WI_NIC_3842_MINI_SST_ID, WI_NIC_3842_MINI_STR, WI_INTERSIL}, {WI_NIC_3842_MINI_ATL_ID, WI_NIC_3842_MINI_STR, WI_INTERSIL}, {WI_NIC_3842_MINI_ATS_ID, WI_NIC_3842_MINI_STR, WI_INTERSIL}, {WI_NIC_3842_PCI_AMD_ID, WI_NIC_3842_PCI_STR, WI_INTERSIL}, {WI_NIC_3842_PCI_SST_ID, WI_NIC_3842_PCI_STR, WI_INTERSIL}, {WI_NIC_3842_PCI_ATS_ID, WI_NIC_3842_PCI_STR, WI_INTERSIL}, {WI_NIC_3842_PCI_ATL_ID, WI_NIC_3842_PCI_STR, WI_INTERSIL}, {WI_NIC_P3_PCMCIA_AMD_ID, WI_NIC_P3_PCMCIA_STR, WI_INTERSIL}, {WI_NIC_P3_PCMCIA_SST_ID, WI_NIC_P3_PCMCIA_STR, WI_INTERSIL}, {WI_NIC_P3_PCMCIA_ATL_ID, WI_NIC_P3_PCMCIA_STR, WI_INTERSIL}, {WI_NIC_P3_PCMCIA_ATS_ID, WI_NIC_P3_PCMCIA_STR, WI_INTERSIL}, {WI_NIC_P3_MINI_AMD_ID, WI_NIC_P3_MINI_STR, WI_INTERSIL}, {WI_NIC_P3_MINI_SST_ID, WI_NIC_P3_MINI_STR, WI_INTERSIL}, {WI_NIC_P3_MINI_ATL_ID, WI_NIC_P3_MINI_STR, WI_INTERSIL}, {WI_NIC_P3_MINI_ATS_ID, WI_NIC_P3_MINI_STR, WI_INTERSIL}, {0, NULL, 0}, }