Home | History | Annotate | Line # | Download | only in pcmcia
      1  1.4  gutterid /*	$NetBSD: if_malo_pcmciavar.h,v 1.4 2025/03/31 23:15:41 gutteridge Exp $	*/
      2  1.1  kiyohara /*	$OpenBSD: if_malovar.h,v 1.27 2007/10/09 20:37:32 mglocker Exp $ */
      3  1.1  kiyohara 
      4  1.1  kiyohara /*
      5  1.1  kiyohara  * Copyright (c) 2007 Marcus Glocker <mglocker (at) openbsd.org>
      6  1.1  kiyohara  *
      7  1.1  kiyohara  * Permission to use, copy, modify, and distribute this software for any
      8  1.1  kiyohara  * purpose with or without fee is hereby granted, provided that the above
      9  1.1  kiyohara  * copyright notice and this permission notice appear in all copies.
     10  1.1  kiyohara  *
     11  1.1  kiyohara  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     12  1.1  kiyohara  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     13  1.1  kiyohara  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     14  1.1  kiyohara  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     15  1.1  kiyohara  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     16  1.1  kiyohara  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     17  1.1  kiyohara  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     18  1.1  kiyohara  */
     19  1.1  kiyohara 
     20  1.1  kiyohara /* simplify bus space access */
     21  1.1  kiyohara #define MALO_READ_1(sc, reg) \
     22  1.1  kiyohara 	bus_space_read_1((sc)->sc_iot, (sc)->sc_ioh, (reg))
     23  1.1  kiyohara #define MALO_READ_2(sc, reg) \
     24  1.1  kiyohara 	bus_space_read_2((sc)->sc_iot, (sc)->sc_ioh, (reg))
     25  1.1  kiyohara #ifdef	__BUS_SPACE_HAS_STREAM_METHODS
     26  1.1  kiyohara #define	MALO_READ_MULTI_2(sc, reg, off, size) \
     27  1.1  kiyohara 	bus_space_read_multi_stream_2((sc)->sc_iot, (sc)->sc_ioh, (reg), (off), (size))
     28  1.1  kiyohara #else
     29  1.1  kiyohara #if _BYTE_ORDER == _LITTLE_ENDIAN
     30  1.1  kiyohara #define	MALO_READ_MULTI_2(sc, reg, off, size) \
     31  1.1  kiyohara 	bus_space_read_multi_2((sc)->sc_iot, (sc)->sc_ioh, (reg), (off), (size))
     32  1.1  kiyohara #else
     33  1.4  gutterid #error bus_space_read_multi_stream_2() is not supported
     34  1.1  kiyohara #endif
     35  1.1  kiyohara #endif
     36  1.1  kiyohara #define MALO_WRITE_1(sc, reg, val) \
     37  1.1  kiyohara 	bus_space_write_1((sc)->sc_iot, (sc)->sc_ioh, (reg), (val))
     38  1.1  kiyohara #define MALO_WRITE_2(sc, reg, val) \
     39  1.1  kiyohara 	bus_space_write_2((sc)->sc_iot, (sc)->sc_ioh, (reg), (val))
     40  1.1  kiyohara #ifdef	__BUS_SPACE_HAS_STREAM_METHODS
     41  1.1  kiyohara #define MALO_WRITE_MULTI_2(sc, reg, off, size) \
     42  1.1  kiyohara 	bus_space_write_multi_stream_2((sc)->sc_iot, (sc)->sc_ioh, (reg), (off), (size))
     43  1.1  kiyohara #else
     44  1.1  kiyohara #if _BYTE_ORDER == _LITTLE_ENDIAN
     45  1.1  kiyohara #define MALO_WRITE_MULTI_2(sc, reg, off, size) \
     46  1.1  kiyohara 	bus_space_write_multi_2((sc)->sc_iot, (sc)->sc_ioh, (reg), (off), (size))
     47  1.1  kiyohara #else
     48  1.4  gutterid #error bus_space_write_multi_stream_2() is not supported
     49  1.1  kiyohara #endif
     50  1.1  kiyohara #endif
     51  1.1  kiyohara 
     52  1.1  kiyohara /* miscellaneous */
     53  1.1  kiyohara #define MALO_FW_HELPER_BSIZE	256	/* helper FW block size */
     54  1.1  kiyohara #define MALO_FW_HELPER_LOADED	0x10	/* helper FW loaded */
     55  1.1  kiyohara #define MALO_FW_MAIN_MAXRETRY	20	/* main FW block resend max retry */
     56  1.1  kiyohara #define MALO_CMD_BUFFER_SIZE	4096	/* cmd buffer */
     57  1.1  kiyohara #define MALO_DATA_BUFFER_SIZE	4096	/* data buffer */
     58  1.1  kiyohara 
     59  1.1  kiyohara /* device flags */
     60  1.1  kiyohara #define MALO_DEVICE_ATTACHED	(1 << 0)
     61  1.1  kiyohara #define MALO_DEVICE_ENABLED	(1 << 1)
     62  1.1  kiyohara #define MALO_FW_LOADED		(1 << 2)
     63  1.1  kiyohara #define MALO_ASSOC_FAILED	(1 << 3)
     64  1.1  kiyohara 
     65  1.1  kiyohara /*
     66  1.1  kiyohara  * FW command structures
     67  1.1  kiyohara  */
     68  1.1  kiyohara struct malo_cmd_header {
     69  1.1  kiyohara 	uint16_t	cmd;
     70  1.1  kiyohara 	uint16_t	size;
     71  1.1  kiyohara 	uint16_t	seqnum;
     72  1.1  kiyohara 	uint16_t	result;
     73  1.1  kiyohara 	/* malo_cmd_body */
     74  1.1  kiyohara };
     75  1.1  kiyohara 
     76  1.1  kiyohara struct malo_cmd_body_spec {
     77  1.1  kiyohara 	uint16_t	hw_if_version;
     78  1.1  kiyohara 	uint16_t	hw_version;
     79  1.1  kiyohara 	uint16_t	num_of_wcb;
     80  1.1  kiyohara 	uint16_t	num_of_mcast;
     81  1.1  kiyohara 	uint8_t		macaddr[ETHER_ADDR_LEN];
     82  1.1  kiyohara 	uint16_t	regioncode;
     83  1.1  kiyohara 	uint16_t	num_of_antenna;
     84  1.1  kiyohara 	uint32_t	fw_version;
     85  1.1  kiyohara 	uint32_t	wcbbase;
     86  1.1  kiyohara 	uint32_t	rxpdrdptr;
     87  1.1  kiyohara 	uint32_t	rxpdwrptr;
     88  1.1  kiyohara 	uint32_t	fw_capinfo;
     89  1.1  kiyohara } __packed;
     90  1.1  kiyohara 
     91  1.1  kiyohara struct malo_cmd_body_scan {
     92  1.1  kiyohara 	uint8_t		bsstype;
     93  1.1  kiyohara 	uint8_t		bssid[ETHER_ADDR_LEN];
     94  1.1  kiyohara 	/* malo_cmd_tlv_ssid */
     95  1.1  kiyohara 	/* malo_cmd_tlv_chanlist */
     96  1.1  kiyohara 	/* malo_cmd_tlv_rates */
     97  1.1  kiyohara 	/* malo_cmd_tlv_numprobes */
     98  1.1  kiyohara } __packed;
     99  1.1  kiyohara 
    100  1.1  kiyohara struct malo_cmd_body_rsp_scan {
    101  1.1  kiyohara 	uint16_t	bufsize;
    102  1.1  kiyohara 	uint8_t		numofset;
    103  1.1  kiyohara } __packed;
    104  1.1  kiyohara struct malo_cmd_body_rsp_scan_set {
    105  1.1  kiyohara 	uint16_t	size;
    106  1.1  kiyohara 	uint8_t		bssid[ETHER_ADDR_LEN];
    107  1.1  kiyohara 	uint8_t		rssi;
    108  1.1  kiyohara 	uint8_t		timestamp[8];
    109  1.1  kiyohara 	uint16_t	beaconintvl;
    110  1.1  kiyohara 	uint16_t	capinfo;
    111  1.1  kiyohara 	uint8_t		data[0];
    112  1.1  kiyohara } __packed;
    113  1.1  kiyohara 
    114  1.1  kiyohara struct malo_cmd_body_auth {
    115  1.1  kiyohara 	uint8_t		peermac[ETHER_ADDR_LEN];
    116  1.1  kiyohara 	uint8_t		authtype;
    117  1.1  kiyohara } __packed;
    118  1.1  kiyohara 
    119  1.1  kiyohara #define MALO_WEP_ACTION_TYPE_ADD	0x02
    120  1.1  kiyohara #define MALO_WEP_ACTION_TYPE_REMOVE	0x04
    121  1.1  kiyohara #define MALO_WEP_ACTION_TYPE_DEFAULT	0x08
    122  1.1  kiyohara #define MALO_WEP_KEY_TYPE_40BIT		0x01
    123  1.1  kiyohara #define MALO_WEP_KEY_TYPE_104BIT	0x02
    124  1.1  kiyohara struct malo_cmd_body_wep {
    125  1.1  kiyohara 	uint16_t	action;
    126  1.1  kiyohara 	uint16_t	key_index;
    127  1.1  kiyohara 	uint8_t		key_type_1;
    128  1.1  kiyohara 	uint8_t		key_type_2;
    129  1.1  kiyohara 	uint8_t		key_type_3;
    130  1.1  kiyohara 	uint8_t		key_type_4;
    131  1.1  kiyohara 	uint8_t		key_value_1[16];
    132  1.1  kiyohara 	uint8_t		key_value_2[16];
    133  1.1  kiyohara 	uint8_t		key_value_3[16];
    134  1.1  kiyohara 	uint8_t		key_value_4[16];
    135  1.1  kiyohara } __packed;
    136  1.1  kiyohara 
    137  1.1  kiyohara #define MALO_OID_BSS		0x00
    138  1.1  kiyohara #define MALO_OID_RATE		0x01
    139  1.1  kiyohara #define MALO_OID_BCNPERIOD	0x02
    140  1.1  kiyohara #define MALO_OID_DTIMPERIOD	0x03
    141  1.1  kiyohara #define MALO_OID_ASSOCTIMEOUT	0x04
    142  1.1  kiyohara #define MALO_OID_RTSTRESH	0x05
    143  1.1  kiyohara #define MALO_OID_SHORTRETRY	0x06
    144  1.1  kiyohara #define MALO_OID_LONGRETRY	0x07
    145  1.1  kiyohara #define MALO_OID_FRAGTRESH	0x08
    146  1.1  kiyohara #define MALO_OID_80211D		0x09
    147  1.1  kiyohara #define MALO_OID_80211H		0x0a
    148  1.1  kiyohara struct malo_cmd_body_snmp {
    149  1.1  kiyohara 	uint16_t	action;
    150  1.1  kiyohara 	uint16_t	oid;
    151  1.1  kiyohara 	uint16_t	size;
    152  1.1  kiyohara 	uint8_t		data[128];
    153  1.1  kiyohara } __packed;
    154  1.1  kiyohara 
    155  1.1  kiyohara struct malo_cmd_body_radio {
    156  1.1  kiyohara 	uint16_t	action;
    157  1.1  kiyohara 	uint16_t	control;
    158  1.1  kiyohara } __packed;
    159  1.1  kiyohara 
    160  1.1  kiyohara struct malo_cmd_body_channel {
    161  1.1  kiyohara 	uint16_t	action;
    162  1.1  kiyohara 	uint16_t	channel;
    163  1.1  kiyohara 	uint16_t	rftype;
    164  1.1  kiyohara 	uint16_t	reserved;
    165  1.1  kiyohara 	uint8_t		channel_list[32];
    166  1.1  kiyohara } __packed;
    167  1.1  kiyohara 
    168  1.1  kiyohara struct malo_cmd_body_txpower {
    169  1.1  kiyohara 	uint16_t	action;
    170  1.1  kiyohara 	int16_t		txpower;
    171  1.1  kiyohara } __packed;
    172  1.1  kiyohara 
    173  1.1  kiyohara struct malo_cmd_body_antenna {
    174  1.1  kiyohara 	uint16_t	action;
    175  1.1  kiyohara 	uint16_t	antenna_mode;
    176  1.1  kiyohara } __packed;
    177  1.1  kiyohara 
    178  1.1  kiyohara struct malo_cmd_body_macctrl {
    179  1.1  kiyohara 	uint16_t	action;
    180  1.1  kiyohara 	uint16_t	reserved;
    181  1.1  kiyohara } __packed;
    182  1.1  kiyohara 
    183  1.1  kiyohara struct malo_cmd_body_macaddr {
    184  1.1  kiyohara 	uint16_t	action;
    185  1.1  kiyohara 	uint8_t		macaddr[ETHER_ADDR_LEN];
    186  1.1  kiyohara } __packed;
    187  1.1  kiyohara 
    188  1.1  kiyohara struct malo_cmd_body_assoc {
    189  1.1  kiyohara 	uint8_t		peermac[ETHER_ADDR_LEN];
    190  1.1  kiyohara 	uint16_t	capinfo;
    191  1.1  kiyohara 	uint16_t	listenintrv;
    192  1.1  kiyohara 	uint16_t	bcnperiod;
    193  1.1  kiyohara 	uint8_t		dtimperiod;
    194  1.1  kiyohara 	/* malo_cmd_tlv_ssid */
    195  1.1  kiyohara 	/* malo_cmd_tlv_phy */
    196  1.1  kiyohara 	/* malo_cmd_tlv_cf */
    197  1.1  kiyohara 	/* malo_cmd_tlv_rate */
    198  1.1  kiyohara } __packed;
    199  1.1  kiyohara 
    200  1.1  kiyohara struct malo_cmd_body_rsp_assoc {
    201  1.1  kiyohara 	uint16_t	capinfo;
    202  1.1  kiyohara 	uint16_t	status;
    203  1.1  kiyohara 	uint16_t	assoc_id;
    204  1.1  kiyohara 	uint16_t	info_len;
    205  1.1  kiyohara 	/* uint8_t	info[270] */
    206  1.1  kiyohara } __packed;
    207  1.1  kiyohara 
    208  1.1  kiyohara struct malo_cmd_body_80211d {
    209  1.1  kiyohara 	uint16_t	action;
    210  1.1  kiyohara 	/* malo_cmd_tlv_80211d */
    211  1.1  kiyohara } __packed;
    212  1.1  kiyohara 
    213  1.1  kiyohara struct malo_cmd_body_bgscan_config {
    214  1.1  kiyohara 	uint16_t	action;
    215  1.1  kiyohara 	uint8_t		enable;
    216  1.1  kiyohara 	uint8_t		bsstype;
    217  1.1  kiyohara 	uint8_t		chperscan;
    218  1.1  kiyohara 	uint8_t		discard;
    219  1.1  kiyohara 	uint16_t	reserved;
    220  1.1  kiyohara 	uint32_t	scanintvl;
    221  1.1  kiyohara 	uint32_t	storecond;
    222  1.1  kiyohara 	uint32_t	reportcond;
    223  1.1  kiyohara 	uint16_t	maxscanres;
    224  1.1  kiyohara } __packed;
    225  1.1  kiyohara 
    226  1.1  kiyohara struct malo_cmd_body_bgscan_query {
    227  1.1  kiyohara 	uint8_t		flush;
    228  1.1  kiyohara } __packed;
    229  1.1  kiyohara 
    230  1.1  kiyohara #define MALO_RATE_BITMAP_DS1	(1 << 0)
    231  1.1  kiyohara #define MALO_RATE_BITMAP_DS2	(1 << 1)
    232  1.1  kiyohara #define MALO_RATE_BITMAP_DS5	(1 << 2)
    233  1.1  kiyohara #define MALO_RATE_BITMAP_DS11	(1 << 3)
    234  1.1  kiyohara #define MALO_RATE_BITMAP_OFDM6	(1 << 5)
    235  1.1  kiyohara #define MALO_RATE_BITMAP_OFDM9	(1 << 6)
    236  1.1  kiyohara #define MALO_RATE_BITMAP_OFDM12	(1 << 7)
    237  1.1  kiyohara #define MALO_RATE_BITMAP_OFDM18	(1 << 8)
    238  1.1  kiyohara #define MALO_RATE_BITMAP_OFDM24	(1 << 9)
    239  1.1  kiyohara #define MALO_RATE_BITMAP_OFDM36	(1 << 10)
    240  1.1  kiyohara #define MALO_RATE_BITMAP_OFDM48	(1 << 11)
    241  1.1  kiyohara #define MALO_RATE_BITMAP_OFDM54	(1 << 12)
    242  1.1  kiyohara #define MALO_RATE_BITMAP_AUTO	0x1fef
    243  1.1  kiyohara struct malo_cmd_body_rate {
    244  1.1  kiyohara 	uint16_t	action;
    245  1.1  kiyohara 	uint16_t	hwauto;
    246  1.1  kiyohara 	uint16_t	ratebitmap;
    247  1.1  kiyohara } __packed;
    248  1.1  kiyohara 
    249  1.1  kiyohara /*
    250  1.1  kiyohara  * FW command TLV structures
    251  1.1  kiyohara  */
    252  1.1  kiyohara #define MALO_TLV_TYPE_SSID	0x0000
    253  1.1  kiyohara #define MALO_TLV_TYPE_RATES	0x0001
    254  1.1  kiyohara #define MALO_TLV_TYPE_PHY	0x0003
    255  1.1  kiyohara #define MALO_TLV_TYPE_CF	0x0004
    256  1.1  kiyohara #define MALO_TLV_TYPE_80211D	0x0007
    257  1.1  kiyohara #define MALO_TLV_TYPE_CHANLIST	0x0101
    258  1.1  kiyohara #define MALO_TLV_TYPE_NUMPROBES	0x0102
    259  1.1  kiyohara #define MALO_TLV_TYPE_PASSEID	0x010a
    260  1.1  kiyohara 
    261  1.1  kiyohara struct malo_cmd_tlv_ssid {
    262  1.1  kiyohara 	uint16_t	type;
    263  1.1  kiyohara 	uint16_t	size;
    264  1.1  kiyohara 	uint8_t		data[0];
    265  1.1  kiyohara } __packed;
    266  1.1  kiyohara 
    267  1.1  kiyohara struct malo_cmd_tlv_rates {
    268  1.1  kiyohara 	uint16_t	type;
    269  1.1  kiyohara 	uint16_t	size;
    270  1.1  kiyohara 	uint8_t		data[0];
    271  1.1  kiyohara } __packed;
    272  1.1  kiyohara 
    273  1.1  kiyohara struct malo_cmd_tlv_phy {
    274  1.1  kiyohara 	uint16_t	type;
    275  1.1  kiyohara 	uint16_t	size;
    276  1.1  kiyohara 	uint8_t		data[0];
    277  1.1  kiyohara } __packed;
    278  1.1  kiyohara 
    279  1.1  kiyohara struct malo_cmd_tlv_cf {
    280  1.1  kiyohara 	uint16_t	type;
    281  1.1  kiyohara 	uint16_t	size;
    282  1.1  kiyohara 	uint8_t		data[0];
    283  1.1  kiyohara } __packed;
    284  1.1  kiyohara 
    285  1.1  kiyohara struct malo_cmd_tlv_80211d_param {
    286  1.1  kiyohara 	uint8_t		firstchannel;
    287  1.1  kiyohara 	uint8_t		numchannels;
    288  1.1  kiyohara 	uint8_t		maxtxpower;
    289  1.1  kiyohara } __packed;
    290  1.1  kiyohara struct malo_cmd_tlv_80211d {
    291  1.1  kiyohara 	uint16_t	type;
    292  1.1  kiyohara 	uint16_t	size;
    293  1.1  kiyohara 	uint8_t		countrycode[3];
    294  1.1  kiyohara 	struct malo_cmd_tlv_80211d_param data[12];
    295  1.1  kiyohara } __packed;
    296  1.1  kiyohara 
    297  1.1  kiyohara struct malo_cmd_tlv_chanlist_param {
    298  1.1  kiyohara 	uint8_t		radiotype;
    299  1.1  kiyohara 	uint8_t		channumber;
    300  1.1  kiyohara 	uint8_t		scantype;
    301  1.1  kiyohara 	uint16_t	minscantime;
    302  1.1  kiyohara 	uint16_t	maxscantime;
    303  1.1  kiyohara } __packed;
    304  1.1  kiyohara #define CHANNELS	12
    305  1.1  kiyohara struct malo_cmd_tlv_chanlist {
    306  1.1  kiyohara 	uint16_t	type;
    307  1.1  kiyohara 	uint16_t	size;
    308  1.1  kiyohara 	struct malo_cmd_tlv_chanlist_param data[CHANNELS];
    309  1.1  kiyohara } __packed;
    310  1.1  kiyohara 
    311  1.1  kiyohara struct malo_cmd_tlv_numprobes {
    312  1.1  kiyohara 	uint16_t	type;
    313  1.1  kiyohara 	uint16_t	size;
    314  1.1  kiyohara 	uint16_t	numprobes;
    315  1.1  kiyohara } __packed;
    316  1.1  kiyohara 
    317  1.1  kiyohara struct malo_cmd_tlv_passeid {
    318  1.1  kiyohara 	uint16_t	type;
    319  1.1  kiyohara 	uint16_t	size;
    320  1.1  kiyohara 	uint8_t		data[0];
    321  1.1  kiyohara } __packed;
    322  1.1  kiyohara 
    323  1.1  kiyohara /* RX descriptor */
    324  1.1  kiyohara #define MALO_RX_STATUS_OK	0x0001
    325  1.1  kiyohara struct malo_rx_desc {
    326  1.1  kiyohara 	uint16_t	status;
    327  1.1  kiyohara 	uint8_t		snr;
    328  1.1  kiyohara 	uint8_t		control;
    329  1.1  kiyohara 	uint16_t	pkglen;
    330  1.1  kiyohara 	uint8_t		nf;
    331  1.1  kiyohara 	uint8_t		rate;
    332  1.1  kiyohara 	uint32_t	pkgoffset;
    333  1.1  kiyohara 	uint32_t	reserved1;
    334  1.1  kiyohara 	uint8_t		priority;
    335  1.1  kiyohara 	uint8_t		reserved2[3];
    336  1.1  kiyohara } __packed;
    337  1.1  kiyohara 
    338  1.1  kiyohara /* TX descriptor */
    339  1.1  kiyohara struct malo_tx_desc {
    340  1.1  kiyohara 	uint32_t	status;
    341  1.1  kiyohara 	uint32_t	control;
    342  1.1  kiyohara 	uint32_t	pkgoffset;
    343  1.1  kiyohara 	uint16_t	pkglen;
    344  1.2  christos 	uint8_t		dstaddr[ETHER_ADDR_LEN];
    345  1.1  kiyohara 	uint8_t		priority;
    346  1.1  kiyohara 	uint8_t		flags;
    347  1.1  kiyohara 	uint8_t		reserved[2];
    348  1.1  kiyohara } __packed;
    349  1.1  kiyohara 
    350  1.1  kiyohara /* scanned network */
    351  1.1  kiyohara struct malo_networks {
    352  1.1  kiyohara 	uint8_t		bssid[ETHER_ADDR_LEN];
    353  1.1  kiyohara 	uint8_t		rssi;
    354  1.1  kiyohara 	uint8_t		timestamp[8];
    355  1.1  kiyohara 	uint16_t	beaconintvl;
    356  1.1  kiyohara 	uint16_t	capinfo;
    357  1.1  kiyohara 	uint8_t		ssid[32];
    358  1.1  kiyohara 	uint8_t		rates[14];
    359  1.1  kiyohara 	uint8_t		channel;
    360  1.1  kiyohara } __packed;
    361  1.1  kiyohara 
    362  1.1  kiyohara /*
    363  1.1  kiyohara  * Softc
    364  1.1  kiyohara  */
    365  1.1  kiyohara struct malo_softc {
    366  1.1  kiyohara 	device_t		 sc_dev;
    367  1.1  kiyohara 	struct ethercom		 sc_ec;
    368  1.1  kiyohara #define sc_if	sc_ec.ec_if
    369  1.1  kiyohara 	struct ieee80211com	 sc_ic;
    370  1.3    nonaka 	void			*sc_soft_ih;
    371  1.1  kiyohara 	bus_space_tag_t		 sc_iot;
    372  1.1  kiyohara 	bus_space_handle_t	 sc_ioh;
    373  1.1  kiyohara 	int			 (*sc_newstate)
    374  1.1  kiyohara 				 (struct ieee80211com *, enum ieee80211_state,
    375  1.1  kiyohara 				     int);
    376  1.1  kiyohara 
    377  1.1  kiyohara 	int			 sc_flags;
    378  1.1  kiyohara 	uint8_t			*sc_fw_h;
    379  1.1  kiyohara 	uint8_t			*sc_fw_m;
    380  1.1  kiyohara 	size_t			 sc_fw_h_size;
    381  1.1  kiyohara 	size_t			 sc_fw_m_size;
    382  1.1  kiyohara 	int			 sc_cmd_ctxsave;
    383  1.1  kiyohara 	uint8_t			*sc_cmd;
    384  1.1  kiyohara 	uint8_t			*sc_data;
    385  1.1  kiyohara 	uint8_t			 sc_curchan;
    386  1.1  kiyohara 	int			 sc_net_num;
    387  1.1  kiyohara 	int			 sc_net_cur;
    388  1.1  kiyohara 	struct malo_networks	 sc_net[12];
    389  1.1  kiyohara 	callout_t		 sc_scan_ch;
    390  1.1  kiyohara #if NBPFILTER > 0
    391  1.1  kiyohara 	void			*sc_drvbpf;
    392  1.1  kiyohara #endif
    393  1.1  kiyohara 	kcondvar_t		 sc_cv;
    394  1.1  kiyohara 	kmutex_t		 sc_mtx;
    395  1.1  kiyohara };
    396