Bug Summary

File:dev/ic/atw.c
Warning:line 972, column 2
Value stored to 'lpc' is never read

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple amd64-unknown-openbsd7.0 -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name atw.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model static -mframe-pointer=all -relaxed-aliasing -fno-rounding-math -mconstructor-aliases -ffreestanding -mcmodel=kernel -target-cpu x86-64 -target-feature +retpoline-indirect-calls -target-feature +retpoline-indirect-branches -target-feature -sse2 -target-feature -sse -target-feature -3dnow -target-feature -mmx -target-feature +save-args -disable-red-zone -no-implicit-float -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/sys/arch/amd64/compile/GENERIC.MP/obj -nostdsysteminc -nobuiltininc -resource-dir /usr/local/lib/clang/13.0.0 -I /usr/src/sys -I /usr/src/sys/arch/amd64/compile/GENERIC.MP/obj -I /usr/src/sys/arch -I /usr/src/sys/dev/pci/drm/include -I /usr/src/sys/dev/pci/drm/include/uapi -I /usr/src/sys/dev/pci/drm/amd/include/asic_reg -I /usr/src/sys/dev/pci/drm/amd/include -I /usr/src/sys/dev/pci/drm/amd/amdgpu -I /usr/src/sys/dev/pci/drm/amd/display -I /usr/src/sys/dev/pci/drm/amd/display/include -I /usr/src/sys/dev/pci/drm/amd/display/dc -I /usr/src/sys/dev/pci/drm/amd/display/amdgpu_dm -I /usr/src/sys/dev/pci/drm/amd/pm/inc -I /usr/src/sys/dev/pci/drm/amd/pm/swsmu -I /usr/src/sys/dev/pci/drm/amd/pm/swsmu/smu11 -I /usr/src/sys/dev/pci/drm/amd/pm/swsmu/smu12 -I /usr/src/sys/dev/pci/drm/amd/pm/powerplay -I /usr/src/sys/dev/pci/drm/amd/pm/powerplay/hwmgr -I /usr/src/sys/dev/pci/drm/amd/pm/powerplay/smumgr -I /usr/src/sys/dev/pci/drm/amd/display/dc/inc -I /usr/src/sys/dev/pci/drm/amd/display/dc/inc/hw -I /usr/src/sys/dev/pci/drm/amd/display/dc/clk_mgr -I /usr/src/sys/dev/pci/drm/amd/display/modules/inc -I /usr/src/sys/dev/pci/drm/amd/display/modules/hdcp -I /usr/src/sys/dev/pci/drm/amd/display/dmub/inc -I /usr/src/sys/dev/pci/drm/i915 -D DDB -D DIAGNOSTIC -D KTRACE -D ACCOUNTING -D KMEMSTATS -D PTRACE -D POOL_DEBUG -D CRYPTO -D SYSVMSG -D SYSVSEM -D SYSVSHM -D UVM_SWAP_ENCRYPT -D FFS -D FFS2 -D FFS_SOFTUPDATES -D UFS_DIRHASH -D QUOTA -D EXT2FS -D MFS -D NFSCLIENT -D NFSSERVER -D CD9660 -D UDF -D MSDOSFS -D FIFO -D FUSE -D SOCKET_SPLICE -D TCP_ECN -D TCP_SIGNATURE -D INET6 -D IPSEC -D PPP_BSDCOMP -D PPP_DEFLATE -D PIPEX -D MROUTING -D MPLS -D BOOT_CONFIG -D USER_PCICONF -D APERTURE -D MTRR -D NTFS -D HIBERNATE -D PCIVERBOSE -D USBVERBOSE -D WSDISPLAY_COMPAT_USL -D WSDISPLAY_COMPAT_RAWKBD -D WSDISPLAY_DEFAULTSCREENS=6 -D X86EMU -D ONEWIREVERBOSE -D MULTIPROCESSOR -D MAXUSERS=80 -D _KERNEL -D CONFIG_DRM_AMD_DC_DCN3_0 -O2 -Wno-pointer-sign -Wno-address-of-packed-member -Wno-constant-conversion -Wno-unused-but-set-variable -Wno-gnu-folding-constant -fdebug-compilation-dir=/usr/src/sys/arch/amd64/compile/GENERIC.MP/obj -ferror-limit 19 -fwrapv -D_RET_PROTECTOR -ret-protector -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -analyzer-output=html -faddrsig -o /usr/obj/sys/arch/amd64/compile/GENERIC.MP/scan-build/2022-01-12-131800-47421-1 -x c /usr/src/sys/dev/ic/atw.c
1/* $OpenBSD: atw.c,v 1.99 2022/01/09 05:42:38 jsg Exp $ */
2/* $NetBSD: atw.c,v 1.69 2004/07/23 07:07:55 dyoung Exp $ */
3
4/*-
5 * Copyright (c) 1998, 1999, 2000, 2002, 2003, 2004 The NetBSD Foundation, Inc.
6 * All rights reserved.
7 *
8 * This code is derived from software contributed to The NetBSD Foundation
9 * by David Young, by Jason R. Thorpe, and by Charles M. Hannum.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 */
32
33/*
34 * Device driver for the ADMtek ADM8211 802.11 MAC/BBP.
35 */
36
37#include "bpfilter.h"
38
39#include <sys/param.h>
40#include <sys/systm.h>
41#include <sys/mbuf.h>
42#include <sys/malloc.h>
43#include <sys/kernel.h>
44#include <sys/socket.h>
45#include <sys/ioctl.h>
46#include <sys/errno.h>
47#include <sys/device.h>
48#include <sys/time.h>
49#include <sys/endian.h>
50
51#include <net/if.h>
52#include <net/if_media.h>
53
54#if NBPFILTER1 > 0
55#include <net/bpf.h>
56#endif
57
58#include <netinet/in.h>
59#include <netinet/if_ether.h>
60
61#include <net80211/ieee80211_var.h>
62#include <net80211/ieee80211_radiotap.h>
63
64#include <machine/bus.h>
65#include <machine/intr.h>
66
67#include <dev/ic/atwreg.h>
68#include <dev/ic/rf3000reg.h>
69#include <dev/ic/si4136reg.h>
70#include <dev/ic/atwvar.h>
71#include <dev/ic/smc93cx6var.h>
72
73/* XXX TBD open questions
74 *
75 *
76 * When should I set DSSS PAD in reg 0x15 of RF3000? In 1-2Mbps
77 * modes only, or all modes (5.5-11 Mbps CCK modes, too?) Does the MAC
78 * handle this for me?
79 *
80 */
81/* device attachment
82 *
83 * print TOFS[012]
84 *
85 * device initialization
86 *
87 * clear ATW_FRCTL_MAXPSP to disable max power saving
88 * set ATW_TXBR_ALCUPDATE to enable ALC
89 * set TOFS[012]? (hope not)
90 * disable rx/tx
91 * set ATW_PAR_SWR (software reset)
92 * wait for ATW_PAR_SWR clear
93 * disable interrupts
94 * ack status register
95 * enable interrupts
96 *
97 * rx/tx initialization
98 *
99 * disable rx/tx w/ ATW_NAR_SR, ATW_NAR_ST
100 * allocate and init descriptor rings
101 * write ATW_PAR_DSL (descriptor skip length)
102 * write descriptor base addrs: ATW_TDBD, ATW_TDBP, write ATW_RDB
103 * write ATW_NAR_SQ for one/both transmit descriptor rings
104 * write ATW_NAR_SQ for one/both transmit descriptor rings
105 * enable rx/tx w/ ATW_NAR_SR, ATW_NAR_ST
106 *
107 * rx/tx end
108 *
109 * stop DMA
110 * disable rx/tx w/ ATW_NAR_SR, ATW_NAR_ST
111 * flush tx w/ ATW_NAR_HF
112 *
113 * scan
114 *
115 * initialize rx/tx
116 *
117 * BSS join: (re)association response
118 *
119 * set ATW_FRCTL_AID
120 *
121 * optimizations ???
122 *
123 */
124
125#define ATW_REFSLAVE /* slavishly do what the reference driver does */
126
127int atw_bbp_io_enable_delay = 20 * 1000;
128int atw_bbp_io_disable_delay = 2 * 1000;
129int atw_writewep_delay = 1000;
130int atw_beacon_len_adjust = 4;
131int atw_dwelltime = 200;
132int atw_xindiv2 = 0;
133
134#ifdef ATW_DEBUG
135int atw_debug = 0;
136
137#define ATW_DPRINTF(x) if (atw_debug > 0) printf x
138#define ATW_DPRINTF2(x) if (atw_debug > 1) printf x
139#define ATW_DPRINTF3(x) if (atw_debug > 2) printf x
140#define DPRINTF(sc, x) if ((sc)->sc_ic.ic_ific_ac.ac_if.if_flags & IFF_DEBUG0x4) printf x
141#define DPRINTF2(sc, x) if ((sc)->sc_ic.ic_ific_ac.ac_if.if_flags & IFF_DEBUG0x4) ATW_DPRINTF2(x)
142#define DPRINTF3(sc, x) if ((sc)->sc_ic.ic_ific_ac.ac_if.if_flags & IFF_DEBUG0x4) ATW_DPRINTF3(x)
143void atw_print_regs(struct atw_softc *, const char *);
144void atw_dump_pkt(struct ifnet *, struct mbuf *);
145
146/* Note well: I never got atw_rf3000_read or atw_si4126_read to work. */
147# ifdef ATW_BBPDEBUG
148int atw_rf3000_read(struct atw_softc *sc, u_int, u_int *);
149void atw_rf3000_print(struct atw_softc *);
150# endif /* ATW_BBPDEBUG */
151
152# ifdef ATW_SYNDEBUG
153int atw_si4126_read(struct atw_softc *, u_int, u_int *);
154void atw_si4126_print(struct atw_softc *);
155# endif /* ATW_SYNDEBUG */
156
157#else
158#define ATW_DPRINTF(x)
159#define ATW_DPRINTF2(x)
160#define ATW_DPRINTF3(x)
161#define DPRINTF(sc, x) /* nothing */
162#define DPRINTF2(sc, x) /* nothing */
163#define DPRINTF3(sc, x) /* nothing */
164#endif
165
166#ifdef ATW_STATS
167void atw_print_stats(struct atw_softc *);
168#endif
169
170const char *atw_printmac(u_int8_t);
171
172/* ifnet methods */
173void atw_start(struct ifnet *);
174void atw_watchdog(struct ifnet *);
175int atw_ioctl(struct ifnet *, u_long, caddr_t);
176int atw_init(struct ifnet *);
177void atw_stop(struct ifnet *, int);
178
179/* Rx/Tx process */
180void atw_rxdrain(struct atw_softc *);
181void atw_txdrain(struct atw_softc *);
182int atw_add_rxbuf(struct atw_softc *, int);
183void atw_idle(struct atw_softc *, u_int32_t);
184
185/* Device (de)activation and power state */
186void atw_disable(struct atw_softc *);
187void atw_reset(struct atw_softc *);
188
189/* Interrupt handlers */
190void atw_rxintr(struct atw_softc *);
191void atw_txintr(struct atw_softc *);
192void atw_linkintr(struct atw_softc *, u_int32_t);
193
194/* 802.11 state machine */
195int atw_newstate(struct ieee80211com *, enum ieee80211_state, int);
196int atw_tune(struct atw_softc *);
197#ifndef IEEE80211_STA_ONLY
198void atw_recv_mgmt(struct ieee80211com *, struct mbuf *,
199 struct ieee80211_node *, struct ieee80211_rxinfo *, int);
200#endif
201void atw_next_scan(void *);
202
203/* Device initialization */
204void atw_wcsr_init(struct atw_softc *);
205void atw_cmdr_init(struct atw_softc *);
206void atw_tofs2_init(struct atw_softc *);
207void atw_txlmt_init(struct atw_softc *);
208void atw_test1_init(struct atw_softc *);
209void atw_rf_reset(struct atw_softc *);
210void atw_cfp_init(struct atw_softc *);
211void atw_tofs0_init(struct atw_softc *);
212void atw_ifs_init(struct atw_softc *);
213void atw_response_times_init(struct atw_softc *);
214void atw_bbp_io_init(struct atw_softc *);
215void atw_nar_init(struct atw_softc *);
216
217/* RAM/ROM utilities */
218void atw_clear_sram(struct atw_softc *);
219void atw_write_sram(struct atw_softc *, u_int, u_int8_t *, u_int);
220int atw_read_srom(struct atw_softc *);
221
222/* BSS setup */
223void atw_predict_beacon(struct atw_softc *sc);
224void atw_start_beacon(struct atw_softc *, int);
225void atw_write_bssid(struct atw_softc *);
226void atw_write_ssid(struct atw_softc *);
227void atw_write_sup_rates(struct atw_softc *);
228void atw_write_wep(struct atw_softc *);
229
230/* Media */
231int atw_media_change(struct ifnet *);
232void atw_media_status(struct ifnet *, struct ifmediareq *);
233
234void atw_filter_setup(struct atw_softc *);
235
236/* 802.11 utilities */
237struct ieee80211_node *atw_node_alloc(struct ieee80211com *);
238void atw_node_free(struct ieee80211com *, struct ieee80211_node *);
239static __inline uint32_t atw_last_even_tsft(uint32_t, uint32_t, uint32_t);
240uint64_t atw_get_tsft(struct atw_softc *sc);
241void atw_change_ibss(struct atw_softc *);
242int atw_compute_duration1(int, int, uint32_t, int, struct atw_duration *);
243int atw_compute_duration(struct ieee80211_frame *, int, uint32_t, int,
244 int, struct atw_duration *, struct atw_duration *, int *, int);
245
246/*
247 * Tuner/transceiver/modem
248 */
249void atw_bbp_io_enable(struct atw_softc *, int);
250
251/* RFMD RF3000 Baseband Processor */
252int atw_rf3000_init(struct atw_softc *);
253int atw_rf3000_tune(struct atw_softc *, u_int);
254int atw_rf3000_write(struct atw_softc *, u_int, u_int);
255
256/* Silicon Laboratories Si4126 RF/IF Synthesizer */
257void atw_si4126_tune(struct atw_softc *, u_int);
258void atw_si4126_write(struct atw_softc *, u_int, u_int);
259void atw_si4126_init(struct atw_softc *);
260
261const struct atw_txthresh_tab atw_txthresh_tab_lo[] = {
262 { ATW_NAR_TR_L64((0x0) << ((((u_long)((((((0xc000)) - 1) & ((0xc000
))) ^ ((0xc000)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xc000) >> 16)) - 1) & (((0xc000) >> 16))
) ^ (((0xc000) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xc000) >> 16) >> 8)) - 1) & (
(((0xc000) >> 16) >> 8))) ^ ((((0xc000) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xc000) >> 16) >> 8) >> 4)) - 1) & ((
(((0xc000) >> 16) >> 8) >> 4))) ^ (((((0xc000
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xc000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xc000) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4))) - 1) & ((((((0xc000) >> 16) >> 8) >>
4)))) ^ ((((((0xc000) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16) >> 8))) - 1) & (((((0xc000) >>
16) >> 8)))) ^ (((((0xc000) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xc000) >>
16) >> 8)) >> 2))) ^ ((((((0xc000) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16) >> 8)))) - 1) & (((
(((0xc000) >> 16) >> 8))))) ^ ((((((0xc000) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000) >> 16))) - 1) & ((((0xc000) >>
16)))) ^ ((((0xc000) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xc000) >> 16)) >> 4)) - 1
) & (((((0xc000) >> 16)) >> 4))) ^ (((((0xc000
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xc000) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xc000) >> 16)) >> 4) >>
2))) ^ ((((((0xc000) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)
>> 16)) >> 4))) - 1) & ((((((0xc000) >>
16)) >> 4)))) ^ ((((((0xc000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16)))) - 1) & (((((0xc000) >> 16))))) ^ (
((((0xc000) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000) >> 16))) >> 2)) - 1) & (((
(((0xc000) >> 16))) >> 2))) ^ ((((((0xc000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16))))) - 1) & ((((((0xc000) >>
16)))))) ^ ((((((0xc000) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xc000))) - 1) & (((0xc000
)))) ^ (((0xc000))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xc000)) >> 8)) - 1) & ((((0xc000)) >> 8
))) ^ ((((0xc000)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xc000)) >> 8) >> 4)) - 1) &
(((((0xc000)) >> 8) >> 4))) ^ (((((0xc000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xc000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xc000)) >> 8) >> 4) >> 2))) ^ (((((
(0xc000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8) >>
4))) - 1) & ((((((0xc000)) >> 8) >> 4)))) ^ (
(((((0xc000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xc000)) >> 8))) - 1) &
(((((0xc000)) >> 8)))) ^ (((((0xc000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000)) >>
8)) >> 2)) - 1) & ((((((0xc000)) >> 8)) >>
2))) ^ ((((((0xc000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8
)))) - 1) & ((((((0xc000)) >> 8))))) ^ ((((((0xc000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000)))) - 1) & ((((0xc000))))) ^ ((((0xc000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xc000))) >>
4)) - 1) & (((((0xc000))) >> 4))) ^ (((((0xc000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xc000))) >> 4) >> 2)) - 1) & ((((((0xc000)
)) >> 4) >> 2))) ^ ((((((0xc000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000
))) >> 4))) - 1) & ((((((0xc000))) >> 4)))) ^
((((((0xc000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xc000))))) - 1) & (((((0xc000)))
))) ^ (((((0xc000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000)))) >> 2)) - 1) & ((((((0xc000)))
) >> 2))) ^ ((((((0xc000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)))))) - 1) &
((((((0xc000))))))) ^ ((((((0xc000)))))))) >> (1)) != 0
) ? 1 : 0))))))
, "64 bytes" },
263 { ATW_NAR_TR_L160((0x2) << ((((u_long)((((((0xc000)) - 1) & ((0xc000
))) ^ ((0xc000)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xc000) >> 16)) - 1) & (((0xc000) >> 16))
) ^ (((0xc000) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xc000) >> 16) >> 8)) - 1) & (
(((0xc000) >> 16) >> 8))) ^ ((((0xc000) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xc000) >> 16) >> 8) >> 4)) - 1) & ((
(((0xc000) >> 16) >> 8) >> 4))) ^ (((((0xc000
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xc000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xc000) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4))) - 1) & ((((((0xc000) >> 16) >> 8) >>
4)))) ^ ((((((0xc000) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16) >> 8))) - 1) & (((((0xc000) >>
16) >> 8)))) ^ (((((0xc000) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xc000) >>
16) >> 8)) >> 2))) ^ ((((((0xc000) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16) >> 8)))) - 1) & (((
(((0xc000) >> 16) >> 8))))) ^ ((((((0xc000) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000) >> 16))) - 1) & ((((0xc000) >>
16)))) ^ ((((0xc000) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xc000) >> 16)) >> 4)) - 1
) & (((((0xc000) >> 16)) >> 4))) ^ (((((0xc000
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xc000) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xc000) >> 16)) >> 4) >>
2))) ^ ((((((0xc000) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)
>> 16)) >> 4))) - 1) & ((((((0xc000) >>
16)) >> 4)))) ^ ((((((0xc000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16)))) - 1) & (((((0xc000) >> 16))))) ^ (
((((0xc000) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000) >> 16))) >> 2)) - 1) & (((
(((0xc000) >> 16))) >> 2))) ^ ((((((0xc000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16))))) - 1) & ((((((0xc000) >>
16)))))) ^ ((((((0xc000) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xc000))) - 1) & (((0xc000
)))) ^ (((0xc000))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xc000)) >> 8)) - 1) & ((((0xc000)) >> 8
))) ^ ((((0xc000)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xc000)) >> 8) >> 4)) - 1) &
(((((0xc000)) >> 8) >> 4))) ^ (((((0xc000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xc000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xc000)) >> 8) >> 4) >> 2))) ^ (((((
(0xc000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8) >>
4))) - 1) & ((((((0xc000)) >> 8) >> 4)))) ^ (
(((((0xc000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xc000)) >> 8))) - 1) &
(((((0xc000)) >> 8)))) ^ (((((0xc000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000)) >>
8)) >> 2)) - 1) & ((((((0xc000)) >> 8)) >>
2))) ^ ((((((0xc000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8
)))) - 1) & ((((((0xc000)) >> 8))))) ^ ((((((0xc000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000)))) - 1) & ((((0xc000))))) ^ ((((0xc000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xc000))) >>
4)) - 1) & (((((0xc000))) >> 4))) ^ (((((0xc000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xc000))) >> 4) >> 2)) - 1) & ((((((0xc000)
)) >> 4) >> 2))) ^ ((((((0xc000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000
))) >> 4))) - 1) & ((((((0xc000))) >> 4)))) ^
((((((0xc000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xc000))))) - 1) & (((((0xc000)))
))) ^ (((((0xc000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000)))) >> 2)) - 1) & ((((((0xc000)))
) >> 2))) ^ ((((((0xc000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)))))) - 1) &
((((((0xc000))))))) ^ ((((((0xc000)))))))) >> (1)) != 0
) ? 1 : 0))))))
, "160 bytes" },
264 { ATW_NAR_TR_L192((0x3) << ((((u_long)((((((0xc000)) - 1) & ((0xc000
))) ^ ((0xc000)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xc000) >> 16)) - 1) & (((0xc000) >> 16))
) ^ (((0xc000) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xc000) >> 16) >> 8)) - 1) & (
(((0xc000) >> 16) >> 8))) ^ ((((0xc000) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xc000) >> 16) >> 8) >> 4)) - 1) & ((
(((0xc000) >> 16) >> 8) >> 4))) ^ (((((0xc000
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xc000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xc000) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4))) - 1) & ((((((0xc000) >> 16) >> 8) >>
4)))) ^ ((((((0xc000) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16) >> 8))) - 1) & (((((0xc000) >>
16) >> 8)))) ^ (((((0xc000) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xc000) >>
16) >> 8)) >> 2))) ^ ((((((0xc000) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16) >> 8)))) - 1) & (((
(((0xc000) >> 16) >> 8))))) ^ ((((((0xc000) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000) >> 16))) - 1) & ((((0xc000) >>
16)))) ^ ((((0xc000) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xc000) >> 16)) >> 4)) - 1
) & (((((0xc000) >> 16)) >> 4))) ^ (((((0xc000
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xc000) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xc000) >> 16)) >> 4) >>
2))) ^ ((((((0xc000) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)
>> 16)) >> 4))) - 1) & ((((((0xc000) >>
16)) >> 4)))) ^ ((((((0xc000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16)))) - 1) & (((((0xc000) >> 16))))) ^ (
((((0xc000) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000) >> 16))) >> 2)) - 1) & (((
(((0xc000) >> 16))) >> 2))) ^ ((((((0xc000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16))))) - 1) & ((((((0xc000) >>
16)))))) ^ ((((((0xc000) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xc000))) - 1) & (((0xc000
)))) ^ (((0xc000))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xc000)) >> 8)) - 1) & ((((0xc000)) >> 8
))) ^ ((((0xc000)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xc000)) >> 8) >> 4)) - 1) &
(((((0xc000)) >> 8) >> 4))) ^ (((((0xc000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xc000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xc000)) >> 8) >> 4) >> 2))) ^ (((((
(0xc000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8) >>
4))) - 1) & ((((((0xc000)) >> 8) >> 4)))) ^ (
(((((0xc000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xc000)) >> 8))) - 1) &
(((((0xc000)) >> 8)))) ^ (((((0xc000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000)) >>
8)) >> 2)) - 1) & ((((((0xc000)) >> 8)) >>
2))) ^ ((((((0xc000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8
)))) - 1) & ((((((0xc000)) >> 8))))) ^ ((((((0xc000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000)))) - 1) & ((((0xc000))))) ^ ((((0xc000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xc000))) >>
4)) - 1) & (((((0xc000))) >> 4))) ^ (((((0xc000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xc000))) >> 4) >> 2)) - 1) & ((((((0xc000)
)) >> 4) >> 2))) ^ ((((((0xc000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000
))) >> 4))) - 1) & ((((((0xc000))) >> 4)))) ^
((((((0xc000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xc000))))) - 1) & (((((0xc000)))
))) ^ (((((0xc000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000)))) >> 2)) - 1) & ((((((0xc000)))
) >> 2))) ^ ((((((0xc000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)))))) - 1) &
((((((0xc000))))))) ^ ((((((0xc000)))))))) >> (1)) != 0
) ? 1 : 0))))))
, "192 bytes" },
265 { ATW_NAR_SF(1<<21), "store and forward" },
266 { 0, NULL((void *)0) }
267};
268const struct atw_txthresh_tab atw_txthresh_tab_hi[] = {
269 { ATW_NAR_TR_H96((0x0) << ((((u_long)((((((0xc000)) - 1) & ((0xc000
))) ^ ((0xc000)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xc000) >> 16)) - 1) & (((0xc000) >> 16))
) ^ (((0xc000) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xc000) >> 16) >> 8)) - 1) & (
(((0xc000) >> 16) >> 8))) ^ ((((0xc000) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xc000) >> 16) >> 8) >> 4)) - 1) & ((
(((0xc000) >> 16) >> 8) >> 4))) ^ (((((0xc000
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xc000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xc000) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4))) - 1) & ((((((0xc000) >> 16) >> 8) >>
4)))) ^ ((((((0xc000) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16) >> 8))) - 1) & (((((0xc000) >>
16) >> 8)))) ^ (((((0xc000) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xc000) >>
16) >> 8)) >> 2))) ^ ((((((0xc000) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16) >> 8)))) - 1) & (((
(((0xc000) >> 16) >> 8))))) ^ ((((((0xc000) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000) >> 16))) - 1) & ((((0xc000) >>
16)))) ^ ((((0xc000) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xc000) >> 16)) >> 4)) - 1
) & (((((0xc000) >> 16)) >> 4))) ^ (((((0xc000
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xc000) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xc000) >> 16)) >> 4) >>
2))) ^ ((((((0xc000) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)
>> 16)) >> 4))) - 1) & ((((((0xc000) >>
16)) >> 4)))) ^ ((((((0xc000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16)))) - 1) & (((((0xc000) >> 16))))) ^ (
((((0xc000) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000) >> 16))) >> 2)) - 1) & (((
(((0xc000) >> 16))) >> 2))) ^ ((((((0xc000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16))))) - 1) & ((((((0xc000) >>
16)))))) ^ ((((((0xc000) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xc000))) - 1) & (((0xc000
)))) ^ (((0xc000))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xc000)) >> 8)) - 1) & ((((0xc000)) >> 8
))) ^ ((((0xc000)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xc000)) >> 8) >> 4)) - 1) &
(((((0xc000)) >> 8) >> 4))) ^ (((((0xc000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xc000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xc000)) >> 8) >> 4) >> 2))) ^ (((((
(0xc000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8) >>
4))) - 1) & ((((((0xc000)) >> 8) >> 4)))) ^ (
(((((0xc000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xc000)) >> 8))) - 1) &
(((((0xc000)) >> 8)))) ^ (((((0xc000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000)) >>
8)) >> 2)) - 1) & ((((((0xc000)) >> 8)) >>
2))) ^ ((((((0xc000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8
)))) - 1) & ((((((0xc000)) >> 8))))) ^ ((((((0xc000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000)))) - 1) & ((((0xc000))))) ^ ((((0xc000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xc000))) >>
4)) - 1) & (((((0xc000))) >> 4))) ^ (((((0xc000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xc000))) >> 4) >> 2)) - 1) & ((((((0xc000)
)) >> 4) >> 2))) ^ ((((((0xc000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000
))) >> 4))) - 1) & ((((((0xc000))) >> 4)))) ^
((((((0xc000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xc000))))) - 1) & (((((0xc000)))
))) ^ (((((0xc000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000)))) >> 2)) - 1) & ((((((0xc000)))
) >> 2))) ^ ((((((0xc000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)))))) - 1) &
((((((0xc000))))))) ^ ((((((0xc000)))))))) >> (1)) != 0
) ? 1 : 0))))))
, "96 bytes" },
270 { ATW_NAR_TR_H288((0x2) << ((((u_long)((((((0xc000)) - 1) & ((0xc000
))) ^ ((0xc000)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xc000) >> 16)) - 1) & (((0xc000) >> 16))
) ^ (((0xc000) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xc000) >> 16) >> 8)) - 1) & (
(((0xc000) >> 16) >> 8))) ^ ((((0xc000) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xc000) >> 16) >> 8) >> 4)) - 1) & ((
(((0xc000) >> 16) >> 8) >> 4))) ^ (((((0xc000
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xc000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xc000) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4))) - 1) & ((((((0xc000) >> 16) >> 8) >>
4)))) ^ ((((((0xc000) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16) >> 8))) - 1) & (((((0xc000) >>
16) >> 8)))) ^ (((((0xc000) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xc000) >>
16) >> 8)) >> 2))) ^ ((((((0xc000) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16) >> 8)))) - 1) & (((
(((0xc000) >> 16) >> 8))))) ^ ((((((0xc000) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000) >> 16))) - 1) & ((((0xc000) >>
16)))) ^ ((((0xc000) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xc000) >> 16)) >> 4)) - 1
) & (((((0xc000) >> 16)) >> 4))) ^ (((((0xc000
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xc000) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xc000) >> 16)) >> 4) >>
2))) ^ ((((((0xc000) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)
>> 16)) >> 4))) - 1) & ((((((0xc000) >>
16)) >> 4)))) ^ ((((((0xc000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16)))) - 1) & (((((0xc000) >> 16))))) ^ (
((((0xc000) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000) >> 16))) >> 2)) - 1) & (((
(((0xc000) >> 16))) >> 2))) ^ ((((((0xc000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16))))) - 1) & ((((((0xc000) >>
16)))))) ^ ((((((0xc000) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xc000))) - 1) & (((0xc000
)))) ^ (((0xc000))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xc000)) >> 8)) - 1) & ((((0xc000)) >> 8
))) ^ ((((0xc000)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xc000)) >> 8) >> 4)) - 1) &
(((((0xc000)) >> 8) >> 4))) ^ (((((0xc000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xc000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xc000)) >> 8) >> 4) >> 2))) ^ (((((
(0xc000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8) >>
4))) - 1) & ((((((0xc000)) >> 8) >> 4)))) ^ (
(((((0xc000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xc000)) >> 8))) - 1) &
(((((0xc000)) >> 8)))) ^ (((((0xc000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000)) >>
8)) >> 2)) - 1) & ((((((0xc000)) >> 8)) >>
2))) ^ ((((((0xc000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8
)))) - 1) & ((((((0xc000)) >> 8))))) ^ ((((((0xc000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000)))) - 1) & ((((0xc000))))) ^ ((((0xc000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xc000))) >>
4)) - 1) & (((((0xc000))) >> 4))) ^ (((((0xc000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xc000))) >> 4) >> 2)) - 1) & ((((((0xc000)
)) >> 4) >> 2))) ^ ((((((0xc000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000
))) >> 4))) - 1) & ((((((0xc000))) >> 4)))) ^
((((((0xc000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xc000))))) - 1) & (((((0xc000)))
))) ^ (((((0xc000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000)))) >> 2)) - 1) & ((((((0xc000)))
) >> 2))) ^ ((((((0xc000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)))))) - 1) &
((((((0xc000))))))) ^ ((((((0xc000)))))))) >> (1)) != 0
) ? 1 : 0))))))
, "288 bytes" },
271 { ATW_NAR_TR_H544((0x3) << ((((u_long)((((((0xc000)) - 1) & ((0xc000
))) ^ ((0xc000)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xc000) >> 16)) - 1) & (((0xc000) >> 16))
) ^ (((0xc000) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xc000) >> 16) >> 8)) - 1) & (
(((0xc000) >> 16) >> 8))) ^ ((((0xc000) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xc000) >> 16) >> 8) >> 4)) - 1) & ((
(((0xc000) >> 16) >> 8) >> 4))) ^ (((((0xc000
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xc000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xc000) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xc000) >> 16) >> 8) >>
4))) - 1) & ((((((0xc000) >> 16) >> 8) >>
4)))) ^ ((((((0xc000) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16) >> 8))) - 1) & (((((0xc000) >>
16) >> 8)))) ^ (((((0xc000) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xc000) >>
16) >> 8)) >> 2))) ^ ((((((0xc000) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16) >> 8)))) - 1) & (((
(((0xc000) >> 16) >> 8))))) ^ ((((((0xc000) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000) >> 16))) - 1) & ((((0xc000) >>
16)))) ^ ((((0xc000) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xc000) >> 16)) >> 4)) - 1
) & (((((0xc000) >> 16)) >> 4))) ^ (((((0xc000
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xc000) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xc000) >> 16)) >> 4) >>
2))) ^ ((((((0xc000) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)
>> 16)) >> 4))) - 1) & ((((((0xc000) >>
16)) >> 4)))) ^ ((((((0xc000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc000
) >> 16)))) - 1) & (((((0xc000) >> 16))))) ^ (
((((0xc000) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000) >> 16))) >> 2)) - 1) & (((
(((0xc000) >> 16))) >> 2))) ^ ((((((0xc000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xc000) >> 16))))) - 1) & ((((((0xc000) >>
16)))))) ^ ((((((0xc000) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xc000))) - 1) & (((0xc000
)))) ^ (((0xc000))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xc000)) >> 8)) - 1) & ((((0xc000)) >> 8
))) ^ ((((0xc000)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xc000)) >> 8) >> 4)) - 1) &
(((((0xc000)) >> 8) >> 4))) ^ (((((0xc000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xc000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xc000)) >> 8) >> 4) >> 2))) ^ (((((
(0xc000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8) >>
4))) - 1) & ((((((0xc000)) >> 8) >> 4)))) ^ (
(((((0xc000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xc000)) >> 8))) - 1) &
(((((0xc000)) >> 8)))) ^ (((((0xc000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc000)) >>
8)) >> 2)) - 1) & ((((((0xc000)) >> 8)) >>
2))) ^ ((((((0xc000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)) >> 8
)))) - 1) & ((((((0xc000)) >> 8))))) ^ ((((((0xc000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xc000)))) - 1) & ((((0xc000))))) ^ ((((0xc000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xc000))) >>
4)) - 1) & (((((0xc000))) >> 4))) ^ (((((0xc000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xc000))) >> 4) >> 2)) - 1) & ((((((0xc000)
)) >> 4) >> 2))) ^ ((((((0xc000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000
))) >> 4))) - 1) & ((((((0xc000))) >> 4)))) ^
((((((0xc000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xc000))))) - 1) & (((((0xc000)))
))) ^ (((((0xc000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc000)))) >> 2)) - 1) & ((((((0xc000)))
) >> 2))) ^ ((((((0xc000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc000)))))) - 1) &
((((((0xc000))))))) ^ ((((((0xc000)))))))) >> (1)) != 0
) ? 1 : 0))))))
, "544 bytes" },
272 { ATW_NAR_SF(1<<21), "store and forward" },
273 { 0, NULL((void *)0) }
274};
275
276struct cfdriver atw_cd = {
277 NULL((void *)0), "atw", DV_IFNET
278};
279
280static const u_int atw_rfmd2958_ifn[] = {
281 0x22bd, 0x22d2, 0x22e8, 0x22fe, 0x2314, 0x232a, 0x2340,
282 0x2355, 0x236b, 0x2381, 0x2397, 0x23ad, 0x23c2, 0x23f7
283};
284
285static const u_int atw_rfmd2958_rf1r[] = {
286 0x05d17, 0x3a2e8, 0x2e8ba, 0x22e8b, 0x1745d, 0x0ba2e, 0x00000,
287 0x345d1, 0x28ba2, 0x1d174, 0x11745, 0x05d17, 0x3a2e8, 0x11745
288};
289
290
291#ifdef ATW_DEBUG
292
293const char *atw_tx_state[] = {
294 "STOPPED",
295 "RUNNING - read descriptor",
296 "RUNNING - transmitting",
297 "RUNNING - filling fifo", /* XXX */
298 "SUSPENDED",
299 "RUNNING -- write descriptor",
300 "RUNNING -- write last descriptor",
301 "RUNNING - fifo full"
302};
303
304const char *atw_rx_state[] = {
305 "STOPPED",
306 "RUNNING - read descriptor",
307 "RUNNING - check this packet, pre-fetch next",
308 "RUNNING - wait for reception",
309 "SUSPENDED",
310 "RUNNING - write descriptor",
311 "RUNNING - flush fifo",
312 "RUNNING - fifo drain"
313};
314
315#endif
316
317/*
318 * atw_enable:
319 *
320 * Enable the ADM8211 chip.
321 */
322int
323atw_enable(struct atw_softc *sc)
324{
325
326 if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000) == 0) {
327 if (sc->sc_enable != NULL((void *)0) && (*sc->sc_enable)(sc) != 0) {
328 printf("%s: device enable failed\n",
329 sc->sc_dev.dv_xname);
330 return (EIO5);
331 }
332 sc->sc_flags |= ATWF_ENABLED0x00001000;
333 }
334 return (0);
335}
336
337/*
338 * atw_disable:
339 *
340 * Disable the ADM8211 chip.
341 */
342void
343atw_disable(struct atw_softc *sc)
344{
345 if (!ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000))
346 return;
347 if (sc->sc_disable != NULL((void *)0))
348 (*sc->sc_disable)(sc);
349 sc->sc_flags &= ~ATWF_ENABLED0x00001000;
350}
351
352/* Returns -1 on failure. */
353int
354atw_read_srom(struct atw_softc *sc)
355{
356 struct seeprom_descriptor sd;
357 u_int32_t test0, fail_bits;
358
359 (void)memset(&sd, 0, sizeof(sd))__builtin_memset((&sd), (0), (sizeof(sd)));
360
361 test0 = ATW_READ(sc, ATW_TEST0)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x4C))));
362
363 switch (sc->sc_rev) {
364 case ATW_REVISION_BA:
365 case ATW_REVISION_CA:
366 fail_bits = ATW_TEST0_EPNE(1<<18);
367 break;
368 default:
369 fail_bits = ATW_TEST0_EPNE(1<<18)|ATW_TEST0_EPSNM(1<<17);
370 break;
371 }
372 if ((test0 & fail_bits) != 0) {
373 printf("%s: bad or missing/bad SROM\n", sc->sc_dev.dv_xname);
374 return -1;
375 }
376
377 switch (test0 & ATW_TEST0_EPTYP_MASK(1<<16)) {
378 case ATW_TEST0_EPTYP_93c66(1<<16):
379 ATW_DPRINTF(("%s: 93c66 SROM\n", sc->sc_dev.dv_xname));
380 sc->sc_sromsz = 512;
381 sd.sd_chip = C56_66;
382 break;
383 case ATW_TEST0_EPTYP_93c460:
384 ATW_DPRINTF(("%s: 93c46 SROM\n", sc->sc_dev.dv_xname));
385 sc->sc_sromsz = 128;
386 sd.sd_chip = C46;
387 break;
388 default:
389 printf("%s: unknown SROM type %d\n", sc->sc_dev.dv_xname,
390 MASK_AND_RSHIFT(test0, ATW_TEST0_EPTYP_MASK)(((test0) & ((1<<16))) >> ((((u_long)(((((((1
<<16))) - 1) & (((1<<16)))) ^ (((1<<16)
)))) >> (16)) != 0) ? 16 + ((((u_long)((((((((1<<
16)) >> 16)) - 1) & ((((1<<16)) >> 16))
) ^ ((((1<<16)) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)(((((((((1<<16)) >> 16) >> 8)
) - 1) & (((((1<<16)) >> 16) >> 8))) ^ (
((((1<<16)) >> 16) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)((((((((((1<<16)) >> 16) >>
8) >> 4)) - 1) & ((((((1<<16)) >> 16) >>
8) >> 4))) ^ ((((((1<<16)) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
((((((1<<16)) >> 16) >> 8) >> 4) >>
2)) - 1) & (((((((1<<16)) >> 16) >> 8)
>> 4) >> 2))) ^ (((((((1<<16)) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)(((((((((((1<<16)) >> 16) >>
8) >> 4))) - 1) & (((((((1<<16)) >> 16
) >> 8) >> 4)))) ^ (((((((1<<16)) >> 16
) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)((((((((((1<<16)) >> 16) >> 8))
) - 1) & ((((((1<<16)) >> 16) >> 8)))) ^
((((((1<<16)) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)(((((((((((1<<16)) >> 16
) >> 8)) >> 2)) - 1) & (((((((1<<16)) >>
16) >> 8)) >> 2))) ^ (((((((1<<16)) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)(((((((((((1<<16)) >> 16) >> 8
)))) - 1) & (((((((1<<16)) >> 16) >> 8)
)))) ^ (((((((1<<16)) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)(((((((((1<<16)) >>
16))) - 1) & (((((1<<16)) >> 16)))) ^ (((((1
<<16)) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)((((((((((1<<16)) >> 16)) >> 4)) - 1) &
((((((1<<16)) >> 16)) >> 4))) ^ ((((((1<<
16)) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)(((((((((((1<<16)) >> 16)) >> 4) >>
2)) - 1) & (((((((1<<16)) >> 16)) >> 4
) >> 2))) ^ (((((((1<<16)) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
(((((((((((1<<16)) >> 16)) >> 4))) - 1) &
(((((((1<<16)) >> 16)) >> 4)))) ^ (((((((1
<<16)) >> 16)) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)((((((((((1<<16)) >> 16)
))) - 1) & ((((((1<<16)) >> 16))))) ^ ((((((1
<<16)) >> 16)))))) >> (2)) != 0) ? 2 + ((((
u_long)(((((((((((1<<16)) >> 16))) >> 2)) -
1) & (((((((1<<16)) >> 16))) >> 2))) ^
(((((((1<<16)) >> 16))) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((1<<16)) >>
16))))) - 1) & (((((((1<<16)) >> 16)))))) ^ (
((((((1<<16)) >> 16))))))) >> (1)) != 0) ? 1
: 0)))) : ((((u_long)((((((((1<<16)))) - 1) & ((((
1<<16))))) ^ ((((1<<16)))))) >> (8)) != 0) ?
8 + ((((u_long)(((((((((1<<16))) >> 8)) - 1) &
(((((1<<16))) >> 8))) ^ (((((1<<16))) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)((((((((((1<<
16))) >> 8) >> 4)) - 1) & ((((((1<<16))
) >> 8) >> 4))) ^ ((((((1<<16))) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
((((1<<16))) >> 8) >> 4) >> 2)) - 1) &
(((((((1<<16))) >> 8) >> 4) >> 2))) ^
(((((((1<<16))) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((1<<
16))) >> 8) >> 4))) - 1) & (((((((1<<16
))) >> 8) >> 4)))) ^ (((((((1<<16))) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)((((((((((1<<16))) >> 8))) - 1) & ((((((1<<
16))) >> 8)))) ^ ((((((1<<16))) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)(((((((((((1<<16))) >>
8)) >> 2)) - 1) & (((((((1<<16))) >> 8
)) >> 2))) ^ (((((((1<<16))) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((1
<<16))) >> 8)))) - 1) & (((((((1<<16)))
>> 8))))) ^ (((((((1<<16))) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)(((((((((1<<16)))))
- 1) & (((((1<<16)))))) ^ (((((1<<16))))))) >>
(4)) != 0) ? 4 + ((((u_long)((((((((((1<<16)))) >>
4)) - 1) & ((((((1<<16)))) >> 4))) ^ ((((((1
<<16)))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)(((((((((((1<<16)))) >> 4) >> 2)) - 1) &
(((((((1<<16)))) >> 4) >> 2))) ^ (((((((1<<
16)))) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0
) : ((((u_long)(((((((((((1<<16)))) >> 4))) - 1) &
(((((((1<<16)))) >> 4)))) ^ (((((((1<<16))
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)((((((((((1<<16)))))) - 1) & ((((((1<<16))))
))) ^ ((((((1<<16)))))))) >> (2)) != 0) ? 2 + (((
(u_long)(((((((((((1<<16))))) >> 2)) - 1) & (
((((((1<<16))))) >> 2))) ^ (((((((1<<16))))
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
(((((((((1<<16))))))) - 1) & (((((((1<<16))))
)))) ^ (((((((1<<16))))))))) >> (1)) != 0) ? 1 : 0
))))))
);
391 return -1;
392 }
393
394 sc->sc_srom = malloc(sc->sc_sromsz, M_DEVBUF2, M_NOWAIT0x0002 | M_ZERO0x0008);
395 if (sc->sc_srom == NULL((void *)0)) {
396 printf("%s: unable to allocate SROM buffer\n",
397 sc->sc_dev.dv_xname);
398 return -1;
399 }
400
401 /*
402 * ADM8211 has a single 32-bit register for controlling the
403 * 93cx6 SROM. Bit SRS enables the serial port. There is no
404 * "ready" bit. The ADM8211 input/output sense is the reverse
405 * of read_seeprom's.
406 */
407 sd.sd_tag = sc->sc_st;
408 sd.sd_bsh = sc->sc_sh;
409 sd.sd_regsize = 4;
410 sd.sd_control_offset = ATW_SPR0x48;
411 sd.sd_status_offset = ATW_SPR0x48;
412 sd.sd_dataout_offset = ATW_SPR0x48;
413 sd.sd_CK = ATW_SPR_SCLK(1<<1);
414 sd.sd_CS = ATW_SPR_SCS(1<<0);
415 sd.sd_DI = ATW_SPR_SDO(1<<3);
416 sd.sd_DO = ATW_SPR_SDI(1<<2);
417 sd.sd_MS = ATW_SPR_SRS(1<<11);
418 sd.sd_RDY = 0;
419
420 if (!read_seeprom(&sd, sc->sc_srom, 0, sc->sc_sromsz/2)) {
421 printf("%s: could not read SROM\n", sc->sc_dev.dv_xname);
422 free(sc->sc_srom, M_DEVBUF2, sc->sc_sromsz);
423 return -1;
424 }
425#ifdef ATW_DEBUG
426 {
427 int i;
428 ATW_DPRINTF(("\nSerial EEPROM:\n\t"));
429 for (i = 0; i < sc->sc_sromsz/2; i = i + 1) {
430 if (((i % 8) == 0) && (i != 0)) {
431 ATW_DPRINTF(("\n\t"));
432 }
433 ATW_DPRINTF((" 0x%x", sc->sc_srom[i]));
434 }
435 ATW_DPRINTF(("\n"));
436 }
437#endif /* ATW_DEBUG */
438 return 0;
439}
440
441#ifdef ATW_DEBUG
442void
443atw_print_regs(struct atw_softc *sc, const char *where)
444{
445#define PRINTREG(sc, reg) \
446 ATW_DPRINTF2(("%s: reg[ " #reg " / %03x ] = %08x\n", \
447 sc->sc_dev.dv_xname, reg, ATW_READ(sc, reg)))
448
449 ATW_DPRINTF2(("%s: %s\n", sc->sc_dev.dv_xname, where));
450
451 PRINTREG(sc, ATW_PAR0x00);
452 PRINTREG(sc, ATW_FRCTL0x04);
453 PRINTREG(sc, ATW_TDR0x08);
454 PRINTREG(sc, ATW_WTDP0x0C);
455 PRINTREG(sc, ATW_RDR0x10);
456 PRINTREG(sc, ATW_WRDP0x14);
457 PRINTREG(sc, ATW_RDB0x18);
458 PRINTREG(sc, ATW_CSR3A0x1C);
459 PRINTREG(sc, ATW_TDBD0x20);
460 PRINTREG(sc, ATW_TDBP0x24);
461 PRINTREG(sc, ATW_STSR0x28);
462 PRINTREG(sc, ATW_CSR5A0x2C);
463 PRINTREG(sc, ATW_NAR0x30);
464 PRINTREG(sc, ATW_CSR6A0x34);
465 PRINTREG(sc, ATW_IER0x38);
466 PRINTREG(sc, ATW_CSR7A0x3C);
467 PRINTREG(sc, ATW_LPC0x40);
468 PRINTREG(sc, ATW_TEST10x44);
469 PRINTREG(sc, ATW_SPR0x48);
470 PRINTREG(sc, ATW_TEST00x4C);
471 PRINTREG(sc, ATW_WCSR0x50);
472 PRINTREG(sc, ATW_WPDR0x54);
473 PRINTREG(sc, ATW_GPTMR0x58);
474 PRINTREG(sc, ATW_GPIO0x5C);
475 PRINTREG(sc, ATW_BBPCTL0x60);
476 PRINTREG(sc, ATW_SYNCTL0x64);
477 PRINTREG(sc, ATW_PLCPHD0x68);
478 PRINTREG(sc, ATW_MMIWADDR0x6C);
479 PRINTREG(sc, ATW_MMIRADDR10x70);
480 PRINTREG(sc, ATW_MMIRADDR20x74);
481 PRINTREG(sc, ATW_TXBR0x78);
482 PRINTREG(sc, ATW_CSR15A0x7C);
483 PRINTREG(sc, ATW_ALCSTAT0x80);
484 PRINTREG(sc, ATW_TOFS20x84);
485 PRINTREG(sc, ATW_CMDR0x88);
486 PRINTREG(sc, ATW_PCIC0x8C);
487 PRINTREG(sc, ATW_PMCSR0x90);
488 PRINTREG(sc, ATW_PAR00x94);
489 PRINTREG(sc, ATW_PAR10x98);
490 PRINTREG(sc, ATW_MAR00x9C);
491 PRINTREG(sc, ATW_MAR10xA0);
492 PRINTREG(sc, ATW_ATIMDA00xA4);
493 PRINTREG(sc, ATW_ABDA10xA8);
494 PRINTREG(sc, ATW_BSSID00xAC);
495 PRINTREG(sc, ATW_TXLMT0xB0);
496 PRINTREG(sc, ATW_MIBCNT0xB4);
497 PRINTREG(sc, ATW_BCNT0xB8);
498 PRINTREG(sc, ATW_TSFTH0xBC);
499 PRINTREG(sc, ATW_TSC0xC0);
500 PRINTREG(sc, ATW_SYNRF0xC4);
501 PRINTREG(sc, ATW_BPLI0xC8);
502 PRINTREG(sc, ATW_CAP00xCC);
503 PRINTREG(sc, ATW_CAP10xD0);
504 PRINTREG(sc, ATW_RMD0xD4);
505 PRINTREG(sc, ATW_CFPP0xD8);
506 PRINTREG(sc, ATW_TOFS00xDC);
507 PRINTREG(sc, ATW_TOFS10xE0);
508 PRINTREG(sc, ATW_IFST0xE4);
509 PRINTREG(sc, ATW_RSPT0xE8);
510 PRINTREG(sc, ATW_TSFTL0xEC);
511 PRINTREG(sc, ATW_WEPCTL0xF0);
512 PRINTREG(sc, ATW_WESK0xF4);
513 PRINTREG(sc, ATW_WEPCNT0xF8);
514 PRINTREG(sc, ATW_MACTEST0xFC);
515 PRINTREG(sc, ATW_FER0x100);
516 PRINTREG(sc, ATW_FEMR0x104);
517 PRINTREG(sc, ATW_FPSR0x108);
518 PRINTREG(sc, ATW_FFER0x10C);
519#undef PRINTREG
520}
521#endif /* ATW_DEBUG */
522
523const char*
524atw_printmac(u_int8_t rev) {
525 switch (rev) {
526 case ATW_REVISION_AB:
527 return "ADM8211AB";
528 case ATW_REVISION_AF:
529 return "ADM8211AF";
530 case ATW_REVISION_BA:
531 return "ADM8211BA";
532 case ATW_REVISION_CA:
533 return "ADM8211CA";
534 default:
535 return "unknown";
536 }
537}
538
539/*
540 * Finish attaching an ADMtek ADM8211 MAC. Called by bus-specific front-end.
541 */
542void
543atw_attach(struct atw_softc *sc)
544{
545 static const u_int8_t empty_macaddr[IEEE80211_ADDR_LEN6] = {
546 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
547 };
548 struct ieee80211com *ic = &sc->sc_ic;
549 struct ifnet *ifp = &ic->ic_ific_ac.ac_if;
550 int country_code, error, i, srom_major;
551 u_int32_t reg;
552 static const char *type_strings[] = {"Intersil (not supported)",
553 "RFMD", "Marvel (not supported)"};
554
555 sc->sc_txth = atw_txthresh_tab_lo;
556
557 SIMPLEQ_INIT(&sc->sc_txfreeq)do { (&sc->sc_txfreeq)->sqh_first = ((void *)0); (&
sc->sc_txfreeq)->sqh_last = &(&sc->sc_txfreeq
)->sqh_first; } while (0)
;
558 SIMPLEQ_INIT(&sc->sc_txdirtyq)do { (&sc->sc_txdirtyq)->sqh_first = ((void *)0); (
&sc->sc_txdirtyq)->sqh_last = &(&sc->sc_txdirtyq
)->sqh_first; } while (0)
;
559
560#ifdef ATW_DEBUG
561 atw_print_regs(sc, "atw_attach");
562#endif /* ATW_DEBUG */
563
564 /*
565 * Allocate the control data structures, and create and load the
566 * DMA map for it.
567 */
568 if ((error = bus_dmamem_alloc(sc->sc_dmat,(*(sc->sc_dmat)->_dmamem_alloc)((sc->sc_dmat), (sizeof
(struct atw_control_data)), ((1 << 12)), (0), (&sc->
sc_cdseg), (1), (&sc->sc_cdnseg), (0))
569 sizeof(struct atw_control_data), PAGE_SIZE, 0, &sc->sc_cdseg,(*(sc->sc_dmat)->_dmamem_alloc)((sc->sc_dmat), (sizeof
(struct atw_control_data)), ((1 << 12)), (0), (&sc->
sc_cdseg), (1), (&sc->sc_cdnseg), (0))
570 1, &sc->sc_cdnseg, 0)(*(sc->sc_dmat)->_dmamem_alloc)((sc->sc_dmat), (sizeof
(struct atw_control_data)), ((1 << 12)), (0), (&sc->
sc_cdseg), (1), (&sc->sc_cdnseg), (0))
) != 0) {
571 printf("%s: unable to allocate control data, error = %d\n",
572 sc->sc_dev.dv_xname, error);
573 goto fail_0;
574 }
575
576 if ((error = bus_dmamem_map(sc->sc_dmat, &sc->sc_cdseg, sc->sc_cdnseg,(*(sc->sc_dmat)->_dmamem_map)((sc->sc_dmat), (&sc
->sc_cdseg), (sc->sc_cdnseg), (sizeof(struct atw_control_data
)), ((caddr_t *)&sc->sc_control_data), (0x0004))
577 sizeof(struct atw_control_data), (caddr_t *)&sc->sc_control_data,(*(sc->sc_dmat)->_dmamem_map)((sc->sc_dmat), (&sc
->sc_cdseg), (sc->sc_cdnseg), (sizeof(struct atw_control_data
)), ((caddr_t *)&sc->sc_control_data), (0x0004))
578 BUS_DMA_COHERENT)(*(sc->sc_dmat)->_dmamem_map)((sc->sc_dmat), (&sc
->sc_cdseg), (sc->sc_cdnseg), (sizeof(struct atw_control_data
)), ((caddr_t *)&sc->sc_control_data), (0x0004))
) != 0) {
579 printf("%s: unable to map control data, error = %d\n",
580 sc->sc_dev.dv_xname, error);
581 goto fail_1;
582 }
583
584 if ((error = bus_dmamap_create(sc->sc_dmat,(*(sc->sc_dmat)->_dmamap_create)((sc->sc_dmat), (sizeof
(struct atw_control_data)), (1), (sizeof(struct atw_control_data
)), (0), (0), (&sc->sc_cddmamap))
585 sizeof(struct atw_control_data), 1,(*(sc->sc_dmat)->_dmamap_create)((sc->sc_dmat), (sizeof
(struct atw_control_data)), (1), (sizeof(struct atw_control_data
)), (0), (0), (&sc->sc_cddmamap))
586 sizeof(struct atw_control_data), 0, 0, &sc->sc_cddmamap)(*(sc->sc_dmat)->_dmamap_create)((sc->sc_dmat), (sizeof
(struct atw_control_data)), (1), (sizeof(struct atw_control_data
)), (0), (0), (&sc->sc_cddmamap))
) != 0) {
587 printf("%s: unable to create control data DMA map, "
588 "error = %d\n", sc->sc_dev.dv_xname, error);
589 goto fail_2;
590 }
591
592 if ((error = bus_dmamap_load(sc->sc_dmat, sc->sc_cddmamap,(*(sc->sc_dmat)->_dmamap_load)((sc->sc_dmat), (sc->
sc_cddmamap), (sc->sc_control_data), (sizeof(struct atw_control_data
)), (((void *)0)), (0))
593 sc->sc_control_data, sizeof(struct atw_control_data), NULL,(*(sc->sc_dmat)->_dmamap_load)((sc->sc_dmat), (sc->
sc_cddmamap), (sc->sc_control_data), (sizeof(struct atw_control_data
)), (((void *)0)), (0))
594 0)(*(sc->sc_dmat)->_dmamap_load)((sc->sc_dmat), (sc->
sc_cddmamap), (sc->sc_control_data), (sizeof(struct atw_control_data
)), (((void *)0)), (0))
) != 0) {
595 printf("%s: unable to load control data DMA map, error = %d\n",
596 sc->sc_dev.dv_xname, error);
597 goto fail_3;
598 }
599
600 /*
601 * Create the transmit buffer DMA maps.
602 */
603 sc->sc_ntxsegs = ATW_NTXSEGS16;
604 for (i = 0; i < ATW_TXQUEUELEN64; i++) {
605 if ((error = bus_dmamap_create(sc->sc_dmat, MCLBYTES,(*(sc->sc_dmat)->_dmamap_create)((sc->sc_dmat), ((1 <<
11)), (sc->sc_ntxsegs), ((1 << 11)), (0), (0), (&
sc->sc_txsoft[i].txs_dmamap))
606 sc->sc_ntxsegs, MCLBYTES, 0, 0,(*(sc->sc_dmat)->_dmamap_create)((sc->sc_dmat), ((1 <<
11)), (sc->sc_ntxsegs), ((1 << 11)), (0), (0), (&
sc->sc_txsoft[i].txs_dmamap))
607 &sc->sc_txsoft[i].txs_dmamap)(*(sc->sc_dmat)->_dmamap_create)((sc->sc_dmat), ((1 <<
11)), (sc->sc_ntxsegs), ((1 << 11)), (0), (0), (&
sc->sc_txsoft[i].txs_dmamap))
) != 0) {
608 printf("%s: unable to create tx DMA map %d, "
609 "error = %d\n", sc->sc_dev.dv_xname, i, error);
610 goto fail_4;
611 }
612 }
613
614 /*
615 * Create the receive buffer DMA maps.
616 */
617 for (i = 0; i < ATW_NRXDESC64; i++) {
618 if ((error = bus_dmamap_create(sc->sc_dmat, MCLBYTES, 1,(*(sc->sc_dmat)->_dmamap_create)((sc->sc_dmat), ((1 <<
11)), (1), ((1 << 11)), (0), (0), (&sc->sc_rxsoft
[i].rxs_dmamap))
619 MCLBYTES, 0, 0, &sc->sc_rxsoft[i].rxs_dmamap)(*(sc->sc_dmat)->_dmamap_create)((sc->sc_dmat), ((1 <<
11)), (1), ((1 << 11)), (0), (0), (&sc->sc_rxsoft
[i].rxs_dmamap))
) != 0) {
620 printf("%s: unable to create rx DMA map %d, "
621 "error = %d\n", sc->sc_dev.dv_xname, i, error);
622 goto fail_5;
623 }
624 }
625 for (i = 0; i < ATW_NRXDESC64; i++) {
626 sc->sc_rxsoft[i].rxs_mbuf = NULL((void *)0);
627 }
628
629 switch (sc->sc_rev) {
630 case ATW_REVISION_AB:
631 case ATW_REVISION_AF:
632 sc->sc_sramlen = ATW_SRAM_A_SIZE(0x200 * 2);
633 break;
634 case ATW_REVISION_BA:
635 case ATW_REVISION_CA:
636 sc->sc_sramlen = ATW_SRAM_B_SIZE(0x1c0 * 2);
637 break;
638 }
639
640 /* Reset the chip to a known state. */
641 atw_reset(sc);
642
643 if (atw_read_srom(sc) == -1)
644 return;
645
646 sc->sc_rftype = MASK_AND_RSHIFT(sc->sc_srom[ATW_SR_CSR20],(((sc->sc_srom[(0x16/2)]) & (0x38)) >> ((((u_long
)((((((0x38)) - 1) & ((0x38))) ^ ((0x38)))) >> (16)
) != 0) ? 16 + ((((u_long)(((((((0x38) >> 16)) - 1) &
(((0x38) >> 16))) ^ (((0x38) >> 16)))) >> (
8)) != 0) ? 8 + ((((u_long)((((((((0x38) >> 16) >>
8)) - 1) & ((((0x38) >> 16) >> 8))) ^ ((((0x38
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x38) >> 16) >> 8) >> 4)) - 1) &
(((((0x38) >> 16) >> 8) >> 4))) ^ (((((0x38
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x38) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0x38) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0x38) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x38) >> 16) >> 8) >>
4))) - 1) & ((((((0x38) >> 16) >> 8) >>
4)))) ^ ((((((0x38) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x38) >>
16) >> 8))) - 1) & (((((0x38) >> 16) >>
8)))) ^ (((((0x38) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0x38) >> 16) >>
8)) >> 2)) - 1) & ((((((0x38) >> 16) >>
8)) >> 2))) ^ ((((((0x38) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x38
) >> 16) >> 8)))) - 1) & ((((((0x38) >>
16) >> 8))))) ^ ((((((0x38) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x38)
>> 16))) - 1) & ((((0x38) >> 16)))) ^ ((((0x38
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0x38) >> 16)) >> 4)) - 1) & (((((0x38) >>
16)) >> 4))) ^ (((((0x38) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0x38) >>
16)) >> 4) >> 2)) - 1) & ((((((0x38) >>
16)) >> 4) >> 2))) ^ ((((((0x38) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x38) >> 16)) >> 4))) - 1) & ((((((
0x38) >> 16)) >> 4)))) ^ ((((((0x38) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x38) >> 16)))) - 1) & (((((0x38) >>
16))))) ^ (((((0x38) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0x38) >> 16))) >> 2)) -
1) & ((((((0x38) >> 16))) >> 2))) ^ ((((((0x38
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x38) >> 16))))) - 1) & (((((
(0x38) >> 16)))))) ^ ((((((0x38) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x38))) - 1) &
(((0x38)))) ^ (((0x38))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x38)) >> 8)) - 1) & ((((0x38)) >> 8
))) ^ ((((0x38)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0x38)) >> 8) >> 4)) - 1) & (
((((0x38)) >> 8) >> 4))) ^ (((((0x38)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x38)) >> 8) >> 4) >> 2)) - 1) & (((
(((0x38)) >> 8) >> 4) >> 2))) ^ ((((((0x38)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x38)) >> 8) >> 4)
)) - 1) & ((((((0x38)) >> 8) >> 4)))) ^ (((((
(0x38)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0x38)) >> 8))) - 1) & ((
(((0x38)) >> 8)))) ^ (((((0x38)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x38)) >> 8)) >>
2)) - 1) & ((((((0x38)) >> 8)) >> 2))) ^ (((
(((0x38)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0x38)) >> 8)))) - 1) &
((((((0x38)) >> 8))))) ^ ((((((0x38)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x38))))
- 1) & ((((0x38))))) ^ ((((0x38)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0x38))) >> 4)) - 1) & (
((((0x38))) >> 4))) ^ (((((0x38))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x38))) >> 4) >>
2)) - 1) & ((((((0x38))) >> 4) >> 2))) ^ (((
(((0x38))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0x38))) >> 4))) - 1) &
((((((0x38))) >> 4)))) ^ ((((((0x38))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x38))))
) - 1) & (((((0x38)))))) ^ (((((0x38))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0x38)))) >> 2)) - 1) &
((((((0x38)))) >> 2))) ^ ((((((0x38)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x38))))
)) - 1) & ((((((0x38))))))) ^ ((((((0x38)))))))) >>
(1)) != 0) ? 1 : 0))))))
647 ATW_SR_RFTYPE_MASK)(((sc->sc_srom[(0x16/2)]) & (0x38)) >> ((((u_long
)((((((0x38)) - 1) & ((0x38))) ^ ((0x38)))) >> (16)
) != 0) ? 16 + ((((u_long)(((((((0x38) >> 16)) - 1) &
(((0x38) >> 16))) ^ (((0x38) >> 16)))) >> (
8)) != 0) ? 8 + ((((u_long)((((((((0x38) >> 16) >>
8)) - 1) & ((((0x38) >> 16) >> 8))) ^ ((((0x38
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x38) >> 16) >> 8) >> 4)) - 1) &
(((((0x38) >> 16) >> 8) >> 4))) ^ (((((0x38
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x38) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0x38) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0x38) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x38) >> 16) >> 8) >>
4))) - 1) & ((((((0x38) >> 16) >> 8) >>
4)))) ^ ((((((0x38) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x38) >>
16) >> 8))) - 1) & (((((0x38) >> 16) >>
8)))) ^ (((((0x38) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0x38) >> 16) >>
8)) >> 2)) - 1) & ((((((0x38) >> 16) >>
8)) >> 2))) ^ ((((((0x38) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x38
) >> 16) >> 8)))) - 1) & ((((((0x38) >>
16) >> 8))))) ^ ((((((0x38) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x38)
>> 16))) - 1) & ((((0x38) >> 16)))) ^ ((((0x38
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0x38) >> 16)) >> 4)) - 1) & (((((0x38) >>
16)) >> 4))) ^ (((((0x38) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0x38) >>
16)) >> 4) >> 2)) - 1) & ((((((0x38) >>
16)) >> 4) >> 2))) ^ ((((((0x38) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x38) >> 16)) >> 4))) - 1) & ((((((
0x38) >> 16)) >> 4)))) ^ ((((((0x38) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x38) >> 16)))) - 1) & (((((0x38) >>
16))))) ^ (((((0x38) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0x38) >> 16))) >> 2)) -
1) & ((((((0x38) >> 16))) >> 2))) ^ ((((((0x38
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x38) >> 16))))) - 1) & (((((
(0x38) >> 16)))))) ^ ((((((0x38) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x38))) - 1) &
(((0x38)))) ^ (((0x38))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x38)) >> 8)) - 1) & ((((0x38)) >> 8
))) ^ ((((0x38)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0x38)) >> 8) >> 4)) - 1) & (
((((0x38)) >> 8) >> 4))) ^ (((((0x38)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x38)) >> 8) >> 4) >> 2)) - 1) & (((
(((0x38)) >> 8) >> 4) >> 2))) ^ ((((((0x38)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x38)) >> 8) >> 4)
)) - 1) & ((((((0x38)) >> 8) >> 4)))) ^ (((((
(0x38)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0x38)) >> 8))) - 1) & ((
(((0x38)) >> 8)))) ^ (((((0x38)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x38)) >> 8)) >>
2)) - 1) & ((((((0x38)) >> 8)) >> 2))) ^ (((
(((0x38)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0x38)) >> 8)))) - 1) &
((((((0x38)) >> 8))))) ^ ((((((0x38)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x38))))
- 1) & ((((0x38))))) ^ ((((0x38)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0x38))) >> 4)) - 1) & (
((((0x38))) >> 4))) ^ (((((0x38))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x38))) >> 4) >>
2)) - 1) & ((((((0x38))) >> 4) >> 2))) ^ (((
(((0x38))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0x38))) >> 4))) - 1) &
((((((0x38))) >> 4)))) ^ ((((((0x38))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x38))))
) - 1) & (((((0x38)))))) ^ (((((0x38))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0x38)))) >> 2)) - 1) &
((((((0x38)))) >> 2))) ^ ((((((0x38)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x38))))
)) - 1) & ((((((0x38))))))) ^ ((((((0x38)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
648
649 sc->sc_bbptype = MASK_AND_RSHIFT(sc->sc_srom[ATW_SR_CSR20],(((sc->sc_srom[(0x16/2)]) & (0x7)) >> ((((u_long
)((((((0x7)) - 1) & ((0x7))) ^ ((0x7)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0x7) >> 16)) - 1) & ((
(0x7) >> 16))) ^ (((0x7) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0x7) >> 16) >> 8)) -
1) & ((((0x7) >> 16) >> 8))) ^ ((((0x7) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0x7) >> 16) >> 8) >> 4)) - 1) & ((
(((0x7) >> 16) >> 8) >> 4))) ^ (((((0x7) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0x7) >> 16) >> 8) >> 4) >>
2)) - 1) & ((((((0x7) >> 16) >> 8) >> 4
) >> 2))) ^ ((((((0x7) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x7) >> 16) >> 8) >> 4))) - 1) &
((((((0x7) >> 16) >> 8) >> 4)))) ^ ((((((0x7
) >> 16) >> 8) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)(((((((((0x7) >> 16) >> 8
))) - 1) & (((((0x7) >> 16) >> 8)))) ^ (((((0x7
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x7) >> 16) >> 8)) >> 2)) -
1) & ((((((0x7) >> 16) >> 8)) >> 2))) ^
((((((0x7) >> 16) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7) >> 16)
>> 8)))) - 1) & ((((((0x7) >> 16) >> 8
))))) ^ ((((((0x7) >> 16) >> 8)))))) >> (1)
) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7) >> 16))) -
1) & ((((0x7) >> 16)))) ^ ((((0x7) >> 16))))
) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x7) >>
16)) >> 4)) - 1) & (((((0x7) >> 16)) >>
4))) ^ (((((0x7) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x7) >> 16)) >> 4)
>> 2)) - 1) & ((((((0x7) >> 16)) >> 4)
>> 2))) ^ ((((((0x7) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7
) >> 16)) >> 4))) - 1) & ((((((0x7) >> 16
)) >> 4)))) ^ ((((((0x7) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7) >> 16)
))) - 1) & (((((0x7) >> 16))))) ^ (((((0x7) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x7)
>> 16))) >> 2)) - 1) & ((((((0x7) >> 16
))) >> 2))) ^ ((((((0x7) >> 16))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7) >> 16)
)))) - 1) & ((((((0x7) >> 16)))))) ^ ((((((0x7) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0x7))) - 1) & (((0x7)))) ^ (((0x7))))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0x7)) >> 8)) - 1) & ((
((0x7)) >> 8))) ^ ((((0x7)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x7)) >> 8) >> 4
)) - 1) & (((((0x7)) >> 8) >> 4))) ^ (((((0x7
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x7)) >> 8) >> 4) >> 2)) - 1) &
((((((0x7)) >> 8) >> 4) >> 2))) ^ ((((((0x7
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x7)) >> 8) >> 4
))) - 1) & ((((((0x7)) >> 8) >> 4)))) ^ (((((
(0x7)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0
)) : ((((u_long)(((((((((0x7)) >> 8))) - 1) & (((((
0x7)) >> 8)))) ^ (((((0x7)) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0x7)) >> 8)) >>
2)) - 1) & ((((((0x7)) >> 8)) >> 2))) ^ ((((
((0x7)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0x7)) >> 8)))) - 1) & ((
((((0x7)) >> 8))))) ^ ((((((0x7)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7)))) - 1) &
((((0x7))))) ^ ((((0x7)))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x7))) >> 4)) - 1) & (((((0x7))) >>
4))) ^ (((((0x7))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x7))) >> 4) >> 2)) - 1) &
((((((0x7))) >> 4) >> 2))) ^ ((((((0x7))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x7))) >> 4))) - 1) & ((((((0x7))) >>
4)))) ^ ((((((0x7))) >> 4))))) >> (1)) != 0) ? 1
: 0)) : ((((u_long)(((((((((0x7))))) - 1) & (((((0x7))))
)) ^ (((((0x7))))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x7)))) >> 2)) - 1) & ((((((0x7)))) >>
2))) ^ ((((((0x7)))) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0x7)))))) - 1) & ((((((0x7))))
))) ^ ((((((0x7)))))))) >> (1)) != 0) ? 1 : 0))))))
650 ATW_SR_BBPTYPE_MASK)(((sc->sc_srom[(0x16/2)]) & (0x7)) >> ((((u_long
)((((((0x7)) - 1) & ((0x7))) ^ ((0x7)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0x7) >> 16)) - 1) & ((
(0x7) >> 16))) ^ (((0x7) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0x7) >> 16) >> 8)) -
1) & ((((0x7) >> 16) >> 8))) ^ ((((0x7) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0x7) >> 16) >> 8) >> 4)) - 1) & ((
(((0x7) >> 16) >> 8) >> 4))) ^ (((((0x7) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0x7) >> 16) >> 8) >> 4) >>
2)) - 1) & ((((((0x7) >> 16) >> 8) >> 4
) >> 2))) ^ ((((((0x7) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x7) >> 16) >> 8) >> 4))) - 1) &
((((((0x7) >> 16) >> 8) >> 4)))) ^ ((((((0x7
) >> 16) >> 8) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)(((((((((0x7) >> 16) >> 8
))) - 1) & (((((0x7) >> 16) >> 8)))) ^ (((((0x7
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x7) >> 16) >> 8)) >> 2)) -
1) & ((((((0x7) >> 16) >> 8)) >> 2))) ^
((((((0x7) >> 16) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7) >> 16)
>> 8)))) - 1) & ((((((0x7) >> 16) >> 8
))))) ^ ((((((0x7) >> 16) >> 8)))))) >> (1)
) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7) >> 16))) -
1) & ((((0x7) >> 16)))) ^ ((((0x7) >> 16))))
) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x7) >>
16)) >> 4)) - 1) & (((((0x7) >> 16)) >>
4))) ^ (((((0x7) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x7) >> 16)) >> 4)
>> 2)) - 1) & ((((((0x7) >> 16)) >> 4)
>> 2))) ^ ((((((0x7) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7
) >> 16)) >> 4))) - 1) & ((((((0x7) >> 16
)) >> 4)))) ^ ((((((0x7) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7) >> 16)
))) - 1) & (((((0x7) >> 16))))) ^ (((((0x7) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x7)
>> 16))) >> 2)) - 1) & ((((((0x7) >> 16
))) >> 2))) ^ ((((((0x7) >> 16))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7) >> 16)
)))) - 1) & ((((((0x7) >> 16)))))) ^ ((((((0x7) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0x7))) - 1) & (((0x7)))) ^ (((0x7))))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0x7)) >> 8)) - 1) & ((
((0x7)) >> 8))) ^ ((((0x7)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x7)) >> 8) >> 4
)) - 1) & (((((0x7)) >> 8) >> 4))) ^ (((((0x7
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x7)) >> 8) >> 4) >> 2)) - 1) &
((((((0x7)) >> 8) >> 4) >> 2))) ^ ((((((0x7
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x7)) >> 8) >> 4
))) - 1) & ((((((0x7)) >> 8) >> 4)))) ^ (((((
(0x7)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0
)) : ((((u_long)(((((((((0x7)) >> 8))) - 1) & (((((
0x7)) >> 8)))) ^ (((((0x7)) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0x7)) >> 8)) >>
2)) - 1) & ((((((0x7)) >> 8)) >> 2))) ^ ((((
((0x7)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0x7)) >> 8)))) - 1) & ((
((((0x7)) >> 8))))) ^ ((((((0x7)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7)))) - 1) &
((((0x7))))) ^ ((((0x7)))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x7))) >> 4)) - 1) & (((((0x7))) >>
4))) ^ (((((0x7))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x7))) >> 4) >> 2)) - 1) &
((((((0x7))) >> 4) >> 2))) ^ ((((((0x7))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x7))) >> 4))) - 1) & ((((((0x7))) >>
4)))) ^ ((((((0x7))) >> 4))))) >> (1)) != 0) ? 1
: 0)) : ((((u_long)(((((((((0x7))))) - 1) & (((((0x7))))
)) ^ (((((0x7))))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x7)))) >> 2)) - 1) & ((((((0x7)))) >>
2))) ^ ((((((0x7)))) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0x7)))))) - 1) & ((((((0x7))))
))) ^ ((((((0x7)))))))) >> (1)) != 0) ? 1 : 0))))))
;
651
652 if (sc->sc_rftype >= nitems(type_strings)(sizeof((type_strings)) / sizeof((type_strings)[0]))) {
653 printf("%s: unknown RF\n", sc->sc_dev.dv_xname);
654 return;
655 }
656 if (sc->sc_bbptype >= nitems(type_strings)(sizeof((type_strings)) / sizeof((type_strings)[0]))) {
657 printf("%s: unknown BBP\n", sc->sc_dev.dv_xname);
658 return;
659 }
660
661 printf("%s: MAC %s, BBP %s, RF %s", sc->sc_dev.dv_xname,
662 atw_printmac(sc->sc_rev), type_strings[sc->sc_bbptype],
663 type_strings[sc->sc_rftype]);
664
665 /* XXX There exists a Linux driver which seems to use RFType = 0 for
666 * MARVEL. My bug, or theirs?
667 */
668
669 reg = LSHIFT(sc->sc_rftype, ATW_SYNCTL_RFTYPE_MASK)((sc->sc_rftype) << ((((u_long)((((((0x1c00000)) - 1
) & ((0x1c00000))) ^ ((0x1c00000)))) >> (16)) != 0)
? 16 + ((((u_long)(((((((0x1c00000) >> 16)) - 1) &
(((0x1c00000) >> 16))) ^ (((0x1c00000) >> 16))))
>> (8)) != 0) ? 8 + ((((u_long)((((((((0x1c00000) >>
16) >> 8)) - 1) & ((((0x1c00000) >> 16) >>
8))) ^ ((((0x1c00000) >> 16) >> 8)))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0x1c00000) >> 16) >>
8) >> 4)) - 1) & (((((0x1c00000) >> 16) >>
8) >> 4))) ^ (((((0x1c00000) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1c00000
) >> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0x1c00000) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0x1c00000) >> 16) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x1c00000) >> 16) >> 8) >> 4))) - 1)
& ((((((0x1c00000) >> 16) >> 8) >> 4))
)) ^ ((((((0x1c00000) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1c00000
) >> 16) >> 8))) - 1) & (((((0x1c00000) >>
16) >> 8)))) ^ (((((0x1c00000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1c00000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x1c00000
) >> 16) >> 8)) >> 2))) ^ ((((((0x1c00000) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x1c00000) >> 16) >> 8)))
) - 1) & ((((((0x1c00000) >> 16) >> 8))))) ^ (
(((((0x1c00000) >> 16) >> 8)))))) >> (1)) !=
0) ? 1 : 0))) : ((((u_long)((((((((0x1c00000) >> 16)))
- 1) & ((((0x1c00000) >> 16)))) ^ ((((0x1c00000) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x1c00000
) >> 16)) >> 4)) - 1) & (((((0x1c00000) >>
16)) >> 4))) ^ (((((0x1c00000) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1c00000
) >> 16)) >> 4) >> 2)) - 1) & ((((((0x1c00000
) >> 16)) >> 4) >> 2))) ^ ((((((0x1c00000) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x1c00000) >> 16)) >> 4))
) - 1) & ((((((0x1c00000) >> 16)) >> 4)))) ^ (
(((((0x1c00000) >> 16)) >> 4))))) >> (1)) !=
0) ? 1 : 0)) : ((((u_long)(((((((((0x1c00000) >> 16)))
) - 1) & (((((0x1c00000) >> 16))))) ^ (((((0x1c00000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x1c00000) >> 16))) >> 2)) - 1) & (((((
(0x1c00000) >> 16))) >> 2))) ^ ((((((0x1c00000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x1c00000) >> 16))))) - 1) & ((((((0x1c00000
) >> 16)))))) ^ ((((((0x1c00000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x1c00000))) - 1)
& (((0x1c00000)))) ^ (((0x1c00000))))) >> (8)) != 0
) ? 8 + ((((u_long)((((((((0x1c00000)) >> 8)) - 1) &
((((0x1c00000)) >> 8))) ^ ((((0x1c00000)) >> 8))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x1c00000)) >>
8) >> 4)) - 1) & (((((0x1c00000)) >> 8) >>
4))) ^ (((((0x1c00000)) >> 8) >> 4)))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0x1c00000)) >> 8) >>
4) >> 2)) - 1) & ((((((0x1c00000)) >> 8) >>
4) >> 2))) ^ ((((((0x1c00000)) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x1c00000)) >> 8) >> 4))) - 1) & (((((
(0x1c00000)) >> 8) >> 4)))) ^ ((((((0x1c00000)) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x1c00000)) >> 8))) - 1) & (((((0x1c00000
)) >> 8)))) ^ (((((0x1c00000)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1c00000)) >> 8
)) >> 2)) - 1) & ((((((0x1c00000)) >> 8)) >>
2))) ^ ((((((0x1c00000)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c00000)) >>
8)))) - 1) & ((((((0x1c00000)) >> 8))))) ^ ((((((0x1c00000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x1c00000)))) - 1) & ((((0x1c00000))))) ^ ((((0x1c00000
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x1c00000
))) >> 4)) - 1) & (((((0x1c00000))) >> 4))) ^
(((((0x1c00000))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x1c00000))) >> 4) >> 2)) - 1
) & ((((((0x1c00000))) >> 4) >> 2))) ^ ((((((
0x1c00000))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x1c00000))) >> 4))) - 1
) & ((((((0x1c00000))) >> 4)))) ^ ((((((0x1c00000))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x1c00000))))) - 1) & (((((0x1c00000)))))) ^ (((
((0x1c00000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x1c00000)))) >> 2)) - 1) & ((((((0x1c00000)))
) >> 2))) ^ ((((((0x1c00000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c00000)))))) -
1) & ((((((0x1c00000))))))) ^ ((((((0x1c00000)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
670
671 switch (sc->sc_rftype) {
672 case ATW_RFTYPE_INTERSIL:
673 reg |= ATW_SYNCTL_CS1(1<<28);
674 break;
675 case ATW_RFTYPE_RFMD:
676 reg |= ATW_SYNCTL_CS0(1<<29);
677 break;
678 case ATW_RFTYPE_MARVEL:
679 break;
680 }
681
682 sc->sc_synctl_rd = reg | ATW_SYNCTL_RD(1<<30);
683 sc->sc_synctl_wr = reg | ATW_SYNCTL_WR(1<<31);
684
685 reg = LSHIFT(sc->sc_bbptype, ATW_BBPCTL_TYPE_MASK)((sc->sc_bbptype) << ((((u_long)((((((0x1c0000)) - 1
) & ((0x1c0000))) ^ ((0x1c0000)))) >> (16)) != 0) ?
16 + ((((u_long)(((((((0x1c0000) >> 16)) - 1) & ((
(0x1c0000) >> 16))) ^ (((0x1c0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0x1c0000) >> 16) >>
8)) - 1) & ((((0x1c0000) >> 16) >> 8))) ^ ((
((0x1c0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x1c0000) >> 16) >> 8) >>
4)) - 1) & (((((0x1c0000) >> 16) >> 8) >>
4))) ^ (((((0x1c0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1c0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0x1c0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x1c0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0x1c0000
) >> 16) >> 8) >> 4)))) ^ ((((((0x1c0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x1c0000) >> 16) >> 8))) -
1) & (((((0x1c0000) >> 16) >> 8)))) ^ (((((0x1c0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x1c0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0x1c0000) >> 16) >> 8)) >>
2))) ^ ((((((0x1c0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c0000
) >> 16) >> 8)))) - 1) & ((((((0x1c0000) >>
16) >> 8))))) ^ ((((((0x1c0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1c0000
) >> 16))) - 1) & ((((0x1c0000) >> 16)))) ^ (
(((0x1c0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x1c0000) >> 16)) >> 4)) - 1) & (((
((0x1c0000) >> 16)) >> 4))) ^ (((((0x1c0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x1c0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x1c0000) >> 16)) >> 4) >> 2))) ^ ((
((((0x1c0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c0000) >>
16)) >> 4))) - 1) & ((((((0x1c0000) >> 16)) >>
4)))) ^ ((((((0x1c0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1c0000) >>
16)))) - 1) & (((((0x1c0000) >> 16))))) ^ (((((0x1c0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x1c0000) >> 16))) >> 2)) - 1) & ((((((
0x1c0000) >> 16))) >> 2))) ^ ((((((0x1c0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x1c0000) >> 16))))) - 1) & ((((((0x1c0000
) >> 16)))))) ^ ((((((0x1c0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x1c0000))) - 1) &
(((0x1c0000)))) ^ (((0x1c0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0x1c0000)) >> 8)) - 1) & ((((0x1c0000
)) >> 8))) ^ ((((0x1c0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x1c0000)) >> 8) >>
4)) - 1) & (((((0x1c0000)) >> 8) >> 4))) ^ (
((((0x1c0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x1c0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0x1c0000)) >> 8) >>
4) >> 2))) ^ ((((((0x1c0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c0000
)) >> 8) >> 4))) - 1) & ((((((0x1c0000)) >>
8) >> 4)))) ^ ((((((0x1c0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1c0000
)) >> 8))) - 1) & (((((0x1c0000)) >> 8)))) ^ (
((((0x1c0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x1c0000)) >> 8)) >> 2)) - 1) &
((((((0x1c0000)) >> 8)) >> 2))) ^ ((((((0x1c0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x1c0000)) >> 8)))) - 1) & ((
((((0x1c0000)) >> 8))))) ^ ((((((0x1c0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1c0000
)))) - 1) & ((((0x1c0000))))) ^ ((((0x1c0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x1c0000))) >> 4)
) - 1) & (((((0x1c0000))) >> 4))) ^ (((((0x1c0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x1c0000))) >> 4) >> 2)) - 1) & ((((((0x1c0000
))) >> 4) >> 2))) ^ ((((((0x1c0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x1c0000))) >> 4))) - 1) & ((((((0x1c0000)))
>> 4)))) ^ ((((((0x1c0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1c0000))))) - 1) &
(((((0x1c0000)))))) ^ (((((0x1c0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x1c0000)))) >> 2)) - 1) &
((((((0x1c0000)))) >> 2))) ^ ((((((0x1c0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c0000
)))))) - 1) & ((((((0x1c0000))))))) ^ ((((((0x1c0000)))))
))) >> (1)) != 0) ? 1 : 0))))))
;
686
687 switch (sc->sc_bbptype) {
688 case ATW_BBPTYPE_INTERSIL:
689 reg |= ATW_BBPCTL_TWI(1<<31);
690 break;
691 case ATW_BBPTYPE_RFMD:
692 reg |= ATW_BBPCTL_RF3KADDR_ADDR((0x20) << ((((u_long)((((((0x7f000000)) - 1) & ((0x7f000000
))) ^ ((0x7f000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0x7f000000) >> 16)) - 1) & (((0x7f000000) >>
16))) ^ (((0x7f000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0x7f000000) >> 16) >> 8))
- 1) & ((((0x7f000000) >> 16) >> 8))) ^ ((((
0x7f000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x7f000000) >> 16) >> 8)
>> 4)) - 1) & (((((0x7f000000) >> 16) >>
8) >> 4))) ^ (((((0x7f000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0x7f000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0x7f000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0x7f000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0x7f000000) >> 16) >> 8) >>
4))) - 1) & ((((((0x7f000000) >> 16) >> 8) >>
4)))) ^ ((((((0x7f000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7f000000
) >> 16) >> 8))) - 1) & (((((0x7f000000) >>
16) >> 8)))) ^ (((((0x7f000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x7f000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x7f000000
) >> 16) >> 8)) >> 2))) ^ ((((((0x7f000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x7f000000) >> 16) >>
8)))) - 1) & ((((((0x7f000000) >> 16) >> 8))
))) ^ ((((((0x7f000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7f000000) >>
16))) - 1) & ((((0x7f000000) >> 16)))) ^ ((((0x7f000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0x7f000000) >> 16)) >> 4)) - 1) & (((((0x7f000000
) >> 16)) >> 4))) ^ (((((0x7f000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x7f000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x7f000000) >> 16)) >> 4) >> 2))) ^ (
(((((0x7f000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f000000) >>
16)) >> 4))) - 1) & ((((((0x7f000000) >> 16)
) >> 4)))) ^ ((((((0x7f000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7f000000
) >> 16)))) - 1) & (((((0x7f000000) >> 16))))
) ^ (((((0x7f000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0x7f000000) >> 16))) >> 2
)) - 1) & ((((((0x7f000000) >> 16))) >> 2))) ^
((((((0x7f000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f000000) >> 16
))))) - 1) & ((((((0x7f000000) >> 16)))))) ^ ((((((
0x7f000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0x7f000000))) - 1) & (((0x7f000000)
))) ^ (((0x7f000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x7f000000)) >> 8)) - 1) & ((((0x7f000000)
) >> 8))) ^ ((((0x7f000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0x7f000000)) >> 8) >>
4)) - 1) & (((((0x7f000000)) >> 8) >> 4))) ^
(((((0x7f000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x7f000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0x7f000000)) >> 8) >>
4) >> 2))) ^ ((((((0x7f000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0x7f000000)) >> 8) >> 4))) - 1) & (((
(((0x7f000000)) >> 8) >> 4)))) ^ ((((((0x7f000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0x7f000000)) >> 8))) - 1) & ((
(((0x7f000000)) >> 8)))) ^ (((((0x7f000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x7f000000
)) >> 8)) >> 2)) - 1) & ((((((0x7f000000)) >>
8)) >> 2))) ^ ((((((0x7f000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f000000
)) >> 8)))) - 1) & ((((((0x7f000000)) >> 8)))
)) ^ ((((((0x7f000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0x7f000000)))) - 1) & ((((
0x7f000000))))) ^ ((((0x7f000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x7f000000))) >> 4)) - 1) & (
((((0x7f000000))) >> 4))) ^ (((((0x7f000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x7f000000
))) >> 4) >> 2)) - 1) & ((((((0x7f000000))) >>
4) >> 2))) ^ ((((((0x7f000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f000000
))) >> 4))) - 1) & ((((((0x7f000000))) >> 4))
)) ^ ((((((0x7f000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x7f000000))))) - 1) & (((
((0x7f000000)))))) ^ (((((0x7f000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x7f000000)))) >> 2)) - 1)
& ((((((0x7f000000)))) >> 2))) ^ ((((((0x7f000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x7f000000)))))) - 1) & ((((((0x7f000000)))))))
^ ((((((0x7f000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ATW_BBPCTL_NEGEDGE_DO(1<<23) |
693 ATW_BBPCTL_CCA_ACTLO(1<<21);
694 break;
695 case ATW_BBPTYPE_MARVEL:
696 break;
697 case ATW_C_BBPTYPE_RFMD:
698 printf("%s: ADM8211C MAC/RFMD BBP not supported yet.\n",
699 sc->sc_dev.dv_xname);
700 break;
701 }
702
703 sc->sc_bbpctl_wr = reg | ATW_BBPCTL_WR(1<<17);
704 sc->sc_bbpctl_rd = reg | ATW_BBPCTL_RD(1<<16);
705
706 /*
707 * From this point forward, the attachment cannot fail. A failure
708 * before this point releases all resources that may have been
709 * allocated.
710 */
711 sc->sc_flags |= ATWF_ATTACHED0x00000800 /* | ATWF_RTSCTS */;
712
713 ATW_DPRINTF((" SROM MAC %04x%04x%04x",
714 htole16(sc->sc_srom[ATW_SR_MAC00]),
715 htole16(sc->sc_srom[ATW_SR_MAC01]),
716 htole16(sc->sc_srom[ATW_SR_MAC10])));
717
718 srom_major = MASK_AND_RSHIFT(sc->sc_srom[ATW_SR_FORMAT_VERSION],(((sc->sc_srom[(0x02/2)]) & (0xff)) >> ((((u_long
)((((((0xff)) - 1) & ((0xff))) ^ ((0xff)))) >> (16)
) != 0) ? 16 + ((((u_long)(((((((0xff) >> 16)) - 1) &
(((0xff) >> 16))) ^ (((0xff) >> 16)))) >> (
8)) != 0) ? 8 + ((((u_long)((((((((0xff) >> 16) >>
8)) - 1) & ((((0xff) >> 16) >> 8))) ^ ((((0xff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff) >> 16) >> 8) >> 4)) - 1) &
(((((0xff) >> 16) >> 8) >> 4))) ^ (((((0xff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff) >> 16) >> 8) >>
4))) - 1) & ((((((0xff) >> 16) >> 8) >>
4)))) ^ ((((((0xff) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >>
16) >> 8))) - 1) & (((((0xff) >> 16) >>
8)))) ^ (((((0xff) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff) >> 16) >>
8)) >> 2))) ^ ((((((0xff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8)))) - 1) & ((((((0xff) >>
16) >> 8))))) ^ ((((((0xff) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff)
>> 16))) - 1) & ((((0xff) >> 16)))) ^ ((((0xff
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff) >> 16)) >> 4)) - 1) & (((((0xff) >>
16)) >> 4))) ^ (((((0xff) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xff) >>
16)) >> 4) >> 2))) ^ ((((((0xff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff) >> 16)) >> 4))) - 1) & ((((((
0xff) >> 16)) >> 4)))) ^ ((((((0xff) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff) >> 16)))) - 1) & (((((0xff) >>
16))))) ^ (((((0xff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xff) >> 16))) >> 2)) -
1) & ((((((0xff) >> 16))) >> 2))) ^ ((((((0xff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff) >> 16))))) - 1) & (((((
(0xff) >> 16)))))) ^ ((((((0xff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))) - 1) &
(((0xff)))) ^ (((0xff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff)) >> 8)) - 1) & ((((0xff)) >> 8
))) ^ ((((0xff)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0xff)) >> 8) >> 4)) - 1) & (
((((0xff)) >> 8) >> 4))) ^ (((((0xff)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff)) >> 8) >> 4) >> 2)) - 1) & (((
(((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4)
)) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ (((((
(0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
719 ATW_SR_MAJOR_MASK)(((sc->sc_srom[(0x02/2)]) & (0xff)) >> ((((u_long
)((((((0xff)) - 1) & ((0xff))) ^ ((0xff)))) >> (16)
) != 0) ? 16 + ((((u_long)(((((((0xff) >> 16)) - 1) &
(((0xff) >> 16))) ^ (((0xff) >> 16)))) >> (
8)) != 0) ? 8 + ((((u_long)((((((((0xff) >> 16) >>
8)) - 1) & ((((0xff) >> 16) >> 8))) ^ ((((0xff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff) >> 16) >> 8) >> 4)) - 1) &
(((((0xff) >> 16) >> 8) >> 4))) ^ (((((0xff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff) >> 16) >> 8) >>
4))) - 1) & ((((((0xff) >> 16) >> 8) >>
4)))) ^ ((((((0xff) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >>
16) >> 8))) - 1) & (((((0xff) >> 16) >>
8)))) ^ (((((0xff) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff) >> 16) >>
8)) >> 2))) ^ ((((((0xff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8)))) - 1) & ((((((0xff) >>
16) >> 8))))) ^ ((((((0xff) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff)
>> 16))) - 1) & ((((0xff) >> 16)))) ^ ((((0xff
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff) >> 16)) >> 4)) - 1) & (((((0xff) >>
16)) >> 4))) ^ (((((0xff) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xff) >>
16)) >> 4) >> 2))) ^ ((((((0xff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff) >> 16)) >> 4))) - 1) & ((((((
0xff) >> 16)) >> 4)))) ^ ((((((0xff) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff) >> 16)))) - 1) & (((((0xff) >>
16))))) ^ (((((0xff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xff) >> 16))) >> 2)) -
1) & ((((((0xff) >> 16))) >> 2))) ^ ((((((0xff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff) >> 16))))) - 1) & (((((
(0xff) >> 16)))))) ^ ((((((0xff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))) - 1) &
(((0xff)))) ^ (((0xff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff)) >> 8)) - 1) & ((((0xff)) >> 8
))) ^ ((((0xff)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0xff)) >> 8) >> 4)) - 1) & (
((((0xff)) >> 8) >> 4))) ^ (((((0xff)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff)) >> 8) >> 4) >> 2)) - 1) & (((
(((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4)
)) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ (((((
(0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
720
721 if (srom_major < 2)
722 sc->sc_rf3000_options1 = 0;
723 else if (sc->sc_rev == ATW_REVISION_BA) {
724 sc->sc_rf3000_options1 =
725 MASK_AND_RSHIFT(sc->sc_srom[ATW_SR_CR28_CR03],(((sc->sc_srom[(0x18/2)]) & (0xff00)) >> ((((u_long
)((((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) -
1) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)
))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))
726 ATW_SR_CR28_MASK)(((sc->sc_srom[(0x18/2)]) & (0xff00)) >> ((((u_long
)((((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) -
1) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)
))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
727 } else
728 sc->sc_rf3000_options1 = 0;
729
730 sc->sc_rf3000_options2 = MASK_AND_RSHIFT(sc->sc_srom[ATW_SR_CTRY_CR29],(((sc->sc_srom[(0x1A/2)]) & (0xff)) >> ((((u_long
)((((((0xff)) - 1) & ((0xff))) ^ ((0xff)))) >> (16)
) != 0) ? 16 + ((((u_long)(((((((0xff) >> 16)) - 1) &
(((0xff) >> 16))) ^ (((0xff) >> 16)))) >> (
8)) != 0) ? 8 + ((((u_long)((((((((0xff) >> 16) >>
8)) - 1) & ((((0xff) >> 16) >> 8))) ^ ((((0xff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff) >> 16) >> 8) >> 4)) - 1) &
(((((0xff) >> 16) >> 8) >> 4))) ^ (((((0xff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff) >> 16) >> 8) >>
4))) - 1) & ((((((0xff) >> 16) >> 8) >>
4)))) ^ ((((((0xff) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >>
16) >> 8))) - 1) & (((((0xff) >> 16) >>
8)))) ^ (((((0xff) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff) >> 16) >>
8)) >> 2))) ^ ((((((0xff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8)))) - 1) & ((((((0xff) >>
16) >> 8))))) ^ ((((((0xff) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff)
>> 16))) - 1) & ((((0xff) >> 16)))) ^ ((((0xff
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff) >> 16)) >> 4)) - 1) & (((((0xff) >>
16)) >> 4))) ^ (((((0xff) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xff) >>
16)) >> 4) >> 2))) ^ ((((((0xff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff) >> 16)) >> 4))) - 1) & ((((((
0xff) >> 16)) >> 4)))) ^ ((((((0xff) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff) >> 16)))) - 1) & (((((0xff) >>
16))))) ^ (((((0xff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xff) >> 16))) >> 2)) -
1) & ((((((0xff) >> 16))) >> 2))) ^ ((((((0xff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff) >> 16))))) - 1) & (((((
(0xff) >> 16)))))) ^ ((((((0xff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))) - 1) &
(((0xff)))) ^ (((0xff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff)) >> 8)) - 1) & ((((0xff)) >> 8
))) ^ ((((0xff)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0xff)) >> 8) >> 4)) - 1) & (
((((0xff)) >> 8) >> 4))) ^ (((((0xff)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff)) >> 8) >> 4) >> 2)) - 1) & (((
(((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4)
)) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ (((((
(0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
731 ATW_SR_CR29_MASK)(((sc->sc_srom[(0x1A/2)]) & (0xff)) >> ((((u_long
)((((((0xff)) - 1) & ((0xff))) ^ ((0xff)))) >> (16)
) != 0) ? 16 + ((((u_long)(((((((0xff) >> 16)) - 1) &
(((0xff) >> 16))) ^ (((0xff) >> 16)))) >> (
8)) != 0) ? 8 + ((((u_long)((((((((0xff) >> 16) >>
8)) - 1) & ((((0xff) >> 16) >> 8))) ^ ((((0xff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff) >> 16) >> 8) >> 4)) - 1) &
(((((0xff) >> 16) >> 8) >> 4))) ^ (((((0xff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff) >> 16) >> 8) >>
4))) - 1) & ((((((0xff) >> 16) >> 8) >>
4)))) ^ ((((((0xff) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >>
16) >> 8))) - 1) & (((((0xff) >> 16) >>
8)))) ^ (((((0xff) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff) >> 16) >>
8)) >> 2))) ^ ((((((0xff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8)))) - 1) & ((((((0xff) >>
16) >> 8))))) ^ ((((((0xff) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff)
>> 16))) - 1) & ((((0xff) >> 16)))) ^ ((((0xff
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff) >> 16)) >> 4)) - 1) & (((((0xff) >>
16)) >> 4))) ^ (((((0xff) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xff) >>
16)) >> 4) >> 2))) ^ ((((((0xff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff) >> 16)) >> 4))) - 1) & ((((((
0xff) >> 16)) >> 4)))) ^ ((((((0xff) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff) >> 16)))) - 1) & (((((0xff) >>
16))))) ^ (((((0xff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xff) >> 16))) >> 2)) -
1) & ((((((0xff) >> 16))) >> 2))) ^ ((((((0xff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff) >> 16))))) - 1) & (((((
(0xff) >> 16)))))) ^ ((((((0xff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))) - 1) &
(((0xff)))) ^ (((0xff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff)) >> 8)) - 1) & ((((0xff)) >> 8
))) ^ ((((0xff)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0xff)) >> 8) >> 4)) - 1) & (
((((0xff)) >> 8) >> 4))) ^ (((((0xff)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff)) >> 8) >> 4) >> 2)) - 1) & (((
(((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4)
)) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ (((((
(0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
732
733 country_code = MASK_AND_RSHIFT(sc->sc_srom[ATW_SR_CTRY_CR29],(((sc->sc_srom[(0x1A/2)]) & (0xff00)) >> ((((u_long
)((((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) -
1) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)
))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))
734 ATW_SR_CTRY_MASK)(((sc->sc_srom[(0x1A/2)]) & (0xff00)) >> ((((u_long
)((((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) -
1) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)
))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
735
736#define ADD_CHANNEL(_ic, _chan)do { _ic->ic_channels[_chan].ic_flags = (0x0080 | 0x0020);
_ic->ic_channels[_chan].ic_freq = ieee80211_ieee2mhz(_chan
, _ic->ic_channels[_chan].ic_flags);} while (0)
do { \
737 _ic->ic_channels[_chan].ic_flags = IEEE80211_CHAN_B(0x0080 | 0x0020); \
738 _ic->ic_channels[_chan].ic_freq = \
739 ieee80211_ieee2mhz(_chan, _ic->ic_channels[_chan].ic_flags);\
740} while (0)
741
742 /* Find available channels */
743 switch (country_code) {
744 case COUNTRY_MMK26: /* 1-14 */
745 ADD_CHANNEL(ic, 14)do { ic->ic_channels[14].ic_flags = (0x0080 | 0x0020); ic->
ic_channels[14].ic_freq = ieee80211_ieee2mhz(14, ic->ic_channels
[14].ic_flags);} while (0)
;
746 /*FALLTHROUGH*/
747 case COUNTRY_ETSI2: /* 1-13 */
748 for (i = 1; i <= 13; i++)
749 ADD_CHANNEL(ic, i)do { ic->ic_channels[i].ic_flags = (0x0080 | 0x0020); ic->
ic_channels[i].ic_freq = ieee80211_ieee2mhz(i, ic->ic_channels
[i].ic_flags);} while (0)
;
750 break;
751 case COUNTRY_FCC0: /* 1-11 */
752 case COUNTRY_IC1: /* 1-11 */
753 for (i = 1; i <= 11; i++)
754 ADD_CHANNEL(ic, i)do { ic->ic_channels[i].ic_flags = (0x0080 | 0x0020); ic->
ic_channels[i].ic_freq = ieee80211_ieee2mhz(i, ic->ic_channels
[i].ic_flags);} while (0)
;
755 break;
756 case COUNTRY_MMK5: /* 14 */
757 ADD_CHANNEL(ic, 14)do { ic->ic_channels[14].ic_flags = (0x0080 | 0x0020); ic->
ic_channels[14].ic_freq = ieee80211_ieee2mhz(14, ic->ic_channels
[14].ic_flags);} while (0)
;
758 break;
759 case COUNTRY_FRANCE4: /* 10-13 */
760 for (i = 10; i <= 13; i++)
761 ADD_CHANNEL(ic, i)do { ic->ic_channels[i].ic_flags = (0x0080 | 0x0020); ic->
ic_channels[i].ic_freq = ieee80211_ieee2mhz(i, ic->ic_channels
[i].ic_flags);} while (0)
;
762 break;
763 default: /* assume channels 10-11 */
764 case COUNTRY_SPAIN3: /* 10-11 */
765 for (i = 10; i <= 11; i++)
766 ADD_CHANNEL(ic, i)do { ic->ic_channels[i].ic_flags = (0x0080 | 0x0020); ic->
ic_channels[i].ic_freq = ieee80211_ieee2mhz(i, ic->ic_channels
[i].ic_flags);} while (0)
;
767 break;
768 }
769
770 /* Read the MAC address. */
771 reg = ATW_READ(sc, ATW_PAR0)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x94))));
772 ic->ic_myaddr[0] = MASK_AND_RSHIFT(reg, ATW_PAR0_PAB0_MASK)(((reg) & (0xff)) >> ((((u_long)((((((0xff)) - 1) &
((0xff))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff) >> 16)) - 1) & (((0xff) >> 16))
) ^ (((0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff) >> 16) >> 8)) - 1) & ((((0xff)
>> 16) >> 8))) ^ ((((0xff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >>
16) >> 8) >> 4)) - 1) & (((((0xff) >> 16
) >> 8) >> 4))) ^ (((((0xff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xff) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff
) >> 16) >> 8) >> 4)))) ^ ((((((0xff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff) >> 16) >> 8))) - 1)
& (((((0xff) >> 16) >> 8)))) ^ (((((0xff) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16) >> 8)) >> 2)) - 1) &
((((((0xff) >> 16) >> 8)) >> 2))) ^ ((((((
0xff) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16) >>
8)))) - 1) & ((((((0xff) >> 16) >> 8))))) ^ (
(((((0xff) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff) >> 16))) - 1) &
((((0xff) >> 16)))) ^ ((((0xff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16)) >>
4)) - 1) & (((((0xff) >> 16)) >> 4))) ^ ((((
(0xff) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xff) >> 16)) >> 4) >>
2)) - 1) & ((((((0xff) >> 16)) >> 4) >>
2))) ^ ((((((0xff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
)) >> 4))) - 1) & ((((((0xff) >> 16)) >>
4)))) ^ ((((((0xff) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >> 16))
)) - 1) & (((((0xff) >> 16))))) ^ (((((0xff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff
) >> 16))) >> 2)) - 1) & ((((((0xff) >>
16))) >> 2))) ^ ((((((0xff) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)
>> 16))))) - 1) & ((((((0xff) >> 16)))))) ^ (
(((((0xff) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0xff))) - 1) & (((0xff)))) ^ (((0xff
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff)) >>
8)) - 1) & ((((0xff)) >> 8))) ^ ((((0xff)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff)) >>
8) >> 4)) - 1) & (((((0xff)) >> 8) >> 4
))) ^ (((((0xff)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff)) >> 8) >> 4)
>> 2)) - 1) & ((((((0xff)) >> 8) >> 4)
>> 2))) ^ ((((((0xff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)) >> 8) >> 4))) - 1) & ((((((0xff)) >>
8) >> 4)))) ^ ((((((0xff)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff)) >>
8))) - 1) & (((((0xff)) >> 8)))) ^ (((((0xff)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))
>> 8)) >> 2)) - 1) & ((((((0xff)) >> 8
)) >> 2))) ^ ((((((0xff)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8
)))) - 1) & ((((((0xff)) >> 8))))) ^ ((((((0xff)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff)))) - 1) & ((((0xff))))) ^ ((((0xff)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1)
& (((((0xff))) >> 4))) ^ (((((0xff))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >>
4) >> 2)) - 1) & ((((((0xff))) >> 4) >>
2))) ^ ((((((0xff))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))) >> 4)))
- 1) & ((((((0xff))) >> 4)))) ^ ((((((0xff))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff
))))) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1
) & ((((((0xff)))) >> 2))) ^ ((((((0xff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)))))) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
773 ic->ic_myaddr[1] = MASK_AND_RSHIFT(reg, ATW_PAR0_PAB1_MASK)(((reg) & (0xff00)) >> ((((u_long)((((((0xff00)) - 1
) & ((0xff00))) ^ ((0xff00)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0xff00) >> 16)) - 1) & (((0xff00
) >> 16))) ^ (((0xff00) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xff00) >> 16) >> 8)
) - 1) & ((((0xff00) >> 16) >> 8))) ^ ((((0xff00
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16) >> 8) >> 4)) - 1) &
(((((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
774 ic->ic_myaddr[2] = MASK_AND_RSHIFT(reg, ATW_PAR0_PAB2_MASK)(((reg) & (0xff0000)) >> ((((u_long)((((((0xff0000)
) - 1) & ((0xff0000))) ^ ((0xff0000)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xff0000) >> 16)) - 1) &
(((0xff0000) >> 16))) ^ (((0xff0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >>
8)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((
((0xff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0))))))
;
775 ic->ic_myaddr[3] = MASK_AND_RSHIFT(reg, ATW_PAR0_PAB3_MASK)(((reg) & (0xff000000)) >> ((((u_long)((((((0xff000000
)) - 1) & ((0xff000000))) ^ ((0xff000000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xff000000) >> 16)) -
1) & (((0xff000000) >> 16))) ^ (((0xff000000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000
) >> 16) >> 8)) - 1) & ((((0xff000000) >>
16) >> 8))) ^ ((((0xff000000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)
>> 16) >> 8) >> 4)) - 1) & (((((0xff000000
) >> 16) >> 8) >> 4))) ^ (((((0xff000000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xff000000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8) >> 4))) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4)))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff000000) >> 16) >> 8))) - 1) & ((
(((0xff000000) >> 16) >> 8)))) ^ (((((0xff000000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xff000000) >> 16) >> 8)) >>
2))) ^ ((((((0xff000000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8)))) - 1) & ((((((0xff000000) >>
16) >> 8))))) ^ ((((((0xff000000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff000000) >> 16))) - 1) & ((((0xff000000) >>
16)))) ^ ((((0xff000000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff000000) >> 16)) >>
4)) - 1) & (((((0xff000000) >> 16)) >> 4))) ^
(((((0xff000000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16)) >>
4) >> 2))) ^ ((((((0xff000000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000) >> 16)) >> 4))) - 1) & ((
((((0xff000000) >> 16)) >> 4)))) ^ ((((((0xff000000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xff000000) >> 16)))) - 1) &
(((((0xff000000) >> 16))))) ^ (((((0xff000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16))) >> 2)) - 1) & ((((((0xff000000) >>
16))) >> 2))) ^ ((((((0xff000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16))))) - 1) & ((((((0xff000000) >> 16))
)))) ^ ((((((0xff000000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xff000000))) - 1) & ((
(0xff000000)))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff000000)) >> 8)) - 1) & ((((
0xff000000)) >> 8))) ^ ((((0xff000000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8
) >> 4)) - 1) & (((((0xff000000)) >> 8) >>
4))) ^ (((((0xff000000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xff000000)) >>
8) >> 4) >> 2))) ^ ((((((0xff000000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000)) >> 8) >> 4))) - 1
) & ((((((0xff000000)) >> 8) >> 4)))) ^ (((((
(0xff000000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000)) >> 8))) -
1) & (((((0xff000000)) >> 8)))) ^ (((((0xff000000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff000000)) >> 8)) >> 2)) - 1) & ((((((0xff000000
)) >> 8)) >> 2))) ^ ((((((0xff000000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000)) >> 8)))) - 1) & ((((((0xff000000
)) >> 8))))) ^ ((((((0xff000000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1
) & ((((0xff000000))))) ^ ((((0xff000000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000))) >> 4)
) - 1) & (((((0xff000000))) >> 4))) ^ (((((0xff000000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff000000))) >> 4) >> 2)) - 1) & ((((((
0xff000000))) >> 4) >> 2))) ^ ((((((0xff000000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xff000000))) >> 4))) - 1) & (((
(((0xff000000))) >> 4)))) ^ ((((((0xff000000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
))))) - 1) & (((((0xff000000)))))) ^ (((((0xff000000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)
))) >> 2)) - 1) & ((((((0xff000000)))) >> 2))
) ^ ((((((0xff000000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000)))))) - 1) & ((
((((0xff000000))))))) ^ ((((((0xff000000)))))))) >> (1)
) != 0) ? 1 : 0))))))
;
776 reg = ATW_READ(sc, ATW_PAR1)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x98))));
777 ic->ic_myaddr[4] = MASK_AND_RSHIFT(reg, ATW_PAR1_PAB4_MASK)(((reg) & (0xff)) >> ((((u_long)((((((0xff)) - 1) &
((0xff))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff) >> 16)) - 1) & (((0xff) >> 16))
) ^ (((0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff) >> 16) >> 8)) - 1) & ((((0xff)
>> 16) >> 8))) ^ ((((0xff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >>
16) >> 8) >> 4)) - 1) & (((((0xff) >> 16
) >> 8) >> 4))) ^ (((((0xff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xff) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff
) >> 16) >> 8) >> 4)))) ^ ((((((0xff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff) >> 16) >> 8))) - 1)
& (((((0xff) >> 16) >> 8)))) ^ (((((0xff) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16) >> 8)) >> 2)) - 1) &
((((((0xff) >> 16) >> 8)) >> 2))) ^ ((((((
0xff) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16) >>
8)))) - 1) & ((((((0xff) >> 16) >> 8))))) ^ (
(((((0xff) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff) >> 16))) - 1) &
((((0xff) >> 16)))) ^ ((((0xff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16)) >>
4)) - 1) & (((((0xff) >> 16)) >> 4))) ^ ((((
(0xff) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xff) >> 16)) >> 4) >>
2)) - 1) & ((((((0xff) >> 16)) >> 4) >>
2))) ^ ((((((0xff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
)) >> 4))) - 1) & ((((((0xff) >> 16)) >>
4)))) ^ ((((((0xff) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >> 16))
)) - 1) & (((((0xff) >> 16))))) ^ (((((0xff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff
) >> 16))) >> 2)) - 1) & ((((((0xff) >>
16))) >> 2))) ^ ((((((0xff) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)
>> 16))))) - 1) & ((((((0xff) >> 16)))))) ^ (
(((((0xff) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0xff))) - 1) & (((0xff)))) ^ (((0xff
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff)) >>
8)) - 1) & ((((0xff)) >> 8))) ^ ((((0xff)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff)) >>
8) >> 4)) - 1) & (((((0xff)) >> 8) >> 4
))) ^ (((((0xff)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff)) >> 8) >> 4)
>> 2)) - 1) & ((((((0xff)) >> 8) >> 4)
>> 2))) ^ ((((((0xff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)) >> 8) >> 4))) - 1) & ((((((0xff)) >>
8) >> 4)))) ^ ((((((0xff)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff)) >>
8))) - 1) & (((((0xff)) >> 8)))) ^ (((((0xff)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))
>> 8)) >> 2)) - 1) & ((((((0xff)) >> 8
)) >> 2))) ^ ((((((0xff)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8
)))) - 1) & ((((((0xff)) >> 8))))) ^ ((((((0xff)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff)))) - 1) & ((((0xff))))) ^ ((((0xff)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1)
& (((((0xff))) >> 4))) ^ (((((0xff))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >>
4) >> 2)) - 1) & ((((((0xff))) >> 4) >>
2))) ^ ((((((0xff))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))) >> 4)))
- 1) & ((((((0xff))) >> 4)))) ^ ((((((0xff))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff
))))) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1
) & ((((((0xff)))) >> 2))) ^ ((((((0xff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)))))) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
778 ic->ic_myaddr[5] = MASK_AND_RSHIFT(reg, ATW_PAR1_PAB5_MASK)(((reg) & (0xff00)) >> ((((u_long)((((((0xff00)) - 1
) & ((0xff00))) ^ ((0xff00)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0xff00) >> 16)) - 1) & (((0xff00
) >> 16))) ^ (((0xff00) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xff00) >> 16) >> 8)
) - 1) & ((((0xff00) >> 16) >> 8))) ^ ((((0xff00
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16) >> 8) >> 4)) - 1) &
(((((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
779
780 if (IEEE80211_ADDR_EQ(ic->ic_myaddr, empty_macaddr)(__builtin_memcmp((ic->ic_myaddr), (empty_macaddr), (6)) ==
0)
) {
781 printf(" could not get mac address, attach failed\n");
782 return;
783 }
784
785 printf(", address %s\n", ether_sprintf(ic->ic_myaddr));
786
787 memcpy(ifp->if_xname, sc->sc_dev.dv_xname, IFNAMSIZ)__builtin_memcpy((ifp->if_xname), (sc->sc_dev.dv_xname)
, (16))
;
788 ifp->if_softc = sc;
789 ifp->if_flags = IFF_SIMPLEX0x800 | IFF_BROADCAST0x2 | IFF_MULTICAST0x8000;
790 ifp->if_ioctl = atw_ioctl;
791 ifp->if_start = atw_start;
792 ifp->if_watchdog = atw_watchdog;
793
794 ic->ic_phytype = IEEE80211_T_DS;
795 ic->ic_opmode = IEEE80211_M_STA;
796 ic->ic_caps = IEEE80211_C_PMGT0x00000004 | IEEE80211_C_MONITOR0x00000200 | IEEE80211_C_WEP0x00000001;
797#ifndef IEEE80211_STA_ONLY
798 ic->ic_caps |= IEEE80211_C_IBSS0x00000002;
799#endif
800 ic->ic_sup_rates[IEEE80211_MODE_11B] = ieee80211_std_rateset_11b;
801
802 /*
803 * Call MI attach routines.
804 */
805
806 if_attach(ifp);
807 ieee80211_ifattach(ifp);
808
809 sc->sc_newstate = ic->ic_newstate;
810 ic->ic_newstate = atw_newstate;
811
812#ifndef IEEE80211_STA_ONLY
813 sc->sc_recv_mgmt = ic->ic_recv_mgmt;
814 ic->ic_recv_mgmt = atw_recv_mgmt;
815#endif
816
817 sc->sc_node_free = ic->ic_node_free;
818 ic->ic_node_free = atw_node_free;
819
820 sc->sc_node_alloc = ic->ic_node_alloc;
821 ic->ic_node_alloc = atw_node_alloc;
822
823 /* possibly we should fill in our own sc_send_prresp, since
824 * the ADM8211 is probably sending probe responses in ad hoc
825 * mode.
826 */
827
828 /* complete initialization */
829 ieee80211_media_init(ifp, atw_media_change, atw_media_status);
830 timeout_set(&sc->sc_scan_to, atw_next_scan, sc);
831
832#if NBPFILTER1 > 0
833 bpfattach(&sc->sc_radiobpf, ifp, DLT_IEEE802_11_RADIO127,
834 sizeof(struct ieee80211_frame) + 64);
835#endif
836
837 memset(&sc->sc_rxtapu, 0, sizeof(sc->sc_rxtapu))__builtin_memset((&sc->sc_rxtapu), (0), (sizeof(sc->
sc_rxtapu)))
;
838 sc->sc_rxtapsc_rxtapu.tap.ar_ihdr.it_len = sizeof(sc->sc_rxtapu);
839 sc->sc_rxtapsc_rxtapu.tap.ar_ihdr.it_present = ATW_RX_RADIOTAP_PRESENT((1 << IEEE80211_RADIOTAP_FLAGS) | (1 << IEEE80211_RADIOTAP_RATE
) | (1 << IEEE80211_RADIOTAP_CHANNEL) | (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL
))
;
840
841 memset(&sc->sc_txtapu, 0, sizeof(sc->sc_txtapu))__builtin_memset((&sc->sc_txtapu), (0), (sizeof(sc->
sc_txtapu)))
;
842 sc->sc_txtapsc_txtapu.tap.at_ihdr.it_len = sizeof(sc->sc_txtapu);
843 sc->sc_txtapsc_txtapu.tap.at_ihdr.it_present = ATW_TX_RADIOTAP_PRESENT((1 << IEEE80211_RADIOTAP_FLAGS) | (1 << IEEE80211_RADIOTAP_RATE
) | (1 << IEEE80211_RADIOTAP_CHANNEL))
;
844
845 return;
846
847 /*
848 * Free any resources we've allocated during the failed attach
849 * attempt. Do this in reverse order and fall through.
850 */
851 fail_5:
852 for (i = 0; i < ATW_NRXDESC64; i++) {
853 if (sc->sc_rxsoft[i].rxs_dmamap == NULL((void *)0))
854 continue;
855 bus_dmamap_destroy(sc->sc_dmat, sc->sc_rxsoft[i].rxs_dmamap)(*(sc->sc_dmat)->_dmamap_destroy)((sc->sc_dmat), (sc
->sc_rxsoft[i].rxs_dmamap))
;
856 }
857 fail_4:
858 for (i = 0; i < ATW_TXQUEUELEN64; i++) {
859 if (sc->sc_txsoft[i].txs_dmamap == NULL((void *)0))
860 continue;
861 bus_dmamap_destroy(sc->sc_dmat, sc->sc_txsoft[i].txs_dmamap)(*(sc->sc_dmat)->_dmamap_destroy)((sc->sc_dmat), (sc
->sc_txsoft[i].txs_dmamap))
;
862 }
863 bus_dmamap_unload(sc->sc_dmat, sc->sc_cddmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (sc->
sc_cddmamap))
;
864 fail_3:
865 bus_dmamap_destroy(sc->sc_dmat, sc->sc_cddmamap)(*(sc->sc_dmat)->_dmamap_destroy)((sc->sc_dmat), (sc
->sc_cddmamap))
;
866 fail_2:
867 bus_dmamem_unmap(sc->sc_dmat, (caddr_t)sc->sc_control_data,(*(sc->sc_dmat)->_dmamem_unmap)((sc->sc_dmat), ((caddr_t
)sc->sc_control_data), (sizeof(struct atw_control_data)))
868 sizeof(struct atw_control_data))(*(sc->sc_dmat)->_dmamem_unmap)((sc->sc_dmat), ((caddr_t
)sc->sc_control_data), (sizeof(struct atw_control_data)))
;
869 fail_1:
870 bus_dmamem_free(sc->sc_dmat, &sc->sc_cdseg, sc->sc_cdnseg)(*(sc->sc_dmat)->_dmamem_free)((sc->sc_dmat), (&
sc->sc_cdseg), (sc->sc_cdnseg))
;
871 fail_0:
872 return;
873}
874
875struct ieee80211_node *
876atw_node_alloc(struct ieee80211com *ic)
877{
878 struct atw_softc *sc = (struct atw_softc *)ic->ic_ific_ac.ac_if.if_softc;
879 struct ieee80211_node *ni = (*sc->sc_node_alloc)(ic);
880
881 DPRINTF(sc, ("%s: alloc node %p\n", sc->sc_dev.dv_xname, ni));
882 return ni;
883}
884
885void
886atw_node_free(struct ieee80211com *ic, struct ieee80211_node *ni)
887{
888 struct atw_softc *sc = (struct atw_softc *)ic->ic_ific_ac.ac_if.if_softc;
889
890 DPRINTF(sc, ("%s: freeing node %p %s\n", sc->sc_dev.dv_xname, ni,
891 ether_sprintf(ni->ni_bssid)));
892 (*sc->sc_node_free)(ic, ni);
893}
894
895
896static void
897atw_test1_reset(struct atw_softc *sc)
898{
899 switch (sc->sc_rev) {
900 case ATW_REVISION_BA:
901 if (1 /* XXX condition on transceiver type */) {
902 ATW_SET(sc, ATW_TEST1, ATW_TEST1_TESTMODE_MONITOR)((((sc))->sc_st)->write_4((((sc))->sc_sh), (((0x44))
), ((((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x44
))))) | (((0x3) << ((((u_long)((((((0x30)) - 1) & (
(0x30))) ^ ((0x30)))) >> (16)) != 0) ? 16 + ((((u_long)
(((((((0x30) >> 16)) - 1) & (((0x30) >> 16)))
^ (((0x30) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x30) >> 16) >> 8)) - 1) & ((((0x30)
>> 16) >> 8))) ^ ((((0x30) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x30) >>
16) >> 8) >> 4)) - 1) & (((((0x30) >> 16
) >> 8) >> 4))) ^ (((((0x30) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x30) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0x30) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0x30) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x30
) >> 16) >> 8) >> 4))) - 1) & ((((((0x30
) >> 16) >> 8) >> 4)))) ^ ((((((0x30) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x30) >> 16) >> 8))) - 1)
& (((((0x30) >> 16) >> 8)))) ^ (((((0x30) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x30) >> 16) >> 8)) >> 2)) - 1) &
((((((0x30) >> 16) >> 8)) >> 2))) ^ ((((((
0x30) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0x30) >> 16) >>
8)))) - 1) & ((((((0x30) >> 16) >> 8))))) ^ (
(((((0x30) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0x30) >> 16))) - 1) &
((((0x30) >> 16)))) ^ ((((0x30) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x30) >> 16)) >>
4)) - 1) & (((((0x30) >> 16)) >> 4))) ^ ((((
(0x30) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0x30) >> 16)) >> 4) >>
2)) - 1) & ((((((0x30) >> 16)) >> 4) >>
2))) ^ ((((((0x30) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x30) >> 16
)) >> 4))) - 1) & ((((((0x30) >> 16)) >>
4)))) ^ ((((((0x30) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x30) >> 16))
)) - 1) & (((((0x30) >> 16))))) ^ (((((0x30) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x30
) >> 16))) >> 2)) - 1) & ((((((0x30) >>
16))) >> 2))) ^ ((((((0x30) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x30)
>> 16))))) - 1) & ((((((0x30) >> 16)))))) ^ (
(((((0x30) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0x30))) - 1) & (((0x30)))) ^ (((0x30
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0x30)) >>
8)) - 1) & ((((0x30)) >> 8))) ^ ((((0x30)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x30)) >>
8) >> 4)) - 1) & (((((0x30)) >> 8) >> 4
))) ^ (((((0x30)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x30)) >> 8) >> 4)
>> 2)) - 1) & ((((((0x30)) >> 8) >> 4)
>> 2))) ^ ((((((0x30)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x30
)) >> 8) >> 4))) - 1) & ((((((0x30)) >>
8) >> 4)))) ^ ((((((0x30)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x30)) >>
8))) - 1) & (((((0x30)) >> 8)))) ^ (((((0x30)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x30))
>> 8)) >> 2)) - 1) & ((((((0x30)) >> 8
)) >> 2))) ^ ((((((0x30)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x30)) >> 8
)))) - 1) & ((((((0x30)) >> 8))))) ^ ((((((0x30)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0x30)))) - 1) & ((((0x30))))) ^ ((((0x30)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0x30))) >> 4)) - 1)
& (((((0x30))) >> 4))) ^ (((((0x30))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x30))) >>
4) >> 2)) - 1) & ((((((0x30))) >> 4) >>
2))) ^ ((((((0x30))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x30))) >> 4)))
- 1) & ((((((0x30))) >> 4)))) ^ ((((((0x30))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x30
))))) - 1) & (((((0x30)))))) ^ (((((0x30))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0x30)))) >> 2)) - 1
) & ((((((0x30)))) >> 2))) ^ ((((((0x30)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x30
)))))) - 1) & ((((((0x30))))))) ^ ((((((0x30)))))))) >>
(1)) != 0) ? 1 : 0)))))))))))
;
903 }
904 break;
905 case ATW_REVISION_CA:
906 ATW_CLR(sc, ATW_TEST1, ATW_TEST1_TESTMODE_MASK)((((sc))->sc_st)->write_4((((sc))->sc_sh), (((0x44))
), ((((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x44
))))) & ~(0x30)))))
;
907 break;
908 default:
909 break;
910 }
911}
912
913/*
914 * atw_reset:
915 *
916 * Perform a soft reset on the ADM8211.
917 */
918void
919atw_reset(struct atw_softc *sc)
920{
921 int i;
922 uint32_t lpc;
923
924 ATW_WRITE(sc, ATW_NAR, 0x0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x30)), ((0x0
))))
;
925 DELAY(20 * 1000)(*delay_func)(20 * 1000);
926
927 /* Reference driver has a cryptic remark indicating that this might
928 * power-on the chip. I know that it turns off power-saving....
929 */
930 ATW_WRITE(sc, ATW_FRCTL, 0x0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x04)), ((0x0
))))
;
931
932 ATW_WRITE(sc, ATW_PAR, ATW_PAR_SWR)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x00)), (((
1<<0)))))
;
933
934 for (i = 0; i < 50; i++) {
935 if (ATW_READ(sc, ATW_PAR)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x00)))) == 0)
936 break;
937 DELAY(1000)(*delay_func)(1000);
938 }
939
940 /* ... and then pause 100ms longer for good measure. */
941 DELAY(100 * 1000)(*delay_func)(100 * 1000);
942
943 DPRINTF2(sc, ("%s: atw_reset %d iterations\n", sc->sc_dev.dv_xname, i));
944
945 if (ATW_ISSET(sc, ATW_PAR, ATW_PAR_SWR)(((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x00))
))) & ((1<<0)))
)
946 printf("%s: reset failed to complete\n", sc->sc_dev.dv_xname);
947
948 atw_test1_reset(sc);
949 /*
950 * Initialize the PCI Access Register.
951 */
952 sc->sc_busmode = ATW_PAR_PBL_8DW((0x8) << ((((u_long)((((((0x3f00)) - 1) & ((0x3f00
))) ^ ((0x3f00)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0x3f00) >> 16)) - 1) & (((0x3f00) >> 16))
) ^ (((0x3f00) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0x3f00) >> 16) >> 8)) - 1) & (
(((0x3f00) >> 16) >> 8))) ^ ((((0x3f00) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0x3f00) >> 16) >> 8) >> 4)) - 1) & ((
(((0x3f00) >> 16) >> 8) >> 4))) ^ (((((0x3f00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x3f00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0x3f00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0x3f00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x3f00) >> 16) >> 8) >>
4))) - 1) & ((((((0x3f00) >> 16) >> 8) >>
4)))) ^ ((((((0x3f00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f00
) >> 16) >> 8))) - 1) & (((((0x3f00) >>
16) >> 8)))) ^ (((((0x3f00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f00) >>
16) >> 8)) >> 2)) - 1) & ((((((0x3f00) >>
16) >> 8)) >> 2))) ^ ((((((0x3f00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3f00) >> 16) >> 8)))) - 1) & (((
(((0x3f00) >> 16) >> 8))))) ^ ((((((0x3f00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3f00) >> 16))) - 1) & ((((0x3f00) >>
16)))) ^ ((((0x3f00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x3f00) >> 16)) >> 4)) - 1
) & (((((0x3f00) >> 16)) >> 4))) ^ (((((0x3f00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3f00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0x3f00) >> 16)) >> 4) >>
2))) ^ ((((((0x3f00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f00)
>> 16)) >> 4))) - 1) & ((((((0x3f00) >>
16)) >> 4)))) ^ ((((((0x3f00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f00
) >> 16)))) - 1) & (((((0x3f00) >> 16))))) ^ (
((((0x3f00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x3f00) >> 16))) >> 2)) - 1) & (((
(((0x3f00) >> 16))) >> 2))) ^ ((((((0x3f00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3f00) >> 16))))) - 1) & ((((((0x3f00) >>
16)))))) ^ ((((((0x3f00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0x3f00))) - 1) & (((0x3f00
)))) ^ (((0x3f00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0x3f00)) >> 8)) - 1) & ((((0x3f00)) >> 8
))) ^ ((((0x3f00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0x3f00)) >> 8) >> 4)) - 1) &
(((((0x3f00)) >> 8) >> 4))) ^ (((((0x3f00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x3f00)) >> 8) >> 4) >> 2)) - 1) &
((((((0x3f00)) >> 8) >> 4) >> 2))) ^ (((((
(0x3f00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f00)) >> 8) >>
4))) - 1) & ((((((0x3f00)) >> 8) >> 4)))) ^ (
(((((0x3f00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0x3f00)) >> 8))) - 1) &
(((((0x3f00)) >> 8)))) ^ (((((0x3f00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f00)) >>
8)) >> 2)) - 1) & ((((((0x3f00)) >> 8)) >>
2))) ^ ((((((0x3f00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f00)) >> 8
)))) - 1) & ((((((0x3f00)) >> 8))))) ^ ((((((0x3f00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3f00)))) - 1) & ((((0x3f00))))) ^ ((((0x3f00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3f00))) >>
4)) - 1) & (((((0x3f00))) >> 4))) ^ (((((0x3f00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0x3f00))) >> 4) >> 2)) - 1) & ((((((0x3f00)
)) >> 4) >> 2))) ^ ((((((0x3f00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f00
))) >> 4))) - 1) & ((((((0x3f00))) >> 4)))) ^
((((((0x3f00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x3f00))))) - 1) & (((((0x3f00)))
))) ^ (((((0x3f00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x3f00)))) >> 2)) - 1) & ((((((0x3f00)))
) >> 2))) ^ ((((((0x3f00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f00)))))) - 1) &
((((((0x3f00))))))) ^ ((((((0x3f00)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
953
954 ATW_WRITE(sc, ATW_PAR, sc->sc_busmode)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x00)), ((sc
->sc_busmode))))
;
955 DPRINTF(sc, ("%s: ATW_PAR %08x busmode %08x\n", sc->sc_dev.dv_xname,
956 ATW_READ(sc, ATW_PAR), sc->sc_busmode));
957
958 /* Turn off maximum power saving, etc.
959 *
960 * XXX Following example of reference driver, should I set
961 * an AID of 1? It didn't seem to help....
962 */
963 ATW_WRITE(sc, ATW_FRCTL, 0x0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x04)), ((0x0
))))
;
964
965 DELAY(100 * 1000)(*delay_func)(100 * 1000);
966
967 /* Recall EEPROM. */
968 ATW_SET(sc, ATW_TEST0, ATW_TEST0_EPRLD)((((sc))->sc_st)->write_4((((sc))->sc_sh), (((0x4C))
), ((((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x4C
))))) | ((1<<15))))))
;
969
970 DELAY(10 * 1000)(*delay_func)(10 * 1000);
971
972 lpc = ATW_READ(sc, ATW_LPC)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x40))));
Value stored to 'lpc' is never read
973
974 DPRINTF(sc, ("%s: ATW_LPC %#08x\n", __func__, lpc));
975
976 /* A reset seems to affect the SRAM contents, so put them into
977 * a known state.
978 */
979 atw_clear_sram(sc);
980
981 memset(sc->sc_bssid, 0xff, sizeof(sc->sc_bssid))__builtin_memset((sc->sc_bssid), (0xff), (sizeof(sc->sc_bssid
)))
;
982}
983
984void
985atw_clear_sram(struct atw_softc *sc)
986{
987 memset(sc->sc_sram, 0, sizeof(sc->sc_sram))__builtin_memset((sc->sc_sram), (0), (sizeof(sc->sc_sram
)))
;
988 /* XXX not for revision 0x20. */
989 atw_write_sram(sc, 0, sc->sc_sram, sc->sc_sramlen);
990}
991
992/* TBD atw_init
993 *
994 * set MAC based on ic->ic_bss->myaddr
995 * write WEP keys
996 * set TX rate
997 */
998
999/* Tell the ADM8211 to raise ATW_INTR_LINKOFF if 7 beacon intervals pass
1000 * without receiving a beacon with the preferred BSSID & SSID.
1001 * atw_write_bssid & atw_write_ssid set the BSSID & SSID.
1002 */
1003void
1004atw_wcsr_init(struct atw_softc *sc)
1005{
1006 uint32_t wcsr;
1007
1008 wcsr = ATW_READ(sc, ATW_WCSR)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x50))));
1009 wcsr &= ~(ATW_WCSR_BLN_MASK0xe00000|ATW_WCSR_LSOE(1<<8)|ATW_WCSR_MPRE(1<<9)|ATW_WCSR_LSOE(1<<8));
1010 wcsr |= LSHIFT(7, ATW_WCSR_BLN_MASK)((7) << ((((u_long)((((((0xe00000)) - 1) & ((0xe00000
))) ^ ((0xe00000)))) >> (16)) != 0) ? 16 + ((((u_long)(
((((((0xe00000) >> 16)) - 1) & (((0xe00000) >>
16))) ^ (((0xe00000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xe00000) >> 16) >> 8)) - 1
) & ((((0xe00000) >> 16) >> 8))) ^ ((((0xe00000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xe00000) >> 16) >> 8) >> 4)) - 1
) & (((((0xe00000) >> 16) >> 8) >> 4)))
^ (((((0xe00000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xe00000) >> 16)
>> 8) >> 4) >> 2)) - 1) & ((((((0xe00000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xe00000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xe00000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xe00000
) >> 16) >> 8) >> 4)))) ^ ((((((0xe00000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xe00000) >> 16) >> 8))) -
1) & (((((0xe00000) >> 16) >> 8)))) ^ (((((0xe00000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xe00000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xe00000) >> 16) >> 8)) >>
2))) ^ ((((((0xe00000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xe00000
) >> 16) >> 8)))) - 1) & ((((((0xe00000) >>
16) >> 8))))) ^ ((((((0xe00000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xe00000
) >> 16))) - 1) & ((((0xe00000) >> 16)))) ^ (
(((0xe00000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xe00000) >> 16)) >> 4)) - 1) & (((
((0xe00000) >> 16)) >> 4))) ^ (((((0xe00000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xe00000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xe00000) >> 16)) >> 4) >> 2))) ^ ((
((((0xe00000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xe00000) >>
16)) >> 4))) - 1) & ((((((0xe00000) >> 16)) >>
4)))) ^ ((((((0xe00000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xe00000) >>
16)))) - 1) & (((((0xe00000) >> 16))))) ^ (((((0xe00000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xe00000) >> 16))) >> 2)) - 1) & ((((((
0xe00000) >> 16))) >> 2))) ^ ((((((0xe00000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xe00000) >> 16))))) - 1) & ((((((0xe00000
) >> 16)))))) ^ ((((((0xe00000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xe00000))) - 1) &
(((0xe00000)))) ^ (((0xe00000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xe00000)) >> 8)) - 1) & ((((0xe00000
)) >> 8))) ^ ((((0xe00000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xe00000)) >> 8) >>
4)) - 1) & (((((0xe00000)) >> 8) >> 4))) ^ (
((((0xe00000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xe00000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xe00000)) >> 8) >>
4) >> 2))) ^ ((((((0xe00000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xe00000
)) >> 8) >> 4))) - 1) & ((((((0xe00000)) >>
8) >> 4)))) ^ ((((((0xe00000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xe00000
)) >> 8))) - 1) & (((((0xe00000)) >> 8)))) ^ (
((((0xe00000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xe00000)) >> 8)) >> 2)) - 1) &
((((((0xe00000)) >> 8)) >> 2))) ^ ((((((0xe00000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xe00000)) >> 8)))) - 1) & ((
((((0xe00000)) >> 8))))) ^ ((((((0xe00000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xe00000
)))) - 1) & ((((0xe00000))))) ^ ((((0xe00000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xe00000))) >> 4)
) - 1) & (((((0xe00000))) >> 4))) ^ (((((0xe00000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xe00000))) >> 4) >> 2)) - 1) & ((((((0xe00000
))) >> 4) >> 2))) ^ ((((((0xe00000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xe00000))) >> 4))) - 1) & ((((((0xe00000)))
>> 4)))) ^ ((((((0xe00000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xe00000))))) - 1) &
(((((0xe00000)))))) ^ (((((0xe00000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xe00000)))) >> 2)) - 1) &
((((((0xe00000)))) >> 2))) ^ ((((((0xe00000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xe00000
)))))) - 1) & ((((((0xe00000))))))) ^ ((((((0xe00000)))))
))) >> (1)) != 0) ? 1 : 0))))))
;
1011 ATW_WRITE(sc, ATW_WCSR, wcsr)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x50)), ((wcsr
))))
; /* XXX resets wake-up status bits */
1012
1013 DPRINTF(sc, ("%s: %s reg[WCSR] = %08x\n",
1014 sc->sc_dev.dv_xname, __func__, ATW_READ(sc, ATW_WCSR)));
1015}
1016
1017/* Turn off power management. Set Rx store-and-forward mode. */
1018void
1019atw_cmdr_init(struct atw_softc *sc)
1020{
1021 uint32_t cmdr;
1022 cmdr = ATW_READ(sc, ATW_CMDR)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x88))));
1023 cmdr &= ~ATW_CMDR_APM(1<<18);
1024 cmdr |= ATW_CMDR_RTE(1<<4);
1025 cmdr &= ~ATW_CMDR_DRT_MASK0xc;
1026 cmdr |= ATW_CMDR_DRT_SF((0x2) << ((((u_long)((((((0xc)) - 1) & ((0xc))) ^ (
(0xc)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xc) >>
16)) - 1) & (((0xc) >> 16))) ^ (((0xc) >> 16
)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xc) >>
16) >> 8)) - 1) & ((((0xc) >> 16) >> 8
))) ^ ((((0xc) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xc) >> 16) >> 8) >>
4)) - 1) & (((((0xc) >> 16) >> 8) >> 4
))) ^ (((((0xc) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xc) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xc) >> 16
) >> 8) >> 4) >> 2))) ^ ((((((0xc) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xc) >> 16) >> 8
) >> 4))) - 1) & ((((((0xc) >> 16) >> 8
) >> 4)))) ^ ((((((0xc) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc
) >> 16) >> 8))) - 1) & (((((0xc) >> 16
) >> 8)))) ^ (((((0xc) >> 16) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xc) >> 16) >>
8)) >> 2)) - 1) & ((((((0xc) >> 16) >>
8)) >> 2))) ^ ((((((0xc) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc
) >> 16) >> 8)))) - 1) & ((((((0xc) >> 16
) >> 8))))) ^ ((((((0xc) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xc) >> 16)
)) - 1) & ((((0xc) >> 16)))) ^ ((((0xc) >> 16
))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xc) >>
16)) >> 4)) - 1) & (((((0xc) >> 16)) >>
4))) ^ (((((0xc) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xc) >> 16)) >> 4)
>> 2)) - 1) & ((((((0xc) >> 16)) >> 4)
>> 2))) ^ ((((((0xc) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc
) >> 16)) >> 4))) - 1) & ((((((0xc) >> 16
)) >> 4)))) ^ ((((((0xc) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc) >> 16)
))) - 1) & (((((0xc) >> 16))))) ^ (((((0xc) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc)
>> 16))) >> 2)) - 1) & ((((((0xc) >> 16
))) >> 2))) ^ ((((((0xc) >> 16))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc) >> 16)
)))) - 1) & ((((((0xc) >> 16)))))) ^ ((((((0xc) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xc))) - 1) & (((0xc)))) ^ (((0xc))))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xc)) >> 8)) - 1) & ((
((0xc)) >> 8))) ^ ((((0xc)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xc)) >> 8) >> 4
)) - 1) & (((((0xc)) >> 8) >> 4))) ^ (((((0xc
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc)) >> 8) >> 4) >> 2)) - 1) &
((((((0xc)) >> 8) >> 4) >> 2))) ^ ((((((0xc
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xc)) >> 8) >> 4
))) - 1) & ((((((0xc)) >> 8) >> 4)))) ^ (((((
(0xc)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0
)) : ((((u_long)(((((((((0xc)) >> 8))) - 1) & (((((
0xc)) >> 8)))) ^ (((((0xc)) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xc)) >> 8)) >>
2)) - 1) & ((((((0xc)) >> 8)) >> 2))) ^ ((((
((0xc)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xc)) >> 8)))) - 1) & ((
((((0xc)) >> 8))))) ^ ((((((0xc)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xc)))) - 1) &
((((0xc))))) ^ ((((0xc)))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xc))) >> 4)) - 1) & (((((0xc))) >>
4))) ^ (((((0xc))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xc))) >> 4) >> 2)) - 1) &
((((((0xc))) >> 4) >> 2))) ^ ((((((0xc))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xc))) >> 4))) - 1) & ((((((0xc))) >>
4)))) ^ ((((((0xc))) >> 4))))) >> (1)) != 0) ? 1
: 0)) : ((((u_long)(((((((((0xc))))) - 1) & (((((0xc))))
)) ^ (((((0xc))))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xc)))) >> 2)) - 1) & ((((((0xc)))) >>
2))) ^ ((((((0xc)))) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xc)))))) - 1) & ((((((0xc))))
))) ^ ((((((0xc)))))))) >> (1)) != 0) ? 1 : 0))))))
;
1027
1028 ATW_WRITE(sc, ATW_CMDR, cmdr)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x88)), ((cmdr
))))
;
1029}
1030
1031void
1032atw_tofs2_init(struct atw_softc *sc)
1033{
1034 uint32_t tofs2;
1035 /* XXX this magic can probably be figured out from the RFMD docs */
1036#ifndef ATW_REFSLAVE
1037 tofs2 = LSHIFT(4, ATW_TOFS2_PWR1UP_MASK)((4) << ((((u_long)((((((0xf0000000)) - 1) & ((0xf0000000
))) ^ ((0xf0000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xf0000000) >> 16)) - 1) & (((0xf0000000) >>
16))) ^ (((0xf0000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xf0000000) >> 16) >> 8))
- 1) & ((((0xf0000000) >> 16) >> 8))) ^ ((((
0xf0000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xf0000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xf0000000) >> 16) >>
8) >> 4))) ^ (((((0xf0000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xf0000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xf0000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xf0000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xf0000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xf0000000) >> 16) >> 8) >>
4)))) ^ ((((((0xf0000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000000
) >> 16) >> 8))) - 1) & (((((0xf0000000) >>
16) >> 8)))) ^ (((((0xf0000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xf0000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xf0000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xf0000000) >> 16) >>
8)))) - 1) & ((((((0xf0000000) >> 16) >> 8))
))) ^ ((((((0xf0000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf0000000) >>
16))) - 1) & ((((0xf0000000) >> 16)))) ^ ((((0xf0000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xf0000000) >> 16)) >> 4)) - 1) & (((((0xf0000000
) >> 16)) >> 4))) ^ (((((0xf0000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xf0000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xf0000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xf0000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000000) >>
16)) >> 4))) - 1) & ((((((0xf0000000) >> 16)
) >> 4)))) ^ ((((((0xf0000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000000
) >> 16)))) - 1) & (((((0xf0000000) >> 16))))
) ^ (((((0xf0000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xf0000000) >> 16))) >> 2
)) - 1) & ((((((0xf0000000) >> 16))) >> 2))) ^
((((((0xf0000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000000) >> 16
))))) - 1) & ((((((0xf0000000) >> 16)))))) ^ ((((((
0xf0000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xf0000000))) - 1) & (((0xf0000000)
))) ^ (((0xf0000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf0000000)) >> 8)) - 1) & ((((0xf0000000)
) >> 8))) ^ ((((0xf0000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xf0000000)) >> 8) >>
4)) - 1) & (((((0xf0000000)) >> 8) >> 4))) ^
(((((0xf0000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xf0000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xf0000000)) >> 8) >>
4) >> 2))) ^ ((((((0xf0000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xf0000000)) >> 8) >> 4))) - 1) & (((
(((0xf0000000)) >> 8) >> 4)))) ^ ((((((0xf0000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xf0000000)) >> 8))) - 1) & ((
(((0xf0000000)) >> 8)))) ^ (((((0xf0000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000000
)) >> 8)) >> 2)) - 1) & ((((((0xf0000000)) >>
8)) >> 2))) ^ ((((((0xf0000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000000
)) >> 8)))) - 1) & ((((((0xf0000000)) >> 8)))
)) ^ ((((((0xf0000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xf0000000)))) - 1) & ((((
0xf0000000))))) ^ ((((0xf0000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xf0000000))) >> 4)) - 1) & (
((((0xf0000000))) >> 4))) ^ (((((0xf0000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000000
))) >> 4) >> 2)) - 1) & ((((((0xf0000000))) >>
4) >> 2))) ^ ((((((0xf0000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000000
))) >> 4))) - 1) & ((((((0xf0000000))) >> 4))
)) ^ ((((((0xf0000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xf0000000))))) - 1) & (((
((0xf0000000)))))) ^ (((((0xf0000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xf0000000)))) >> 2)) - 1)
& ((((((0xf0000000)))) >> 2))) ^ ((((((0xf0000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf0000000)))))) - 1) & ((((((0xf0000000)))))))
^ ((((((0xf0000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| /* 8 ms = 4 * 2 ms */
1038 LSHIFT(13, ATW_TOFS2_PWR0PAPE_MASK)((13) << ((((u_long)((((((0xf000000)) - 1) & ((0xf000000
))) ^ ((0xf000000)))) >> (16)) != 0) ? 16 + ((((u_long)
(((((((0xf000000) >> 16)) - 1) & (((0xf000000) >>
16))) ^ (((0xf000000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xf000000) >> 16) >> 8)) - 1
) & ((((0xf000000) >> 16) >> 8))) ^ ((((0xf000000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf000000) >> 16) >> 8) >> 4)) - 1
) & (((((0xf000000) >> 16) >> 8) >> 4))
) ^ (((((0xf000000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf000000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xf000000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xf000000) >> 16) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xf000000
) >> 16) >> 8) >> 4)))) ^ ((((((0xf000000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xf000000) >> 16) >> 8)))
- 1) & (((((0xf000000) >> 16) >> 8)))) ^ (((
((0xf000000) >> 16) >> 8))))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xf000000) >> 16) >> 8
)) >> 2)) - 1) & ((((((0xf000000) >> 16) >>
8)) >> 2))) ^ ((((((0xf000000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xf000000) >> 16) >> 8)))) - 1) & ((
((((0xf000000) >> 16) >> 8))))) ^ ((((((0xf000000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xf000000) >> 16))) - 1) & (
(((0xf000000) >> 16)))) ^ ((((0xf000000) >> 16)))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000000) >>
16)) >> 4)) - 1) & (((((0xf000000) >> 16)) >>
4))) ^ (((((0xf000000) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf000000) >> 16
)) >> 4) >> 2)) - 1) & ((((((0xf000000) >>
16)) >> 4) >> 2))) ^ ((((((0xf000000) >> 16
)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xf000000) >> 16)) >> 4))) - 1
) & ((((((0xf000000) >> 16)) >> 4)))) ^ (((((
(0xf000000) >> 16)) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xf000000) >> 16)))) -
1) & (((((0xf000000) >> 16))))) ^ (((((0xf000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf000000
) >> 16))) >> 2)) - 1) & ((((((0xf000000) >>
16))) >> 2))) ^ ((((((0xf000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000000
) >> 16))))) - 1) & ((((((0xf000000) >> 16)))
))) ^ ((((((0xf000000) >> 16))))))) >> (1)) != 0)
? 1 : 0)))) : ((((u_long)(((((((0xf000000))) - 1) & (((0xf000000
)))) ^ (((0xf000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf000000)) >> 8)) - 1) & ((((0xf000000)) >>
8))) ^ ((((0xf000000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xf000000)) >> 8) >> 4)) -
1) & (((((0xf000000)) >> 8) >> 4))) ^ (((((0xf000000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf000000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xf000000)) >> 8) >> 4) >> 2
))) ^ ((((((0xf000000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000000
)) >> 8) >> 4))) - 1) & ((((((0xf000000)) >>
8) >> 4)))) ^ ((((((0xf000000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf000000
)) >> 8))) - 1) & (((((0xf000000)) >> 8)))) ^
(((((0xf000000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf000000)) >> 8)) >> 2)) - 1
) & ((((((0xf000000)) >> 8)) >> 2))) ^ ((((((
0xf000000)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf000000)) >> 8)))) - 1
) & ((((((0xf000000)) >> 8))))) ^ ((((((0xf000000))
>> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xf000000)))) - 1) & ((((0xf000000))))) ^ ((((0xf000000
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000000
))) >> 4)) - 1) & (((((0xf000000))) >> 4))) ^
(((((0xf000000))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf000000))) >> 4) >> 2)) - 1
) & ((((((0xf000000))) >> 4) >> 2))) ^ ((((((
0xf000000))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf000000))) >> 4))) - 1
) & ((((((0xf000000))) >> 4)))) ^ ((((((0xf000000))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xf000000))))) - 1) & (((((0xf000000)))))) ^ (((
((0xf000000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf000000)))) >> 2)) - 1) & ((((((0xf000000)))
) >> 2))) ^ ((((((0xf000000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000000)))))) -
1) & ((((((0xf000000))))))) ^ ((((((0xf000000)))))))) >>
(1)) != 0) ? 1 : 0))))))
| /* 13 us */
1039 LSHIFT(8, ATW_TOFS2_PWR1PAPE_MASK)((8) << ((((u_long)((((((0xf00000)) - 1) & ((0xf00000
))) ^ ((0xf00000)))) >> (16)) != 0) ? 16 + ((((u_long)(
((((((0xf00000) >> 16)) - 1) & (((0xf00000) >>
16))) ^ (((0xf00000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xf00000) >> 16) >> 8)) - 1
) & ((((0xf00000) >> 16) >> 8))) ^ ((((0xf00000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf00000) >> 16) >> 8) >> 4)) - 1
) & (((((0xf00000) >> 16) >> 8) >> 4)))
^ (((((0xf00000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00000) >> 16)
>> 8) >> 4) >> 2)) - 1) & ((((((0xf00000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xf00000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xf00000
) >> 16) >> 8) >> 4)))) ^ ((((((0xf00000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xf00000) >> 16) >> 8))) -
1) & (((((0xf00000) >> 16) >> 8)))) ^ (((((0xf00000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xf00000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xf00000) >> 16) >> 8)) >>
2))) ^ ((((((0xf00000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000
) >> 16) >> 8)))) - 1) & ((((((0xf00000) >>
16) >> 8))))) ^ ((((((0xf00000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf00000
) >> 16))) - 1) & ((((0xf00000) >> 16)))) ^ (
(((0xf00000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf00000) >> 16)) >> 4)) - 1) & (((
((0xf00000) >> 16)) >> 4))) ^ (((((0xf00000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xf00000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xf00000) >> 16)) >> 4) >> 2))) ^ ((
((((0xf00000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000) >>
16)) >> 4))) - 1) & ((((((0xf00000) >> 16)) >>
4)))) ^ ((((((0xf00000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00000) >>
16)))) - 1) & (((((0xf00000) >> 16))))) ^ (((((0xf00000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xf00000) >> 16))) >> 2)) - 1) & ((((((
0xf00000) >> 16))) >> 2))) ^ ((((((0xf00000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xf00000) >> 16))))) - 1) & ((((((0xf00000
) >> 16)))))) ^ ((((((0xf00000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xf00000))) - 1) &
(((0xf00000)))) ^ (((0xf00000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xf00000)) >> 8)) - 1) & ((((0xf00000
)) >> 8))) ^ ((((0xf00000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xf00000)) >> 8) >>
4)) - 1) & (((((0xf00000)) >> 8) >> 4))) ^ (
((((0xf00000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xf00000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xf00000)) >> 8) >>
4) >> 2))) ^ ((((((0xf00000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000
)) >> 8) >> 4))) - 1) & ((((((0xf00000)) >>
8) >> 4)))) ^ ((((((0xf00000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00000
)) >> 8))) - 1) & (((((0xf00000)) >> 8)))) ^ (
((((0xf00000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xf00000)) >> 8)) >> 2)) - 1) &
((((((0xf00000)) >> 8)) >> 2))) ^ ((((((0xf00000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xf00000)) >> 8)))) - 1) & ((
((((0xf00000)) >> 8))))) ^ ((((((0xf00000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf00000
)))) - 1) & ((((0xf00000))))) ^ ((((0xf00000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xf00000))) >> 4)
) - 1) & (((((0xf00000))) >> 4))) ^ (((((0xf00000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xf00000))) >> 4) >> 2)) - 1) & ((((((0xf00000
))) >> 4) >> 2))) ^ ((((((0xf00000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xf00000))) >> 4))) - 1) & ((((((0xf00000)))
>> 4)))) ^ ((((((0xf00000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00000))))) - 1) &
(((((0xf00000)))))) ^ (((((0xf00000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xf00000)))) >> 2)) - 1) &
((((((0xf00000)))) >> 2))) ^ ((((((0xf00000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000
)))))) - 1) & ((((((0xf00000))))))) ^ ((((((0xf00000)))))
))) >> (1)) != 0) ? 1 : 0))))))
| /* 8 us */
1040 LSHIFT(5, ATW_TOFS2_PWR0TRSW_MASK)((5) << ((((u_long)((((((0xf0000)) - 1) & ((0xf0000
))) ^ ((0xf0000)))) >> (16)) != 0) ? 16 + ((((u_long)((
(((((0xf0000) >> 16)) - 1) & (((0xf0000) >> 16
))) ^ (((0xf0000) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xf0000) >> 16) >> 8)) - 1) &
((((0xf0000) >> 16) >> 8))) ^ ((((0xf0000) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xf0000) >> 16) >> 8) >> 4)) - 1) &
(((((0xf0000) >> 16) >> 8) >> 4))) ^ (((((
0xf0000) >> 16) >> 8) >> 4)))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xf0000) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xf0000) >>
16) >> 8) >> 4) >> 2))) ^ ((((((0xf0000) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xf0000) >> 16) >>
8) >> 4))) - 1) & ((((((0xf0000) >> 16) >>
8) >> 4)))) ^ ((((((0xf0000) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000
) >> 16) >> 8))) - 1) & (((((0xf0000) >>
16) >> 8)))) ^ (((((0xf0000) >> 16) >> 8))
))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xf0000) >>
16) >> 8)) >> 2))) ^ ((((((0xf0000) >> 16)
>> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xf0000) >> 16) >> 8)))) - 1)
& ((((((0xf0000) >> 16) >> 8))))) ^ ((((((0xf0000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xf0000) >> 16))) - 1) & (((
(0xf0000) >> 16)))) ^ ((((0xf0000) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xf0000) >> 16)) >>
4)) - 1) & (((((0xf0000) >> 16)) >> 4))) ^ (
((((0xf0000) >> 16)) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xf0000) >> 16)) >> 4
) >> 2)) - 1) & ((((((0xf0000) >> 16)) >>
4) >> 2))) ^ ((((((0xf0000) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000
) >> 16)) >> 4))) - 1) & ((((((0xf0000) >>
16)) >> 4)))) ^ ((((((0xf0000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000
) >> 16)))) - 1) & (((((0xf0000) >> 16))))) ^
(((((0xf0000) >> 16)))))) >> (2)) != 0) ? 2 + ((
((u_long)((((((((((0xf0000) >> 16))) >> 2)) - 1) &
((((((0xf0000) >> 16))) >> 2))) ^ ((((((0xf0000)
>> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xf0000) >> 16))))) - 1) & ((
((((0xf0000) >> 16)))))) ^ ((((((0xf0000) >> 16))
))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xf0000
))) - 1) & (((0xf0000)))) ^ (((0xf0000))))) >> (8))
!= 0) ? 8 + ((((u_long)((((((((0xf0000)) >> 8)) - 1) &
((((0xf0000)) >> 8))) ^ ((((0xf0000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xf0000)) >> 8) >>
4)) - 1) & (((((0xf0000)) >> 8) >> 4))) ^ ((
(((0xf0000)) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xf0000)) >> 8) >> 4) >>
2)) - 1) & ((((((0xf0000)) >> 8) >> 4) >>
2))) ^ ((((((0xf0000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000
)) >> 8) >> 4))) - 1) & ((((((0xf0000)) >>
8) >> 4)))) ^ ((((((0xf0000)) >> 8) >> 4))
))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000
)) >> 8))) - 1) & (((((0xf0000)) >> 8)))) ^ (
((((0xf0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf0000)) >> 8)) >> 2)) - 1) & (((
(((0xf0000)) >> 8)) >> 2))) ^ ((((((0xf0000)) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xf0000)) >> 8)))) - 1) & ((((((0xf0000)
) >> 8))))) ^ ((((((0xf0000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf0000)))) - 1) &
((((0xf0000))))) ^ ((((0xf0000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xf0000))) >> 4)) - 1) & (((
((0xf0000))) >> 4))) ^ (((((0xf0000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000))) >> 4)
>> 2)) - 1) & ((((((0xf0000))) >> 4) >>
2))) ^ ((((((0xf0000))) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000))) >>
4))) - 1) & ((((((0xf0000))) >> 4)))) ^ ((((((0xf0000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xf0000))))) - 1) & (((((0xf0000)))))) ^ (((((0xf0000
))))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000
)))) >> 2)) - 1) & ((((((0xf0000)))) >> 2))) ^
((((((0xf0000)))) >> 2)))) >> (1)) != 0) ? 1 : 0
) : ((((u_long)((((((((((0xf0000)))))) - 1) & ((((((0xf0000
))))))) ^ ((((((0xf0000)))))))) >> (1)) != 0) ? 1 : 0))
))))
| /* 5 us */
1041 LSHIFT(12, ATW_TOFS2_PWR1TRSW_MASK)((12) << ((((u_long)((((((0xf000)) - 1) & ((0xf000)
)) ^ ((0xf000)))) >> (16)) != 0) ? 16 + ((((u_long)((((
(((0xf000) >> 16)) - 1) & (((0xf000) >> 16)))
^ (((0xf000) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf000) >> 16) >> 8)) - 1) & ((((0xf000
) >> 16) >> 8))) ^ ((((0xf000) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000) >>
16) >> 8) >> 4)) - 1) & (((((0xf000) >>
16) >> 8) >> 4))) ^ (((((0xf000) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf000) >> 16) >> 8) >> 4) >> 2)
) - 1) & ((((((0xf000) >> 16) >> 8) >> 4
) >> 2))) ^ ((((((0xf000) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf000) >> 16) >> 8) >> 4))) - 1)
& ((((((0xf000) >> 16) >> 8) >> 4)))) ^
((((((0xf000) >> 16) >> 8) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf000) >> 16
) >> 8))) - 1) & (((((0xf000) >> 16) >>
8)))) ^ (((((0xf000) >> 16) >> 8))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xf000) >> 16) >>
8)) >> 2)) - 1) & ((((((0xf000) >> 16) >>
8)) >> 2))) ^ ((((((0xf000) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000
) >> 16) >> 8)))) - 1) & ((((((0xf000) >>
16) >> 8))))) ^ ((((((0xf000) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf000
) >> 16))) - 1) & ((((0xf000) >> 16)))) ^ (((
(0xf000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf000) >> 16)) >> 4)) - 1) & (((((
0xf000) >> 16)) >> 4))) ^ (((((0xf000) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xf000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xf000) >> 16)) >> 4) >> 2))) ^ ((((
((0xf000) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000) >> 16
)) >> 4))) - 1) & ((((((0xf000) >> 16)) >>
4)))) ^ ((((((0xf000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf000) >> 16
)))) - 1) & (((((0xf000) >> 16))))) ^ (((((0xf000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf000
) >> 16))) >> 2)) - 1) & ((((((0xf000) >>
16))) >> 2))) ^ ((((((0xf000) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000
) >> 16))))) - 1) & ((((((0xf000) >> 16))))))
^ ((((((0xf000) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xf000))) - 1) & (((0xf000))))
^ (((0xf000))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xf000)) >> 8)) - 1) & ((((0xf000)) >> 8)))
^ ((((0xf000)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xf000)) >> 8) >> 4)) - 1) & (
((((0xf000)) >> 8) >> 4))) ^ (((((0xf000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xf000)) >> 8) >> 4) >> 2))) ^ (((((
(0xf000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)) >> 8) >>
4))) - 1) & ((((((0xf000)) >> 8) >> 4)))) ^ (
(((((0xf000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xf000)) >> 8))) - 1) &
(((((0xf000)) >> 8)))) ^ (((((0xf000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf000)) >>
8)) >> 2)) - 1) & ((((((0xf000)) >> 8)) >>
2))) ^ ((((((0xf000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)) >> 8
)))) - 1) & ((((((0xf000)) >> 8))))) ^ ((((((0xf000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xf000)))) - 1) & ((((0xf000))))) ^ ((((0xf000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000))) >>
4)) - 1) & (((((0xf000))) >> 4))) ^ (((((0xf000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xf000))) >> 4) >> 2)) - 1) & ((((((0xf000)
)) >> 4) >> 2))) ^ ((((((0xf000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000
))) >> 4))) - 1) & ((((((0xf000))) >> 4)))) ^
((((((0xf000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xf000))))) - 1) & (((((0xf000)))
))) ^ (((((0xf000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf000)))) >> 2)) - 1) & ((((((0xf000)))
) >> 2))) ^ ((((((0xf000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)))))) - 1) &
((((((0xf000))))))) ^ ((((((0xf000)))))))) >> (1)) != 0
) ? 1 : 0))))))
| /* 12 us */
1042 LSHIFT(13, ATW_TOFS2_PWR0PE2_MASK)((13) << ((((u_long)((((((0xf00)) - 1) & ((0xf00)))
^ ((0xf00)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((
0xf00) >> 16)) - 1) & (((0xf00) >> 16))) ^ ((
(0xf00) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)
((((((((0xf00) >> 16) >> 8)) - 1) & ((((0xf00
) >> 16) >> 8))) ^ ((((0xf00) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf00) >>
16) >> 8) >> 4)) - 1) & (((((0xf00) >>
16) >> 8) >> 4))) ^ (((((0xf00) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf00) >> 16) >> 8) >> 4) >> 2))
- 1) & ((((((0xf00) >> 16) >> 8) >> 4)
>> 2))) ^ ((((((0xf00) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf00) >> 16) >> 8) >> 4))) - 1) &
((((((0xf00) >> 16) >> 8) >> 4)))) ^ (((((
(0xf00) >> 16) >> 8) >> 4))))) >> (1)
) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00) >> 16) >>
8))) - 1) & (((((0xf00) >> 16) >> 8)))) ^ ((
(((0xf00) >> 16) >> 8))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xf00) >> 16) >> 8)) >>
2)) - 1) & ((((((0xf00) >> 16) >> 8)) >>
2))) ^ ((((((0xf00) >> 16) >> 8)) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00) >>
16) >> 8)))) - 1) & ((((((0xf00) >> 16) >>
8))))) ^ ((((((0xf00) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf00) >> 16
))) - 1) & ((((0xf00) >> 16)))) ^ ((((0xf00) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf00)
>> 16)) >> 4)) - 1) & (((((0xf00) >> 16
)) >> 4))) ^ (((((0xf00) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00) >> 16)) >>
4) >> 2)) - 1) & ((((((0xf00) >> 16)) >>
4) >> 2))) ^ ((((((0xf00) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00
) >> 16)) >> 4))) - 1) & ((((((0xf00) >>
16)) >> 4)))) ^ ((((((0xf00) >> 16)) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00
) >> 16)))) - 1) & (((((0xf00) >> 16))))) ^ (
((((0xf00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf00) >> 16))) >> 2)) - 1) & ((((
((0xf00) >> 16))) >> 2))) ^ ((((((0xf00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xf00) >> 16))))) - 1) & ((((((0xf00) >>
16)))))) ^ ((((((0xf00) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xf00))) - 1) & (((0xf00
)))) ^ (((0xf00))))) >> (8)) != 0) ? 8 + ((((u_long)(((
(((((0xf00)) >> 8)) - 1) & ((((0xf00)) >> 8))
) ^ ((((0xf00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xf00)) >> 8) >> 4)) - 1) & (
((((0xf00)) >> 8) >> 4))) ^ (((((0xf00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf00)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xf00)) >> 8) >> 4) >> 2))) ^ ((((((0xf00
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xf00)) >> 8) >>
4))) - 1) & ((((((0xf00)) >> 8) >> 4)))) ^ (
(((((0xf00)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xf00)) >> 8))) - 1) &
(((((0xf00)) >> 8)))) ^ (((((0xf00)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00)) >> 8)) >>
2)) - 1) & ((((((0xf00)) >> 8)) >> 2))) ^ ((
((((0xf00)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf00)) >> 8)))) - 1) &
((((((0xf00)) >> 8))))) ^ ((((((0xf00)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf00)
))) - 1) & ((((0xf00))))) ^ ((((0xf00)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xf00))) >> 4)) - 1) &
(((((0xf00))) >> 4))) ^ (((((0xf00))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00))) >> 4) >>
2)) - 1) & ((((((0xf00))) >> 4) >> 2))) ^ ((
((((0xf00))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf00))) >> 4))) - 1) &
((((((0xf00))) >> 4)))) ^ ((((((0xf00))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00)
)))) - 1) & (((((0xf00)))))) ^ (((((0xf00))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00)))) >> 2))
- 1) & ((((((0xf00)))) >> 2))) ^ ((((((0xf00)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00
)))))) - 1) & ((((((0xf00))))))) ^ ((((((0xf00)))))))) >>
(1)) != 0) ? 1 : 0))))))
| /* 13 us */
1043 LSHIFT(4, ATW_TOFS2_PWR1PE2_MASK)((4) << ((((u_long)((((((0xf0)) - 1) & ((0xf0))) ^ (
(0xf0)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xf0)
>> 16)) - 1) & (((0xf0) >> 16))) ^ (((0xf0) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xf0) >>
16) >> 8)) - 1) & ((((0xf0) >> 16) >> 8
))) ^ ((((0xf0) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xf0) >> 16) >> 8) >>
4)) - 1) & (((((0xf0) >> 16) >> 8) >> 4
))) ^ (((((0xf0) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xf0) >> 16
) >> 8) >> 4) >> 2))) ^ ((((((0xf0) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xf0) >> 16) >>
8) >> 4))) - 1) & ((((((0xf0) >> 16) >>
8) >> 4)))) ^ ((((((0xf0) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0
) >> 16) >> 8))) - 1) & (((((0xf0) >> 16
) >> 8)))) ^ (((((0xf0) >> 16) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0) >> 16) >>
8)) >> 2)) - 1) & ((((((0xf0) >> 16) >>
8)) >> 2))) ^ ((((((0xf0) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0
) >> 16) >> 8)))) - 1) & ((((((0xf0) >>
16) >> 8))))) ^ ((((((0xf0) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf0)
>> 16))) - 1) & ((((0xf0) >> 16)))) ^ ((((0xf0
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xf0) >> 16)) >> 4)) - 1) & (((((0xf0) >>
16)) >> 4))) ^ (((((0xf0) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0) >>
16)) >> 4) >> 2)) - 1) & ((((((0xf0) >>
16)) >> 4) >> 2))) ^ ((((((0xf0) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf0) >> 16)) >> 4))) - 1) & ((((((
0xf0) >> 16)) >> 4)))) ^ ((((((0xf0) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xf0) >> 16)))) - 1) & (((((0xf0) >>
16))))) ^ (((((0xf0) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xf0) >> 16))) >> 2)) -
1) & ((((((0xf0) >> 16))) >> 2))) ^ ((((((0xf0
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xf0) >> 16))))) - 1) & (((((
(0xf0) >> 16)))))) ^ ((((((0xf0) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xf0))) - 1) &
(((0xf0)))) ^ (((0xf0))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf0)) >> 8)) - 1) & ((((0xf0)) >> 8
))) ^ ((((0xf0)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0xf0)) >> 8) >> 4)) - 1) & (
((((0xf0)) >> 8) >> 4))) ^ (((((0xf0)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xf0)) >> 8) >> 4) >> 2)) - 1) & (((
(((0xf0)) >> 8) >> 4) >> 2))) ^ ((((((0xf0)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf0)) >> 8) >> 4)
)) - 1) & ((((((0xf0)) >> 8) >> 4)))) ^ (((((
(0xf0)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xf0)) >> 8))) - 1) & ((
(((0xf0)) >> 8)))) ^ (((((0xf0)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0)) >> 8)) >>
2)) - 1) & ((((((0xf0)) >> 8)) >> 2))) ^ (((
(((0xf0)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xf0)) >> 8)))) - 1) &
((((((0xf0)) >> 8))))) ^ ((((((0xf0)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf0))))
- 1) & ((((0xf0))))) ^ ((((0xf0)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xf0))) >> 4)) - 1) & (
((((0xf0))) >> 4))) ^ (((((0xf0))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0))) >> 4) >>
2)) - 1) & ((((((0xf0))) >> 4) >> 2))) ^ (((
(((0xf0))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xf0))) >> 4))) - 1) &
((((((0xf0))) >> 4)))) ^ ((((((0xf0))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0))))
) - 1) & (((((0xf0)))))) ^ (((((0xf0))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xf0)))) >> 2)) - 1) &
((((((0xf0)))) >> 2))) ^ ((((((0xf0)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0))))
)) - 1) & ((((((0xf0))))))) ^ ((((((0xf0)))))))) >>
(1)) != 0) ? 1 : 0))))))
| /* 4 us */
1044 LSHIFT(5, ATW_TOFS2_PWR0TXPE_MASK)((5) << ((((u_long)((((((0xf)) - 1) & ((0xf))) ^ ((
0xf)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xf) >>
16)) - 1) & (((0xf) >> 16))) ^ (((0xf) >> 16
)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xf) >>
16) >> 8)) - 1) & ((((0xf) >> 16) >> 8
))) ^ ((((0xf) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xf) >> 16) >> 8) >>
4)) - 1) & (((((0xf) >> 16) >> 8) >> 4
))) ^ (((((0xf) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xf) >> 16
) >> 8) >> 4) >> 2))) ^ ((((((0xf) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xf) >> 16) >> 8
) >> 4))) - 1) & ((((((0xf) >> 16) >> 8
) >> 4)))) ^ ((((((0xf) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf
) >> 16) >> 8))) - 1) & (((((0xf) >> 16
) >> 8)))) ^ (((((0xf) >> 16) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf) >> 16) >>
8)) >> 2)) - 1) & ((((((0xf) >> 16) >>
8)) >> 2))) ^ ((((((0xf) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf
) >> 16) >> 8)))) - 1) & ((((((0xf) >> 16
) >> 8))))) ^ ((((((0xf) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf) >> 16)
)) - 1) & ((((0xf) >> 16)))) ^ ((((0xf) >> 16
))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf) >>
16)) >> 4)) - 1) & (((((0xf) >> 16)) >>
4))) ^ (((((0xf) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xf) >> 16)) >> 4)
>> 2)) - 1) & ((((((0xf) >> 16)) >> 4)
>> 2))) ^ ((((((0xf) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf
) >> 16)) >> 4))) - 1) & ((((((0xf) >> 16
)) >> 4)))) ^ ((((((0xf) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf) >> 16)
))) - 1) & (((((0xf) >> 16))))) ^ (((((0xf) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf)
>> 16))) >> 2)) - 1) & ((((((0xf) >> 16
))) >> 2))) ^ ((((((0xf) >> 16))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf) >> 16)
)))) - 1) & ((((((0xf) >> 16)))))) ^ ((((((0xf) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xf))) - 1) & (((0xf)))) ^ (((0xf))))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xf)) >> 8)) - 1) & ((
((0xf)) >> 8))) ^ ((((0xf)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xf)) >> 8) >> 4
)) - 1) & (((((0xf)) >> 8) >> 4))) ^ (((((0xf
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf)) >> 8) >> 4) >> 2)) - 1) &
((((((0xf)) >> 8) >> 4) >> 2))) ^ ((((((0xf
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xf)) >> 8) >> 4
))) - 1) & ((((((0xf)) >> 8) >> 4)))) ^ (((((
(0xf)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0
)) : ((((u_long)(((((((((0xf)) >> 8))) - 1) & (((((
0xf)) >> 8)))) ^ (((((0xf)) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xf)) >> 8)) >>
2)) - 1) & ((((((0xf)) >> 8)) >> 2))) ^ ((((
((0xf)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xf)) >> 8)))) - 1) & ((
((((0xf)) >> 8))))) ^ ((((((0xf)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf)))) - 1) &
((((0xf))))) ^ ((((0xf)))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf))) >> 4)) - 1) & (((((0xf))) >>
4))) ^ (((((0xf))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf))) >> 4) >> 2)) - 1) &
((((((0xf))) >> 4) >> 2))) ^ ((((((0xf))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf))) >> 4))) - 1) & ((((((0xf))) >>
4)))) ^ ((((((0xf))) >> 4))))) >> (1)) != 0) ? 1
: 0)) : ((((u_long)(((((((((0xf))))) - 1) & (((((0xf))))
)) ^ (((((0xf))))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xf)))) >> 2)) - 1) & ((((((0xf)))) >>
2))) ^ ((((((0xf)))) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xf)))))) - 1) & ((((((0xf))))
))) ^ ((((((0xf)))))))) >> (1)) != 0) ? 1 : 0))))))
; /* 5 us */
1045#else
1046 /* XXX new magic from reference driver source */
1047 tofs2 = LSHIFT(8, ATW_TOFS2_PWR1UP_MASK)((8) << ((((u_long)((((((0xf0000000)) - 1) & ((0xf0000000
))) ^ ((0xf0000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xf0000000) >> 16)) - 1) & (((0xf0000000) >>
16))) ^ (((0xf0000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xf0000000) >> 16) >> 8))
- 1) & ((((0xf0000000) >> 16) >> 8))) ^ ((((
0xf0000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xf0000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xf0000000) >> 16) >>
8) >> 4))) ^ (((((0xf0000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xf0000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xf0000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xf0000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xf0000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xf0000000) >> 16) >> 8) >>
4)))) ^ ((((((0xf0000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000000
) >> 16) >> 8))) - 1) & (((((0xf0000000) >>
16) >> 8)))) ^ (((((0xf0000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xf0000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xf0000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xf0000000) >> 16) >>
8)))) - 1) & ((((((0xf0000000) >> 16) >> 8))
))) ^ ((((((0xf0000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf0000000) >>
16))) - 1) & ((((0xf0000000) >> 16)))) ^ ((((0xf0000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xf0000000) >> 16)) >> 4)) - 1) & (((((0xf0000000
) >> 16)) >> 4))) ^ (((((0xf0000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xf0000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xf0000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xf0000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000000) >>
16)) >> 4))) - 1) & ((((((0xf0000000) >> 16)
) >> 4)))) ^ ((((((0xf0000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000000
) >> 16)))) - 1) & (((((0xf0000000) >> 16))))
) ^ (((((0xf0000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xf0000000) >> 16))) >> 2
)) - 1) & ((((((0xf0000000) >> 16))) >> 2))) ^
((((((0xf0000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000000) >> 16
))))) - 1) & ((((((0xf0000000) >> 16)))))) ^ ((((((
0xf0000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xf0000000))) - 1) & (((0xf0000000)
))) ^ (((0xf0000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf0000000)) >> 8)) - 1) & ((((0xf0000000)
) >> 8))) ^ ((((0xf0000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xf0000000)) >> 8) >>
4)) - 1) & (((((0xf0000000)) >> 8) >> 4))) ^
(((((0xf0000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xf0000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xf0000000)) >> 8) >>
4) >> 2))) ^ ((((((0xf0000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xf0000000)) >> 8) >> 4))) - 1) & (((
(((0xf0000000)) >> 8) >> 4)))) ^ ((((((0xf0000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xf0000000)) >> 8))) - 1) & ((
(((0xf0000000)) >> 8)))) ^ (((((0xf0000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000000
)) >> 8)) >> 2)) - 1) & ((((((0xf0000000)) >>
8)) >> 2))) ^ ((((((0xf0000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000000
)) >> 8)))) - 1) & ((((((0xf0000000)) >> 8)))
)) ^ ((((((0xf0000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xf0000000)))) - 1) & ((((
0xf0000000))))) ^ ((((0xf0000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xf0000000))) >> 4)) - 1) & (
((((0xf0000000))) >> 4))) ^ (((((0xf0000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000000
))) >> 4) >> 2)) - 1) & ((((((0xf0000000))) >>
4) >> 2))) ^ ((((((0xf0000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000000
))) >> 4))) - 1) & ((((((0xf0000000))) >> 4))
)) ^ ((((((0xf0000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xf0000000))))) - 1) & (((
((0xf0000000)))))) ^ (((((0xf0000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xf0000000)))) >> 2)) - 1)
& ((((((0xf0000000)))) >> 2))) ^ ((((((0xf0000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf0000000)))))) - 1) & ((((((0xf0000000)))))))
^ ((((((0xf0000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| /* 8 ms = 4 * 2 ms */
1048 LSHIFT(8, ATW_TOFS2_PWR0PAPE_MASK)((8) << ((((u_long)((((((0xf000000)) - 1) & ((0xf000000
))) ^ ((0xf000000)))) >> (16)) != 0) ? 16 + ((((u_long)
(((((((0xf000000) >> 16)) - 1) & (((0xf000000) >>
16))) ^ (((0xf000000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xf000000) >> 16) >> 8)) - 1
) & ((((0xf000000) >> 16) >> 8))) ^ ((((0xf000000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf000000) >> 16) >> 8) >> 4)) - 1
) & (((((0xf000000) >> 16) >> 8) >> 4))
) ^ (((((0xf000000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf000000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xf000000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xf000000) >> 16) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xf000000
) >> 16) >> 8) >> 4)))) ^ ((((((0xf000000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xf000000) >> 16) >> 8)))
- 1) & (((((0xf000000) >> 16) >> 8)))) ^ (((
((0xf000000) >> 16) >> 8))))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xf000000) >> 16) >> 8
)) >> 2)) - 1) & ((((((0xf000000) >> 16) >>
8)) >> 2))) ^ ((((((0xf000000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xf000000) >> 16) >> 8)))) - 1) & ((
((((0xf000000) >> 16) >> 8))))) ^ ((((((0xf000000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xf000000) >> 16))) - 1) & (
(((0xf000000) >> 16)))) ^ ((((0xf000000) >> 16)))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000000) >>
16)) >> 4)) - 1) & (((((0xf000000) >> 16)) >>
4))) ^ (((((0xf000000) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf000000) >> 16
)) >> 4) >> 2)) - 1) & ((((((0xf000000) >>
16)) >> 4) >> 2))) ^ ((((((0xf000000) >> 16
)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xf000000) >> 16)) >> 4))) - 1
) & ((((((0xf000000) >> 16)) >> 4)))) ^ (((((
(0xf000000) >> 16)) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xf000000) >> 16)))) -
1) & (((((0xf000000) >> 16))))) ^ (((((0xf000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf000000
) >> 16))) >> 2)) - 1) & ((((((0xf000000) >>
16))) >> 2))) ^ ((((((0xf000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000000
) >> 16))))) - 1) & ((((((0xf000000) >> 16)))
))) ^ ((((((0xf000000) >> 16))))))) >> (1)) != 0)
? 1 : 0)))) : ((((u_long)(((((((0xf000000))) - 1) & (((0xf000000
)))) ^ (((0xf000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf000000)) >> 8)) - 1) & ((((0xf000000)) >>
8))) ^ ((((0xf000000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xf000000)) >> 8) >> 4)) -
1) & (((((0xf000000)) >> 8) >> 4))) ^ (((((0xf000000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf000000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xf000000)) >> 8) >> 4) >> 2
))) ^ ((((((0xf000000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000000
)) >> 8) >> 4))) - 1) & ((((((0xf000000)) >>
8) >> 4)))) ^ ((((((0xf000000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf000000
)) >> 8))) - 1) & (((((0xf000000)) >> 8)))) ^
(((((0xf000000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf000000)) >> 8)) >> 2)) - 1
) & ((((((0xf000000)) >> 8)) >> 2))) ^ ((((((
0xf000000)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf000000)) >> 8)))) - 1
) & ((((((0xf000000)) >> 8))))) ^ ((((((0xf000000))
>> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xf000000)))) - 1) & ((((0xf000000))))) ^ ((((0xf000000
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000000
))) >> 4)) - 1) & (((((0xf000000))) >> 4))) ^
(((((0xf000000))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf000000))) >> 4) >> 2)) - 1
) & ((((((0xf000000))) >> 4) >> 2))) ^ ((((((
0xf000000))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf000000))) >> 4))) - 1
) & ((((((0xf000000))) >> 4)))) ^ ((((((0xf000000))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xf000000))))) - 1) & (((((0xf000000)))))) ^ (((
((0xf000000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf000000)))) >> 2)) - 1) & ((((((0xf000000)))
) >> 2))) ^ ((((((0xf000000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000000)))))) -
1) & ((((((0xf000000))))))) ^ ((((((0xf000000)))))))) >>
(1)) != 0) ? 1 : 0))))))
| /* 13 us */
1049 LSHIFT(1, ATW_TOFS2_PWR1PAPE_MASK)((1) << ((((u_long)((((((0xf00000)) - 1) & ((0xf00000
))) ^ ((0xf00000)))) >> (16)) != 0) ? 16 + ((((u_long)(
((((((0xf00000) >> 16)) - 1) & (((0xf00000) >>
16))) ^ (((0xf00000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xf00000) >> 16) >> 8)) - 1
) & ((((0xf00000) >> 16) >> 8))) ^ ((((0xf00000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf00000) >> 16) >> 8) >> 4)) - 1
) & (((((0xf00000) >> 16) >> 8) >> 4)))
^ (((((0xf00000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00000) >> 16)
>> 8) >> 4) >> 2)) - 1) & ((((((0xf00000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xf00000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xf00000
) >> 16) >> 8) >> 4)))) ^ ((((((0xf00000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xf00000) >> 16) >> 8))) -
1) & (((((0xf00000) >> 16) >> 8)))) ^ (((((0xf00000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xf00000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xf00000) >> 16) >> 8)) >>
2))) ^ ((((((0xf00000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000
) >> 16) >> 8)))) - 1) & ((((((0xf00000) >>
16) >> 8))))) ^ ((((((0xf00000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf00000
) >> 16))) - 1) & ((((0xf00000) >> 16)))) ^ (
(((0xf00000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf00000) >> 16)) >> 4)) - 1) & (((
((0xf00000) >> 16)) >> 4))) ^ (((((0xf00000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xf00000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xf00000) >> 16)) >> 4) >> 2))) ^ ((
((((0xf00000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000) >>
16)) >> 4))) - 1) & ((((((0xf00000) >> 16)) >>
4)))) ^ ((((((0xf00000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00000) >>
16)))) - 1) & (((((0xf00000) >> 16))))) ^ (((((0xf00000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xf00000) >> 16))) >> 2)) - 1) & ((((((
0xf00000) >> 16))) >> 2))) ^ ((((((0xf00000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xf00000) >> 16))))) - 1) & ((((((0xf00000
) >> 16)))))) ^ ((((((0xf00000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xf00000))) - 1) &
(((0xf00000)))) ^ (((0xf00000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xf00000)) >> 8)) - 1) & ((((0xf00000
)) >> 8))) ^ ((((0xf00000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xf00000)) >> 8) >>
4)) - 1) & (((((0xf00000)) >> 8) >> 4))) ^ (
((((0xf00000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xf00000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xf00000)) >> 8) >>
4) >> 2))) ^ ((((((0xf00000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000
)) >> 8) >> 4))) - 1) & ((((((0xf00000)) >>
8) >> 4)))) ^ ((((((0xf00000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00000
)) >> 8))) - 1) & (((((0xf00000)) >> 8)))) ^ (
((((0xf00000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xf00000)) >> 8)) >> 2)) - 1) &
((((((0xf00000)) >> 8)) >> 2))) ^ ((((((0xf00000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xf00000)) >> 8)))) - 1) & ((
((((0xf00000)) >> 8))))) ^ ((((((0xf00000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf00000
)))) - 1) & ((((0xf00000))))) ^ ((((0xf00000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xf00000))) >> 4)
) - 1) & (((((0xf00000))) >> 4))) ^ (((((0xf00000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xf00000))) >> 4) >> 2)) - 1) & ((((((0xf00000
))) >> 4) >> 2))) ^ ((((((0xf00000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xf00000))) >> 4))) - 1) & ((((((0xf00000)))
>> 4)))) ^ ((((((0xf00000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00000))))) - 1) &
(((((0xf00000)))))) ^ (((((0xf00000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xf00000)))) >> 2)) - 1) &
((((((0xf00000)))) >> 2))) ^ ((((((0xf00000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00000
)))))) - 1) & ((((((0xf00000))))))) ^ ((((((0xf00000)))))
))) >> (1)) != 0) ? 1 : 0))))))
| /* 8 us */
1050 LSHIFT(5, ATW_TOFS2_PWR0TRSW_MASK)((5) << ((((u_long)((((((0xf0000)) - 1) & ((0xf0000
))) ^ ((0xf0000)))) >> (16)) != 0) ? 16 + ((((u_long)((
(((((0xf0000) >> 16)) - 1) & (((0xf0000) >> 16
))) ^ (((0xf0000) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xf0000) >> 16) >> 8)) - 1) &
((((0xf0000) >> 16) >> 8))) ^ ((((0xf0000) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xf0000) >> 16) >> 8) >> 4)) - 1) &
(((((0xf0000) >> 16) >> 8) >> 4))) ^ (((((
0xf0000) >> 16) >> 8) >> 4)))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xf0000) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xf0000) >>
16) >> 8) >> 4) >> 2))) ^ ((((((0xf0000) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xf0000) >> 16) >>
8) >> 4))) - 1) & ((((((0xf0000) >> 16) >>
8) >> 4)))) ^ ((((((0xf0000) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000
) >> 16) >> 8))) - 1) & (((((0xf0000) >>
16) >> 8)))) ^ (((((0xf0000) >> 16) >> 8))
))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xf0000) >>
16) >> 8)) >> 2))) ^ ((((((0xf0000) >> 16)
>> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xf0000) >> 16) >> 8)))) - 1)
& ((((((0xf0000) >> 16) >> 8))))) ^ ((((((0xf0000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xf0000) >> 16))) - 1) & (((
(0xf0000) >> 16)))) ^ ((((0xf0000) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xf0000) >> 16)) >>
4)) - 1) & (((((0xf0000) >> 16)) >> 4))) ^ (
((((0xf0000) >> 16)) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xf0000) >> 16)) >> 4
) >> 2)) - 1) & ((((((0xf0000) >> 16)) >>
4) >> 2))) ^ ((((((0xf0000) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000
) >> 16)) >> 4))) - 1) & ((((((0xf0000) >>
16)) >> 4)))) ^ ((((((0xf0000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000
) >> 16)))) - 1) & (((((0xf0000) >> 16))))) ^
(((((0xf0000) >> 16)))))) >> (2)) != 0) ? 2 + ((
((u_long)((((((((((0xf0000) >> 16))) >> 2)) - 1) &
((((((0xf0000) >> 16))) >> 2))) ^ ((((((0xf0000)
>> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xf0000) >> 16))))) - 1) & ((
((((0xf0000) >> 16)))))) ^ ((((((0xf0000) >> 16))
))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xf0000
))) - 1) & (((0xf0000)))) ^ (((0xf0000))))) >> (8))
!= 0) ? 8 + ((((u_long)((((((((0xf0000)) >> 8)) - 1) &
((((0xf0000)) >> 8))) ^ ((((0xf0000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xf0000)) >> 8) >>
4)) - 1) & (((((0xf0000)) >> 8) >> 4))) ^ ((
(((0xf0000)) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xf0000)) >> 8) >> 4) >>
2)) - 1) & ((((((0xf0000)) >> 8) >> 4) >>
2))) ^ ((((((0xf0000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000
)) >> 8) >> 4))) - 1) & ((((((0xf0000)) >>
8) >> 4)))) ^ ((((((0xf0000)) >> 8) >> 4))
))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0000
)) >> 8))) - 1) & (((((0xf0000)) >> 8)))) ^ (
((((0xf0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf0000)) >> 8)) >> 2)) - 1) & (((
(((0xf0000)) >> 8)) >> 2))) ^ ((((((0xf0000)) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xf0000)) >> 8)))) - 1) & ((((((0xf0000)
) >> 8))))) ^ ((((((0xf0000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf0000)))) - 1) &
((((0xf0000))))) ^ ((((0xf0000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xf0000))) >> 4)) - 1) & (((
((0xf0000))) >> 4))) ^ (((((0xf0000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000))) >> 4)
>> 2)) - 1) & ((((((0xf0000))) >> 4) >>
2))) ^ ((((((0xf0000))) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0000))) >>
4))) - 1) & ((((((0xf0000))) >> 4)))) ^ ((((((0xf0000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xf0000))))) - 1) & (((((0xf0000)))))) ^ (((((0xf0000
))))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0000
)))) >> 2)) - 1) & ((((((0xf0000)))) >> 2))) ^
((((((0xf0000)))) >> 2)))) >> (1)) != 0) ? 1 : 0
) : ((((u_long)((((((((((0xf0000)))))) - 1) & ((((((0xf0000
))))))) ^ ((((((0xf0000)))))))) >> (1)) != 0) ? 1 : 0))
))))
| /* 5 us */
1051 LSHIFT(12, ATW_TOFS2_PWR1TRSW_MASK)((12) << ((((u_long)((((((0xf000)) - 1) & ((0xf000)
)) ^ ((0xf000)))) >> (16)) != 0) ? 16 + ((((u_long)((((
(((0xf000) >> 16)) - 1) & (((0xf000) >> 16)))
^ (((0xf000) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf000) >> 16) >> 8)) - 1) & ((((0xf000
) >> 16) >> 8))) ^ ((((0xf000) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000) >>
16) >> 8) >> 4)) - 1) & (((((0xf000) >>
16) >> 8) >> 4))) ^ (((((0xf000) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf000) >> 16) >> 8) >> 4) >> 2)
) - 1) & ((((((0xf000) >> 16) >> 8) >> 4
) >> 2))) ^ ((((((0xf000) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf000) >> 16) >> 8) >> 4))) - 1)
& ((((((0xf000) >> 16) >> 8) >> 4)))) ^
((((((0xf000) >> 16) >> 8) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf000) >> 16
) >> 8))) - 1) & (((((0xf000) >> 16) >>
8)))) ^ (((((0xf000) >> 16) >> 8))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xf000) >> 16) >>
8)) >> 2)) - 1) & ((((((0xf000) >> 16) >>
8)) >> 2))) ^ ((((((0xf000) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000
) >> 16) >> 8)))) - 1) & ((((((0xf000) >>
16) >> 8))))) ^ ((((((0xf000) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf000
) >> 16))) - 1) & ((((0xf000) >> 16)))) ^ (((
(0xf000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf000) >> 16)) >> 4)) - 1) & (((((
0xf000) >> 16)) >> 4))) ^ (((((0xf000) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xf000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xf000) >> 16)) >> 4) >> 2))) ^ ((((
((0xf000) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000) >> 16
)) >> 4))) - 1) & ((((((0xf000) >> 16)) >>
4)))) ^ ((((((0xf000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf000) >> 16
)))) - 1) & (((((0xf000) >> 16))))) ^ (((((0xf000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf000
) >> 16))) >> 2)) - 1) & ((((((0xf000) >>
16))) >> 2))) ^ ((((((0xf000) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000
) >> 16))))) - 1) & ((((((0xf000) >> 16))))))
^ ((((((0xf000) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xf000))) - 1) & (((0xf000))))
^ (((0xf000))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xf000)) >> 8)) - 1) & ((((0xf000)) >> 8)))
^ ((((0xf000)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xf000)) >> 8) >> 4)) - 1) & (
((((0xf000)) >> 8) >> 4))) ^ (((((0xf000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xf000)) >> 8) >> 4) >> 2))) ^ (((((
(0xf000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)) >> 8) >>
4))) - 1) & ((((((0xf000)) >> 8) >> 4)))) ^ (
(((((0xf000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xf000)) >> 8))) - 1) &
(((((0xf000)) >> 8)))) ^ (((((0xf000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf000)) >>
8)) >> 2)) - 1) & ((((((0xf000)) >> 8)) >>
2))) ^ ((((((0xf000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)) >> 8
)))) - 1) & ((((((0xf000)) >> 8))))) ^ ((((((0xf000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xf000)))) - 1) & ((((0xf000))))) ^ ((((0xf000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000))) >>
4)) - 1) & (((((0xf000))) >> 4))) ^ (((((0xf000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xf000))) >> 4) >> 2)) - 1) & ((((((0xf000)
)) >> 4) >> 2))) ^ ((((((0xf000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000
))) >> 4))) - 1) & ((((((0xf000))) >> 4)))) ^
((((((0xf000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xf000))))) - 1) & (((((0xf000)))
))) ^ (((((0xf000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf000)))) >> 2)) - 1) & ((((((0xf000)))
) >> 2))) ^ ((((((0xf000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)))))) - 1) &
((((((0xf000))))))) ^ ((((((0xf000)))))))) >> (1)) != 0
) ? 1 : 0))))))
| /* 12 us */
1052 LSHIFT(13, ATW_TOFS2_PWR0PE2_MASK)((13) << ((((u_long)((((((0xf00)) - 1) & ((0xf00)))
^ ((0xf00)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((
0xf00) >> 16)) - 1) & (((0xf00) >> 16))) ^ ((
(0xf00) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)
((((((((0xf00) >> 16) >> 8)) - 1) & ((((0xf00
) >> 16) >> 8))) ^ ((((0xf00) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf00) >>
16) >> 8) >> 4)) - 1) & (((((0xf00) >>
16) >> 8) >> 4))) ^ (((((0xf00) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf00) >> 16) >> 8) >> 4) >> 2))
- 1) & ((((((0xf00) >> 16) >> 8) >> 4)
>> 2))) ^ ((((((0xf00) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf00) >> 16) >> 8) >> 4))) - 1) &
((((((0xf00) >> 16) >> 8) >> 4)))) ^ (((((
(0xf00) >> 16) >> 8) >> 4))))) >> (1)
) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00) >> 16) >>
8))) - 1) & (((((0xf00) >> 16) >> 8)))) ^ ((
(((0xf00) >> 16) >> 8))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xf00) >> 16) >> 8)) >>
2)) - 1) & ((((((0xf00) >> 16) >> 8)) >>
2))) ^ ((((((0xf00) >> 16) >> 8)) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00) >>
16) >> 8)))) - 1) & ((((((0xf00) >> 16) >>
8))))) ^ ((((((0xf00) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf00) >> 16
))) - 1) & ((((0xf00) >> 16)))) ^ ((((0xf00) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf00)
>> 16)) >> 4)) - 1) & (((((0xf00) >> 16
)) >> 4))) ^ (((((0xf00) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00) >> 16)) >>
4) >> 2)) - 1) & ((((((0xf00) >> 16)) >>
4) >> 2))) ^ ((((((0xf00) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00
) >> 16)) >> 4))) - 1) & ((((((0xf00) >>
16)) >> 4)))) ^ ((((((0xf00) >> 16)) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00
) >> 16)))) - 1) & (((((0xf00) >> 16))))) ^ (
((((0xf00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf00) >> 16))) >> 2)) - 1) & ((((
((0xf00) >> 16))) >> 2))) ^ ((((((0xf00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xf00) >> 16))))) - 1) & ((((((0xf00) >>
16)))))) ^ ((((((0xf00) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xf00))) - 1) & (((0xf00
)))) ^ (((0xf00))))) >> (8)) != 0) ? 8 + ((((u_long)(((
(((((0xf00)) >> 8)) - 1) & ((((0xf00)) >> 8))
) ^ ((((0xf00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xf00)) >> 8) >> 4)) - 1) & (
((((0xf00)) >> 8) >> 4))) ^ (((((0xf00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf00)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xf00)) >> 8) >> 4) >> 2))) ^ ((((((0xf00
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xf00)) >> 8) >>
4))) - 1) & ((((((0xf00)) >> 8) >> 4)))) ^ (
(((((0xf00)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xf00)) >> 8))) - 1) &
(((((0xf00)) >> 8)))) ^ (((((0xf00)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00)) >> 8)) >>
2)) - 1) & ((((((0xf00)) >> 8)) >> 2))) ^ ((
((((0xf00)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf00)) >> 8)))) - 1) &
((((((0xf00)) >> 8))))) ^ ((((((0xf00)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf00)
))) - 1) & ((((0xf00))))) ^ ((((0xf00)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xf00))) >> 4)) - 1) &
(((((0xf00))) >> 4))) ^ (((((0xf00))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00))) >> 4) >>
2)) - 1) & ((((((0xf00))) >> 4) >> 2))) ^ ((
((((0xf00))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf00))) >> 4))) - 1) &
((((((0xf00))) >> 4)))) ^ ((((((0xf00))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf00)
)))) - 1) & (((((0xf00)))))) ^ (((((0xf00))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf00)))) >> 2))
- 1) & ((((((0xf00)))) >> 2))) ^ ((((((0xf00)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf00
)))))) - 1) & ((((((0xf00))))))) ^ ((((((0xf00)))))))) >>
(1)) != 0) ? 1 : 0))))))
| /* 13 us */
1053 LSHIFT(1, ATW_TOFS2_PWR1PE2_MASK)((1) << ((((u_long)((((((0xf0)) - 1) & ((0xf0))) ^ (
(0xf0)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xf0)
>> 16)) - 1) & (((0xf0) >> 16))) ^ (((0xf0) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xf0) >>
16) >> 8)) - 1) & ((((0xf0) >> 16) >> 8
))) ^ ((((0xf0) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xf0) >> 16) >> 8) >>
4)) - 1) & (((((0xf0) >> 16) >> 8) >> 4
))) ^ (((((0xf0) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xf0) >> 16
) >> 8) >> 4) >> 2))) ^ ((((((0xf0) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xf0) >> 16) >>
8) >> 4))) - 1) & ((((((0xf0) >> 16) >>
8) >> 4)))) ^ ((((((0xf0) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0
) >> 16) >> 8))) - 1) & (((((0xf0) >> 16
) >> 8)))) ^ (((((0xf0) >> 16) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0) >> 16) >>
8)) >> 2)) - 1) & ((((((0xf0) >> 16) >>
8)) >> 2))) ^ ((((((0xf0) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0
) >> 16) >> 8)))) - 1) & ((((((0xf0) >>
16) >> 8))))) ^ ((((((0xf0) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf0)
>> 16))) - 1) & ((((0xf0) >> 16)))) ^ ((((0xf0
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xf0) >> 16)) >> 4)) - 1) & (((((0xf0) >>
16)) >> 4))) ^ (((((0xf0) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf0) >>
16)) >> 4) >> 2)) - 1) & ((((((0xf0) >>
16)) >> 4) >> 2))) ^ ((((((0xf0) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf0) >> 16)) >> 4))) - 1) & ((((((
0xf0) >> 16)) >> 4)))) ^ ((((((0xf0) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xf0) >> 16)))) - 1) & (((((0xf0) >>
16))))) ^ (((((0xf0) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xf0) >> 16))) >> 2)) -
1) & ((((((0xf0) >> 16))) >> 2))) ^ ((((((0xf0
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xf0) >> 16))))) - 1) & (((((
(0xf0) >> 16)))))) ^ ((((((0xf0) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xf0))) - 1) &
(((0xf0)))) ^ (((0xf0))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf0)) >> 8)) - 1) & ((((0xf0)) >> 8
))) ^ ((((0xf0)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0xf0)) >> 8) >> 4)) - 1) & (
((((0xf0)) >> 8) >> 4))) ^ (((((0xf0)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xf0)) >> 8) >> 4) >> 2)) - 1) & (((
(((0xf0)) >> 8) >> 4) >> 2))) ^ ((((((0xf0)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf0)) >> 8) >> 4)
)) - 1) & ((((((0xf0)) >> 8) >> 4)))) ^ (((((
(0xf0)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xf0)) >> 8))) - 1) & ((
(((0xf0)) >> 8)))) ^ (((((0xf0)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0)) >> 8)) >>
2)) - 1) & ((((((0xf0)) >> 8)) >> 2))) ^ (((
(((0xf0)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xf0)) >> 8)))) - 1) &
((((((0xf0)) >> 8))))) ^ ((((((0xf0)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf0))))
- 1) & ((((0xf0))))) ^ ((((0xf0)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xf0))) >> 4)) - 1) & (
((((0xf0))) >> 4))) ^ (((((0xf0))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf0))) >> 4) >>
2)) - 1) & ((((((0xf0))) >> 4) >> 2))) ^ (((
(((0xf0))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xf0))) >> 4))) - 1) &
((((((0xf0))) >> 4)))) ^ ((((((0xf0))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf0))))
) - 1) & (((((0xf0)))))) ^ (((((0xf0))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xf0)))) >> 2)) - 1) &
((((((0xf0)))) >> 2))) ^ ((((((0xf0)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf0))))
)) - 1) & ((((((0xf0))))))) ^ ((((((0xf0)))))))) >>
(1)) != 0) ? 1 : 0))))))
| /* 4 us */
1054 LSHIFT(8, ATW_TOFS2_PWR0TXPE_MASK)((8) << ((((u_long)((((((0xf)) - 1) & ((0xf))) ^ ((
0xf)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xf) >>
16)) - 1) & (((0xf) >> 16))) ^ (((0xf) >> 16
)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xf) >>
16) >> 8)) - 1) & ((((0xf) >> 16) >> 8
))) ^ ((((0xf) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xf) >> 16) >> 8) >>
4)) - 1) & (((((0xf) >> 16) >> 8) >> 4
))) ^ (((((0xf) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xf) >> 16
) >> 8) >> 4) >> 2))) ^ ((((((0xf) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xf) >> 16) >> 8
) >> 4))) - 1) & ((((((0xf) >> 16) >> 8
) >> 4)))) ^ ((((((0xf) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf
) >> 16) >> 8))) - 1) & (((((0xf) >> 16
) >> 8)))) ^ (((((0xf) >> 16) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf) >> 16) >>
8)) >> 2)) - 1) & ((((((0xf) >> 16) >>
8)) >> 2))) ^ ((((((0xf) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf
) >> 16) >> 8)))) - 1) & ((((((0xf) >> 16
) >> 8))))) ^ ((((((0xf) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf) >> 16)
)) - 1) & ((((0xf) >> 16)))) ^ ((((0xf) >> 16
))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf) >>
16)) >> 4)) - 1) & (((((0xf) >> 16)) >>
4))) ^ (((((0xf) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xf) >> 16)) >> 4)
>> 2)) - 1) & ((((((0xf) >> 16)) >> 4)
>> 2))) ^ ((((((0xf) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf
) >> 16)) >> 4))) - 1) & ((((((0xf) >> 16
)) >> 4)))) ^ ((((((0xf) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf) >> 16)
))) - 1) & (((((0xf) >> 16))))) ^ (((((0xf) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf)
>> 16))) >> 2)) - 1) & ((((((0xf) >> 16
))) >> 2))) ^ ((((((0xf) >> 16))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf) >> 16)
)))) - 1) & ((((((0xf) >> 16)))))) ^ ((((((0xf) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xf))) - 1) & (((0xf)))) ^ (((0xf))))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xf)) >> 8)) - 1) & ((
((0xf)) >> 8))) ^ ((((0xf)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xf)) >> 8) >> 4
)) - 1) & (((((0xf)) >> 8) >> 4))) ^ (((((0xf
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf)) >> 8) >> 4) >> 2)) - 1) &
((((((0xf)) >> 8) >> 4) >> 2))) ^ ((((((0xf
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xf)) >> 8) >> 4
))) - 1) & ((((((0xf)) >> 8) >> 4)))) ^ (((((
(0xf)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0
)) : ((((u_long)(((((((((0xf)) >> 8))) - 1) & (((((
0xf)) >> 8)))) ^ (((((0xf)) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xf)) >> 8)) >>
2)) - 1) & ((((((0xf)) >> 8)) >> 2))) ^ ((((
((0xf)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xf)) >> 8)))) - 1) & ((
((((0xf)) >> 8))))) ^ ((((((0xf)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf)))) - 1) &
((((0xf))))) ^ ((((0xf)))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf))) >> 4)) - 1) & (((((0xf))) >>
4))) ^ (((((0xf))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf))) >> 4) >> 2)) - 1) &
((((((0xf))) >> 4) >> 2))) ^ ((((((0xf))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf))) >> 4))) - 1) & ((((((0xf))) >>
4)))) ^ ((((((0xf))) >> 4))))) >> (1)) != 0) ? 1
: 0)) : ((((u_long)(((((((((0xf))))) - 1) & (((((0xf))))
)) ^ (((((0xf))))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xf)))) >> 2)) - 1) & ((((((0xf)))) >>
2))) ^ ((((((0xf)))) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xf)))))) - 1) & ((((((0xf))))
))) ^ ((((((0xf)))))))) >> (1)) != 0) ? 1 : 0))))))
; /* 5 us */
1055#endif
1056 ATW_WRITE(sc, ATW_TOFS2, tofs2)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x84)), ((tofs2
))))
;
1057}
1058
1059void
1060atw_nar_init(struct atw_softc *sc)
1061{
1062 ATW_WRITE(sc, ATW_NAR, ATW_NAR_SF|ATW_NAR_PB)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x30)), (((
1<<21)|(1<<3)))))
;
1063}
1064
1065void
1066atw_txlmt_init(struct atw_softc *sc)
1067{
1068 ATW_WRITE(sc, ATW_TXLMT, LSHIFT(512, ATW_TXLMT_MTMLT_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xB0)), (((
(512) << ((((u_long)((((((0xffff0000)) - 1) & ((0xffff0000
))) ^ ((0xffff0000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xffff0000) >> 16)) - 1) & (((0xffff0000) >>
16))) ^ (((0xffff0000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xffff0000) >> 16) >> 8))
- 1) & ((((0xffff0000) >> 16) >> 8))) ^ ((((
0xffff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xffff0000) >> 16) >> 8)
>> 4)) - 1) & (((((0xffff0000) >> 16) >>
8) >> 4))) ^ (((((0xffff0000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4)))) ^ ((((((0xffff0000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16) >> 8))) - 1) & (((((0xffff0000) >>
16) >> 8)))) ^ (((((0xffff0000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xffff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xffff0000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8)))) - 1) & ((((((0xffff0000) >> 16) >> 8))
))) ^ ((((((0xffff0000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000) >>
16))) - 1) & ((((0xffff0000) >> 16)))) ^ ((((0xffff0000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xffff0000) >> 16)) >> 4)) - 1) & (((((0xffff0000
) >> 16)) >> 4))) ^ (((((0xffff0000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff0000) >> 16)) >> 4) >> 2))) ^ (
(((((0xffff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >>
16)) >> 4))) - 1) & ((((((0xffff0000) >> 16)
) >> 4)))) ^ ((((((0xffff0000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16)))) - 1) & (((((0xffff0000) >> 16))))
) ^ (((((0xffff0000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xffff0000) >> 16))) >> 2
)) - 1) & ((((((0xffff0000) >> 16))) >> 2))) ^
((((((0xffff0000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16
))))) - 1) & ((((((0xffff0000) >> 16)))))) ^ ((((((
0xffff0000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xffff0000))) - 1) & (((0xffff0000)
))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xffff0000)) >> 8)) - 1) & ((((0xffff0000)
) >> 8))) ^ ((((0xffff0000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8) >>
4)) - 1) & (((((0xffff0000)) >> 8) >> 4))) ^
(((((0xffff0000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000)) >> 8) >> 4))) - 1) & (((
(((0xffff0000)) >> 8) >> 4)))) ^ ((((((0xffff0000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xffff0000)) >> 8))) - 1) & ((
(((0xffff0000)) >> 8)))) ^ (((((0xffff0000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
)) >> 8)) >> 2)) - 1) & ((((((0xffff0000)) >>
8)) >> 2))) ^ ((((((0xffff0000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
)) >> 8)))) - 1) & ((((((0xffff0000)) >> 8)))
)) ^ ((((((0xffff0000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1) & ((((
0xffff0000))))) ^ ((((0xffff0000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff0000))) >> 4)) - 1) & (
((((0xffff0000))) >> 4))) ^ (((((0xffff0000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
))) >> 4) >> 2)) - 1) & ((((((0xffff0000))) >>
4) >> 2))) ^ ((((((0xffff0000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
))) >> 4))) - 1) & ((((((0xffff0000))) >> 4))
)) ^ ((((((0xffff0000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xffff0000))))) - 1) & (((
((0xffff0000)))))) ^ (((((0xffff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff0000)))) >> 2)) - 1)
& ((((((0xffff0000)))) >> 2))) ^ ((((((0xffff0000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xffff0000)))))) - 1) & ((((((0xffff0000)))))))
^ ((((((0xffff0000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((1) << ((((u_long)((((((0xff)) - 1) & ((0xff)))
^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff
) >> 16)) - 1) & (((0xff) >> 16))) ^ (((0xff)
>> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(((((((
(0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
1069 LSHIFT(1, ATW_TXLMT_SRTYLIM_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xB0)), (((
(512) << ((((u_long)((((((0xffff0000)) - 1) & ((0xffff0000
))) ^ ((0xffff0000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xffff0000) >> 16)) - 1) & (((0xffff0000) >>
16))) ^ (((0xffff0000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xffff0000) >> 16) >> 8))
- 1) & ((((0xffff0000) >> 16) >> 8))) ^ ((((
0xffff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xffff0000) >> 16) >> 8)
>> 4)) - 1) & (((((0xffff0000) >> 16) >>
8) >> 4))) ^ (((((0xffff0000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4)))) ^ ((((((0xffff0000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16) >> 8))) - 1) & (((((0xffff0000) >>
16) >> 8)))) ^ (((((0xffff0000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xffff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xffff0000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8)))) - 1) & ((((((0xffff0000) >> 16) >> 8))
))) ^ ((((((0xffff0000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000) >>
16))) - 1) & ((((0xffff0000) >> 16)))) ^ ((((0xffff0000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xffff0000) >> 16)) >> 4)) - 1) & (((((0xffff0000
) >> 16)) >> 4))) ^ (((((0xffff0000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff0000) >> 16)) >> 4) >> 2))) ^ (
(((((0xffff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >>
16)) >> 4))) - 1) & ((((((0xffff0000) >> 16)
) >> 4)))) ^ ((((((0xffff0000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16)))) - 1) & (((((0xffff0000) >> 16))))
) ^ (((((0xffff0000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xffff0000) >> 16))) >> 2
)) - 1) & ((((((0xffff0000) >> 16))) >> 2))) ^
((((((0xffff0000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16
))))) - 1) & ((((((0xffff0000) >> 16)))))) ^ ((((((
0xffff0000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xffff0000))) - 1) & (((0xffff0000)
))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xffff0000)) >> 8)) - 1) & ((((0xffff0000)
) >> 8))) ^ ((((0xffff0000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8) >>
4)) - 1) & (((((0xffff0000)) >> 8) >> 4))) ^
(((((0xffff0000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000)) >> 8) >> 4))) - 1) & (((
(((0xffff0000)) >> 8) >> 4)))) ^ ((((((0xffff0000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xffff0000)) >> 8))) - 1) & ((
(((0xffff0000)) >> 8)))) ^ (((((0xffff0000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
)) >> 8)) >> 2)) - 1) & ((((((0xffff0000)) >>
8)) >> 2))) ^ ((((((0xffff0000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
)) >> 8)))) - 1) & ((((((0xffff0000)) >> 8)))
)) ^ ((((((0xffff0000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1) & ((((
0xffff0000))))) ^ ((((0xffff0000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff0000))) >> 4)) - 1) & (
((((0xffff0000))) >> 4))) ^ (((((0xffff0000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
))) >> 4) >> 2)) - 1) & ((((((0xffff0000))) >>
4) >> 2))) ^ ((((((0xffff0000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
))) >> 4))) - 1) & ((((((0xffff0000))) >> 4))
)) ^ ((((((0xffff0000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xffff0000))))) - 1) & (((
((0xffff0000)))))) ^ (((((0xffff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff0000)))) >> 2)) - 1)
& ((((((0xffff0000)))) >> 2))) ^ ((((((0xffff0000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xffff0000)))))) - 1) & ((((((0xffff0000)))))))
^ ((((((0xffff0000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((1) << ((((u_long)((((((0xff)) - 1) & ((0xff)))
^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff
) >> 16)) - 1) & (((0xff) >> 16))) ^ (((0xff)
>> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(((((((
(0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
;
1070}
1071
1072void
1073atw_test1_init(struct atw_softc *sc)
1074{
1075 uint32_t test1;
1076
1077 test1 = ATW_READ(sc, ATW_TEST1)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x44))));
1078 test1 &= ~(ATW_TEST1_DBGREAD_MASK0x70000000|ATW_TEST1_CONTROL(1<<31));
1079 /* XXX magic 0x1 */
1080 test1 |= LSHIFT(0x1, ATW_TEST1_DBGREAD_MASK)((0x1) << ((((u_long)((((((0x70000000)) - 1) & ((0x70000000
))) ^ ((0x70000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0x70000000) >> 16)) - 1) & (((0x70000000) >>
16))) ^ (((0x70000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0x70000000) >> 16) >> 8))
- 1) & ((((0x70000000) >> 16) >> 8))) ^ ((((
0x70000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x70000000) >> 16) >> 8)
>> 4)) - 1) & (((((0x70000000) >> 16) >>
8) >> 4))) ^ (((((0x70000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0x70000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0x70000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0x70000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0x70000000) >> 16) >> 8) >>
4))) - 1) & ((((((0x70000000) >> 16) >> 8) >>
4)))) ^ ((((((0x70000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x70000000
) >> 16) >> 8))) - 1) & (((((0x70000000) >>
16) >> 8)))) ^ (((((0x70000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x70000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x70000000
) >> 16) >> 8)) >> 2))) ^ ((((((0x70000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x70000000) >> 16) >>
8)))) - 1) & ((((((0x70000000) >> 16) >> 8))
))) ^ ((((((0x70000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x70000000) >>
16))) - 1) & ((((0x70000000) >> 16)))) ^ ((((0x70000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0x70000000) >> 16)) >> 4)) - 1) & (((((0x70000000
) >> 16)) >> 4))) ^ (((((0x70000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x70000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x70000000) >> 16)) >> 4) >> 2))) ^ (
(((((0x70000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x70000000) >>
16)) >> 4))) - 1) & ((((((0x70000000) >> 16)
) >> 4)))) ^ ((((((0x70000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x70000000
) >> 16)))) - 1) & (((((0x70000000) >> 16))))
) ^ (((((0x70000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0x70000000) >> 16))) >> 2
)) - 1) & ((((((0x70000000) >> 16))) >> 2))) ^
((((((0x70000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x70000000) >> 16
))))) - 1) & ((((((0x70000000) >> 16)))))) ^ ((((((
0x70000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0x70000000))) - 1) & (((0x70000000)
))) ^ (((0x70000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x70000000)) >> 8)) - 1) & ((((0x70000000)
) >> 8))) ^ ((((0x70000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0x70000000)) >> 8) >>
4)) - 1) & (((((0x70000000)) >> 8) >> 4))) ^
(((((0x70000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x70000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0x70000000)) >> 8) >>
4) >> 2))) ^ ((((((0x70000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0x70000000)) >> 8) >> 4))) - 1) & (((
(((0x70000000)) >> 8) >> 4)))) ^ ((((((0x70000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0x70000000)) >> 8))) - 1) & ((
(((0x70000000)) >> 8)))) ^ (((((0x70000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x70000000
)) >> 8)) >> 2)) - 1) & ((((((0x70000000)) >>
8)) >> 2))) ^ ((((((0x70000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x70000000
)) >> 8)))) - 1) & ((((((0x70000000)) >> 8)))
)) ^ ((((((0x70000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0x70000000)))) - 1) & ((((
0x70000000))))) ^ ((((0x70000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x70000000))) >> 4)) - 1) & (
((((0x70000000))) >> 4))) ^ (((((0x70000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x70000000
))) >> 4) >> 2)) - 1) & ((((((0x70000000))) >>
4) >> 2))) ^ ((((((0x70000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x70000000
))) >> 4))) - 1) & ((((((0x70000000))) >> 4))
)) ^ ((((((0x70000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x70000000))))) - 1) & (((
((0x70000000)))))) ^ (((((0x70000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x70000000)))) >> 2)) - 1)
& ((((((0x70000000)))) >> 2))) ^ ((((((0x70000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x70000000)))))) - 1) & ((((((0x70000000)))))))
^ ((((((0x70000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ATW_TEST1_CONTROL(1<<31);
1081 ATW_WRITE(sc, ATW_TEST1, test1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x44)), ((test1
))))
;
1082}
1083
1084void
1085atw_rf_reset(struct atw_softc *sc)
1086{
1087 /* XXX this resets an Intersil RF front-end? */
1088 /* TBD condition on Intersil RFType? */
1089 ATW_WRITE(sc, ATW_SYNRF, ATW_SYNRF_INTERSIL_EN)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), (((
1<<20)))))
;
1090 DELAY(10 * 1000)(*delay_func)(10 * 1000);
1091 ATW_WRITE(sc, ATW_SYNRF, 0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((0
))))
;
1092 DELAY(5 * 1000)(*delay_func)(5 * 1000);
1093}
1094
1095/* Set 16 TU max duration for the contention-free period (CFP). */
1096void
1097atw_cfp_init(struct atw_softc *sc)
1098{
1099 uint32_t cfpp;
1100
1101 cfpp = ATW_READ(sc, ATW_CFPP)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xD8))));
1102 cfpp &= ~ATW_CFPP_CFPMD0xffff00;
1103 cfpp |= LSHIFT(16, ATW_CFPP_CFPMD)((16) << ((((u_long)((((((0xffff00)) - 1) & ((0xffff00
))) ^ ((0xffff00)))) >> (16)) != 0) ? 16 + ((((u_long)(
((((((0xffff00) >> 16)) - 1) & (((0xffff00) >>
16))) ^ (((0xffff00) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xffff00) >> 16) >> 8)) - 1
) & ((((0xffff00) >> 16) >> 8))) ^ ((((0xffff00
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xffff00) >> 16) >> 8) >> 4)) - 1
) & (((((0xffff00) >> 16) >> 8) >> 4)))
^ (((((0xffff00) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff00) >> 16)
>> 8) >> 4) >> 2)) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xffff00) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xffff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff00) >> 16) >> 8))) -
1) & (((((0xffff00) >> 16) >> 8)))) ^ (((((0xffff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00) >> 16) >> 8)) >>
2)) - 1) & ((((((0xffff00) >> 16) >> 8)) >>
2))) ^ ((((((0xffff00) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8)))) - 1) & ((((((0xffff00) >>
16) >> 8))))) ^ ((((((0xffff00) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
) >> 16))) - 1) & ((((0xffff00) >> 16)))) ^ (
(((0xffff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xffff00) >> 16)) >> 4)) - 1) & (((
((0xffff00) >> 16)) >> 4))) ^ (((((0xffff00) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xffff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff00) >> 16)) >> 4) >> 2))) ^ ((
((((0xffff00) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00) >>
16)) >> 4))) - 1) & ((((((0xffff00) >> 16)) >>
4)))) ^ ((((((0xffff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00) >>
16)))) - 1) & (((((0xffff00) >> 16))))) ^ (((((0xffff00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xffff00) >> 16))) >> 2)) - 1) & ((((((
0xffff00) >> 16))) >> 2))) ^ ((((((0xffff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff00) >> 16))))) - 1) & ((((((0xffff00
) >> 16)))))) ^ ((((((0xffff00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xffff00))) - 1) &
(((0xffff00)))) ^ (((0xffff00))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff00)) >> 8)) - 1) & ((((0xffff00
)) >> 8))) ^ ((((0xffff00)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xffff00)) >> 8) >>
4)) - 1) & (((((0xffff00)) >> 8) >> 4))) ^ (
((((0xffff00)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff00)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xffff00)) >> 8) >>
4) >> 2))) ^ ((((((0xffff00)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)) >> 8) >> 4))) - 1) & ((((((0xffff00)) >>
8) >> 4)))) ^ ((((((0xffff00)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00
)) >> 8))) - 1) & (((((0xffff00)) >> 8)))) ^ (
((((0xffff00)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00)) >> 8)) >> 2)) - 1) &
((((((0xffff00)) >> 8)) >> 2))) ^ ((((((0xffff00
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff00)) >> 8)))) - 1) & ((
((((0xffff00)) >> 8))))) ^ ((((((0xffff00)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
)))) - 1) & ((((0xffff00))))) ^ ((((0xffff00)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff00))) >> 4)
) - 1) & (((((0xffff00))) >> 4))) ^ (((((0xffff00))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff00))) >> 4) >> 2)) - 1) & ((((((0xffff00
))) >> 4) >> 2))) ^ ((((((0xffff00))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xffff00))) >> 4))) - 1) & ((((((0xffff00)))
>> 4)))) ^ ((((((0xffff00))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00))))) - 1) &
(((((0xffff00)))))) ^ (((((0xffff00))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff00)))) >> 2)) - 1) &
((((((0xffff00)))) >> 2))) ^ ((((((0xffff00)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)))))) - 1) & ((((((0xffff00))))))) ^ ((((((0xffff00)))))
))) >> (1)) != 0) ? 1 : 0))))))
;
1104 ATW_WRITE(sc, ATW_CFPP, cfpp)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xD8)), ((cfpp
))))
;
1105}
1106
1107void
1108atw_tofs0_init(struct atw_softc *sc)
1109{
1110 /* XXX I guess that the Cardbus clock is 22MHz?
1111 * I am assuming that the role of ATW_TOFS0_USCNT is
1112 * to divide the bus clock to get a 1MHz clock---the datasheet is not
1113 * very clear on this point. It says in the datasheet that it is
1114 * possible for the ADM8211 to accommodate bus speeds between 22MHz
1115 * and 33MHz; maybe this is the way? I see a binary-only driver write
1116 * these values. These values are also the power-on default.
1117 */
1118 ATW_WRITE(sc, ATW_TOFS0,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xDC)), (((
(22) << ((((u_long)((((((0x3f000000)) - 1) & ((0x3f000000
))) ^ ((0x3f000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0x3f000000) >> 16)) - 1) & (((0x3f000000) >>
16))) ^ (((0x3f000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0x3f000000) >> 16) >> 8))
- 1) & ((((0x3f000000) >> 16) >> 8))) ^ ((((
0x3f000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x3f000000) >> 16) >> 8)
>> 4)) - 1) & (((((0x3f000000) >> 16) >>
8) >> 4))) ^ (((((0x3f000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0x3f000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0x3f000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0x3f000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0x3f000000) >> 16) >> 8) >>
4))) - 1) & ((((((0x3f000000) >> 16) >> 8) >>
4)))) ^ ((((((0x3f000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000000
) >> 16) >> 8))) - 1) & (((((0x3f000000) >>
16) >> 8)))) ^ (((((0x3f000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x3f000000
) >> 16) >> 8)) >> 2))) ^ ((((((0x3f000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x3f000000) >> 16) >>
8)))) - 1) & ((((((0x3f000000) >> 16) >> 8))
))) ^ ((((((0x3f000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3f000000) >>
16))) - 1) & ((((0x3f000000) >> 16)))) ^ ((((0x3f000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0x3f000000) >> 16)) >> 4)) - 1) & (((((0x3f000000
) >> 16)) >> 4))) ^ (((((0x3f000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x3f000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x3f000000) >> 16)) >> 4) >> 2))) ^ (
(((((0x3f000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000) >>
16)) >> 4))) - 1) & ((((((0x3f000000) >> 16)
) >> 4)))) ^ ((((((0x3f000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000000
) >> 16)))) - 1) & (((((0x3f000000) >> 16))))
) ^ (((((0x3f000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0x3f000000) >> 16))) >> 2
)) - 1) & ((((((0x3f000000) >> 16))) >> 2))) ^
((((((0x3f000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000) >> 16
))))) - 1) & ((((((0x3f000000) >> 16)))))) ^ ((((((
0x3f000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0x3f000000))) - 1) & (((0x3f000000)
))) ^ (((0x3f000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x3f000000)) >> 8)) - 1) & ((((0x3f000000)
) >> 8))) ^ ((((0x3f000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0x3f000000)) >> 8) >>
4)) - 1) & (((((0x3f000000)) >> 8) >> 4))) ^
(((((0x3f000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x3f000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0x3f000000)) >> 8) >>
4) >> 2))) ^ ((((((0x3f000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0x3f000000)) >> 8) >> 4))) - 1) & (((
(((0x3f000000)) >> 8) >> 4)))) ^ ((((((0x3f000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0x3f000000)) >> 8))) - 1) & ((
(((0x3f000000)) >> 8)))) ^ (((((0x3f000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
)) >> 8)) >> 2)) - 1) & ((((((0x3f000000)) >>
8)) >> 2))) ^ ((((((0x3f000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000
)) >> 8)))) - 1) & ((((((0x3f000000)) >> 8)))
)) ^ ((((((0x3f000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0x3f000000)))) - 1) & ((((
0x3f000000))))) ^ ((((0x3f000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x3f000000))) >> 4)) - 1) & (
((((0x3f000000))) >> 4))) ^ (((((0x3f000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
))) >> 4) >> 2)) - 1) & ((((((0x3f000000))) >>
4) >> 2))) ^ ((((((0x3f000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000
))) >> 4))) - 1) & ((((((0x3f000000))) >> 4))
)) ^ ((((((0x3f000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x3f000000))))) - 1) & (((
((0x3f000000)))))) ^ (((((0x3f000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x3f000000)))) >> 2)) - 1)
& ((((((0x3f000000)))) >> 2))) ^ ((((((0x3f000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x3f000000)))))) - 1) & ((((((0x3f000000)))))))
^ ((((((0x3f000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| 0x3ff))))
1119 LSHIFT(22, ATW_TOFS0_USCNT_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xDC)), (((
(22) << ((((u_long)((((((0x3f000000)) - 1) & ((0x3f000000
))) ^ ((0x3f000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0x3f000000) >> 16)) - 1) & (((0x3f000000) >>
16))) ^ (((0x3f000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0x3f000000) >> 16) >> 8))
- 1) & ((((0x3f000000) >> 16) >> 8))) ^ ((((
0x3f000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x3f000000) >> 16) >> 8)
>> 4)) - 1) & (((((0x3f000000) >> 16) >>
8) >> 4))) ^ (((((0x3f000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0x3f000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0x3f000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0x3f000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0x3f000000) >> 16) >> 8) >>
4))) - 1) & ((((((0x3f000000) >> 16) >> 8) >>
4)))) ^ ((((((0x3f000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000000
) >> 16) >> 8))) - 1) & (((((0x3f000000) >>
16) >> 8)))) ^ (((((0x3f000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x3f000000
) >> 16) >> 8)) >> 2))) ^ ((((((0x3f000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x3f000000) >> 16) >>
8)))) - 1) & ((((((0x3f000000) >> 16) >> 8))
))) ^ ((((((0x3f000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3f000000) >>
16))) - 1) & ((((0x3f000000) >> 16)))) ^ ((((0x3f000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0x3f000000) >> 16)) >> 4)) - 1) & (((((0x3f000000
) >> 16)) >> 4))) ^ (((((0x3f000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x3f000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x3f000000) >> 16)) >> 4) >> 2))) ^ (
(((((0x3f000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000) >>
16)) >> 4))) - 1) & ((((((0x3f000000) >> 16)
) >> 4)))) ^ ((((((0x3f000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000000
) >> 16)))) - 1) & (((((0x3f000000) >> 16))))
) ^ (((((0x3f000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0x3f000000) >> 16))) >> 2
)) - 1) & ((((((0x3f000000) >> 16))) >> 2))) ^
((((((0x3f000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000) >> 16
))))) - 1) & ((((((0x3f000000) >> 16)))))) ^ ((((((
0x3f000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0x3f000000))) - 1) & (((0x3f000000)
))) ^ (((0x3f000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x3f000000)) >> 8)) - 1) & ((((0x3f000000)
) >> 8))) ^ ((((0x3f000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0x3f000000)) >> 8) >>
4)) - 1) & (((((0x3f000000)) >> 8) >> 4))) ^
(((((0x3f000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x3f000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0x3f000000)) >> 8) >>
4) >> 2))) ^ ((((((0x3f000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0x3f000000)) >> 8) >> 4))) - 1) & (((
(((0x3f000000)) >> 8) >> 4)))) ^ ((((((0x3f000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0x3f000000)) >> 8))) - 1) & ((
(((0x3f000000)) >> 8)))) ^ (((((0x3f000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
)) >> 8)) >> 2)) - 1) & ((((((0x3f000000)) >>
8)) >> 2))) ^ ((((((0x3f000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000
)) >> 8)))) - 1) & ((((((0x3f000000)) >> 8)))
)) ^ ((((((0x3f000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0x3f000000)))) - 1) & ((((
0x3f000000))))) ^ ((((0x3f000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x3f000000))) >> 4)) - 1) & (
((((0x3f000000))) >> 4))) ^ (((((0x3f000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
))) >> 4) >> 2)) - 1) & ((((((0x3f000000))) >>
4) >> 2))) ^ ((((((0x3f000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000
))) >> 4))) - 1) & ((((((0x3f000000))) >> 4))
)) ^ ((((((0x3f000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x3f000000))))) - 1) & (((
((0x3f000000)))))) ^ (((((0x3f000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x3f000000)))) >> 2)) - 1)
& ((((((0x3f000000)))) >> 2))) ^ ((((((0x3f000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x3f000000)))))) - 1) & ((((((0x3f000000)))))))
^ ((((((0x3f000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| 0x3ff))))
1120 ATW_TOFS0_TUCNT_MASK /* set all bits in TUCNT */)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xDC)), (((
(22) << ((((u_long)((((((0x3f000000)) - 1) & ((0x3f000000
))) ^ ((0x3f000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0x3f000000) >> 16)) - 1) & (((0x3f000000) >>
16))) ^ (((0x3f000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0x3f000000) >> 16) >> 8))
- 1) & ((((0x3f000000) >> 16) >> 8))) ^ ((((
0x3f000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x3f000000) >> 16) >> 8)
>> 4)) - 1) & (((((0x3f000000) >> 16) >>
8) >> 4))) ^ (((((0x3f000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0x3f000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0x3f000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0x3f000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0x3f000000) >> 16) >> 8) >>
4))) - 1) & ((((((0x3f000000) >> 16) >> 8) >>
4)))) ^ ((((((0x3f000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000000
) >> 16) >> 8))) - 1) & (((((0x3f000000) >>
16) >> 8)))) ^ (((((0x3f000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x3f000000
) >> 16) >> 8)) >> 2))) ^ ((((((0x3f000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x3f000000) >> 16) >>
8)))) - 1) & ((((((0x3f000000) >> 16) >> 8))
))) ^ ((((((0x3f000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3f000000) >>
16))) - 1) & ((((0x3f000000) >> 16)))) ^ ((((0x3f000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0x3f000000) >> 16)) >> 4)) - 1) & (((((0x3f000000
) >> 16)) >> 4))) ^ (((((0x3f000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x3f000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x3f000000) >> 16)) >> 4) >> 2))) ^ (
(((((0x3f000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000) >>
16)) >> 4))) - 1) & ((((((0x3f000000) >> 16)
) >> 4)))) ^ ((((((0x3f000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000000
) >> 16)))) - 1) & (((((0x3f000000) >> 16))))
) ^ (((((0x3f000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0x3f000000) >> 16))) >> 2
)) - 1) & ((((((0x3f000000) >> 16))) >> 2))) ^
((((((0x3f000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000) >> 16
))))) - 1) & ((((((0x3f000000) >> 16)))))) ^ ((((((
0x3f000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0x3f000000))) - 1) & (((0x3f000000)
))) ^ (((0x3f000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x3f000000)) >> 8)) - 1) & ((((0x3f000000)
) >> 8))) ^ ((((0x3f000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0x3f000000)) >> 8) >>
4)) - 1) & (((((0x3f000000)) >> 8) >> 4))) ^
(((((0x3f000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x3f000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0x3f000000)) >> 8) >>
4) >> 2))) ^ ((((((0x3f000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0x3f000000)) >> 8) >> 4))) - 1) & (((
(((0x3f000000)) >> 8) >> 4)))) ^ ((((((0x3f000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0x3f000000)) >> 8))) - 1) & ((
(((0x3f000000)) >> 8)))) ^ (((((0x3f000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
)) >> 8)) >> 2)) - 1) & ((((((0x3f000000)) >>
8)) >> 2))) ^ ((((((0x3f000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000
)) >> 8)))) - 1) & ((((((0x3f000000)) >> 8)))
)) ^ ((((((0x3f000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0x3f000000)))) - 1) & ((((
0x3f000000))))) ^ ((((0x3f000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x3f000000))) >> 4)) - 1) & (
((((0x3f000000))) >> 4))) ^ (((((0x3f000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000000
))) >> 4) >> 2)) - 1) & ((((((0x3f000000))) >>
4) >> 2))) ^ ((((((0x3f000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000000
))) >> 4))) - 1) & ((((((0x3f000000))) >> 4))
)) ^ ((((((0x3f000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x3f000000))))) - 1) & (((
((0x3f000000)))))) ^ (((((0x3f000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x3f000000)))) >> 2)) - 1)
& ((((((0x3f000000)))) >> 2))) ^ ((((((0x3f000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x3f000000)))))) - 1) & ((((((0x3f000000)))))))
^ ((((((0x3f000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| 0x3ff))))
;
1121}
1122
1123/* Initialize interframe spacing: 802.11b slot time, SIFS, DIFS, EIFS. */
1124void
1125atw_ifs_init(struct atw_softc *sc)
1126{
1127 uint32_t ifst;
1128 /* XXX EIFS=0x64, SIFS=110 are used by the reference driver.
1129 * Go figure.
1130 */
1131 ifst = LSHIFT(IEEE80211_DUR_DS_SLOT, ATW_IFST_SLOT_MASK)((20) << ((((u_long)((((((0xf800000)) - 1) & ((0xf800000
))) ^ ((0xf800000)))) >> (16)) != 0) ? 16 + ((((u_long)
(((((((0xf800000) >> 16)) - 1) & (((0xf800000) >>
16))) ^ (((0xf800000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xf800000) >> 16) >> 8)) - 1
) & ((((0xf800000) >> 16) >> 8))) ^ ((((0xf800000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf800000) >> 16) >> 8) >> 4)) - 1
) & (((((0xf800000) >> 16) >> 8) >> 4))
) ^ (((((0xf800000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf800000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xf800000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xf800000) >> 16) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf800000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xf800000
) >> 16) >> 8) >> 4)))) ^ ((((((0xf800000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xf800000) >> 16) >> 8)))
- 1) & (((((0xf800000) >> 16) >> 8)))) ^ (((
((0xf800000) >> 16) >> 8))))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xf800000) >> 16) >> 8
)) >> 2)) - 1) & ((((((0xf800000) >> 16) >>
8)) >> 2))) ^ ((((((0xf800000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xf800000) >> 16) >> 8)))) - 1) & ((
((((0xf800000) >> 16) >> 8))))) ^ ((((((0xf800000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xf800000) >> 16))) - 1) & (
(((0xf800000) >> 16)))) ^ ((((0xf800000) >> 16)))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf800000) >>
16)) >> 4)) - 1) & (((((0xf800000) >> 16)) >>
4))) ^ (((((0xf800000) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf800000) >> 16
)) >> 4) >> 2)) - 1) & ((((((0xf800000) >>
16)) >> 4) >> 2))) ^ ((((((0xf800000) >> 16
)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xf800000) >> 16)) >> 4))) - 1
) & ((((((0xf800000) >> 16)) >> 4)))) ^ (((((
(0xf800000) >> 16)) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xf800000) >> 16)))) -
1) & (((((0xf800000) >> 16))))) ^ (((((0xf800000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf800000
) >> 16))) >> 2)) - 1) & ((((((0xf800000) >>
16))) >> 2))) ^ ((((((0xf800000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf800000
) >> 16))))) - 1) & ((((((0xf800000) >> 16)))
))) ^ ((((((0xf800000) >> 16))))))) >> (1)) != 0)
? 1 : 0)))) : ((((u_long)(((((((0xf800000))) - 1) & (((0xf800000
)))) ^ (((0xf800000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xf800000)) >> 8)) - 1) & ((((0xf800000)) >>
8))) ^ ((((0xf800000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xf800000)) >> 8) >> 4)) -
1) & (((((0xf800000)) >> 8) >> 4))) ^ (((((0xf800000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf800000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xf800000)) >> 8) >> 4) >> 2
))) ^ ((((((0xf800000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf800000
)) >> 8) >> 4))) - 1) & ((((((0xf800000)) >>
8) >> 4)))) ^ ((((((0xf800000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf800000
)) >> 8))) - 1) & (((((0xf800000)) >> 8)))) ^
(((((0xf800000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf800000)) >> 8)) >> 2)) - 1
) & ((((((0xf800000)) >> 8)) >> 2))) ^ ((((((
0xf800000)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf800000)) >> 8)))) - 1
) & ((((((0xf800000)) >> 8))))) ^ ((((((0xf800000))
>> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xf800000)))) - 1) & ((((0xf800000))))) ^ ((((0xf800000
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf800000
))) >> 4)) - 1) & (((((0xf800000))) >> 4))) ^
(((((0xf800000))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf800000))) >> 4) >> 2)) - 1
) & ((((((0xf800000))) >> 4) >> 2))) ^ ((((((
0xf800000))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xf800000))) >> 4))) - 1
) & ((((((0xf800000))) >> 4)))) ^ ((((((0xf800000))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xf800000))))) - 1) & (((((0xf800000)))))) ^ (((
((0xf800000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf800000)))) >> 2)) - 1) & ((((((0xf800000)))
) >> 2))) ^ ((((((0xf800000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf800000)))))) -
1) & ((((((0xf800000))))))) ^ ((((((0xf800000)))))))) >>
(1)) != 0) ? 1 : 0))))))
|
1132 LSHIFT(22 * 5 /* IEEE80211_DUR_DS_SIFS */ /* # of 22MHz cycles */,((22 * 5) << ((((u_long)((((((0x7f8000)) - 1) & ((0x7f8000
))) ^ ((0x7f8000)))) >> (16)) != 0) ? 16 + ((((u_long)(
((((((0x7f8000) >> 16)) - 1) & (((0x7f8000) >>
16))) ^ (((0x7f8000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0x7f8000) >> 16) >> 8)) - 1
) & ((((0x7f8000) >> 16) >> 8))) ^ ((((0x7f8000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x7f8000) >> 16) >> 8) >> 4)) - 1
) & (((((0x7f8000) >> 16) >> 8) >> 4)))
^ (((((0x7f8000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x7f8000) >> 16)
>> 8) >> 4) >> 2)) - 1) & ((((((0x7f8000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x7f8000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000
) >> 16) >> 8) >> 4))) - 1) & ((((((0x7f8000
) >> 16) >> 8) >> 4)))) ^ ((((((0x7f8000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x7f8000) >> 16) >> 8))) -
1) & (((((0x7f8000) >> 16) >> 8)))) ^ (((((0x7f8000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x7f8000) >> 16) >> 8)) >>
2)) - 1) & ((((((0x7f8000) >> 16) >> 8)) >>
2))) ^ ((((((0x7f8000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000
) >> 16) >> 8)))) - 1) & ((((((0x7f8000) >>
16) >> 8))))) ^ ((((((0x7f8000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7f8000
) >> 16))) - 1) & ((((0x7f8000) >> 16)))) ^ (
(((0x7f8000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x7f8000) >> 16)) >> 4)) - 1) & (((
((0x7f8000) >> 16)) >> 4))) ^ (((((0x7f8000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x7f8000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x7f8000) >> 16)) >> 4) >> 2))) ^ ((
((((0x7f8000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000) >>
16)) >> 4))) - 1) & ((((((0x7f8000) >> 16)) >>
4)))) ^ ((((((0x7f8000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7f8000) >>
16)))) - 1) & (((((0x7f8000) >> 16))))) ^ (((((0x7f8000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x7f8000) >> 16))) >> 2)) - 1) & ((((((
0x7f8000) >> 16))) >> 2))) ^ ((((((0x7f8000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x7f8000) >> 16))))) - 1) & ((((((0x7f8000
) >> 16)))))) ^ ((((((0x7f8000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x7f8000))) - 1) &
(((0x7f8000)))) ^ (((0x7f8000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0x7f8000)) >> 8)) - 1) & ((((0x7f8000
)) >> 8))) ^ ((((0x7f8000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x7f8000)) >> 8) >>
4)) - 1) & (((((0x7f8000)) >> 8) >> 4))) ^ (
((((0x7f8000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x7f8000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0x7f8000)) >> 8) >>
4) >> 2))) ^ ((((((0x7f8000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000
)) >> 8) >> 4))) - 1) & ((((((0x7f8000)) >>
8) >> 4)))) ^ ((((((0x7f8000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7f8000
)) >> 8))) - 1) & (((((0x7f8000)) >> 8)))) ^ (
((((0x7f8000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x7f8000)) >> 8)) >> 2)) - 1) &
((((((0x7f8000)) >> 8)) >> 2))) ^ ((((((0x7f8000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x7f8000)) >> 8)))) - 1) & ((
((((0x7f8000)) >> 8))))) ^ ((((((0x7f8000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7f8000
)))) - 1) & ((((0x7f8000))))) ^ ((((0x7f8000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x7f8000))) >> 4)
) - 1) & (((((0x7f8000))) >> 4))) ^ (((((0x7f8000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x7f8000))) >> 4) >> 2)) - 1) & ((((((0x7f8000
))) >> 4) >> 2))) ^ ((((((0x7f8000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x7f8000))) >> 4))) - 1) & ((((((0x7f8000)))
>> 4)))) ^ ((((((0x7f8000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7f8000))))) - 1) &
(((((0x7f8000)))))) ^ (((((0x7f8000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x7f8000)))) >> 2)) - 1) &
((((((0x7f8000)))) >> 2))) ^ ((((((0x7f8000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000
)))))) - 1) & ((((((0x7f8000))))))) ^ ((((((0x7f8000)))))
))) >> (1)) != 0) ? 1 : 0))))))
1133 ATW_IFST_SIFS_MASK)((22 * 5) << ((((u_long)((((((0x7f8000)) - 1) & ((0x7f8000
))) ^ ((0x7f8000)))) >> (16)) != 0) ? 16 + ((((u_long)(
((((((0x7f8000) >> 16)) - 1) & (((0x7f8000) >>
16))) ^ (((0x7f8000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0x7f8000) >> 16) >> 8)) - 1
) & ((((0x7f8000) >> 16) >> 8))) ^ ((((0x7f8000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x7f8000) >> 16) >> 8) >> 4)) - 1
) & (((((0x7f8000) >> 16) >> 8) >> 4)))
^ (((((0x7f8000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x7f8000) >> 16)
>> 8) >> 4) >> 2)) - 1) & ((((((0x7f8000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x7f8000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000
) >> 16) >> 8) >> 4))) - 1) & ((((((0x7f8000
) >> 16) >> 8) >> 4)))) ^ ((((((0x7f8000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x7f8000) >> 16) >> 8))) -
1) & (((((0x7f8000) >> 16) >> 8)))) ^ (((((0x7f8000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x7f8000) >> 16) >> 8)) >>
2)) - 1) & ((((((0x7f8000) >> 16) >> 8)) >>
2))) ^ ((((((0x7f8000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000
) >> 16) >> 8)))) - 1) & ((((((0x7f8000) >>
16) >> 8))))) ^ ((((((0x7f8000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7f8000
) >> 16))) - 1) & ((((0x7f8000) >> 16)))) ^ (
(((0x7f8000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x7f8000) >> 16)) >> 4)) - 1) & (((
((0x7f8000) >> 16)) >> 4))) ^ (((((0x7f8000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x7f8000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x7f8000) >> 16)) >> 4) >> 2))) ^ ((
((((0x7f8000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000) >>
16)) >> 4))) - 1) & ((((((0x7f8000) >> 16)) >>
4)))) ^ ((((((0x7f8000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7f8000) >>
16)))) - 1) & (((((0x7f8000) >> 16))))) ^ (((((0x7f8000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x7f8000) >> 16))) >> 2)) - 1) & ((((((
0x7f8000) >> 16))) >> 2))) ^ ((((((0x7f8000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x7f8000) >> 16))))) - 1) & ((((((0x7f8000
) >> 16)))))) ^ ((((((0x7f8000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x7f8000))) - 1) &
(((0x7f8000)))) ^ (((0x7f8000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0x7f8000)) >> 8)) - 1) & ((((0x7f8000
)) >> 8))) ^ ((((0x7f8000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x7f8000)) >> 8) >>
4)) - 1) & (((((0x7f8000)) >> 8) >> 4))) ^ (
((((0x7f8000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x7f8000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0x7f8000)) >> 8) >>
4) >> 2))) ^ ((((((0x7f8000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000
)) >> 8) >> 4))) - 1) & ((((((0x7f8000)) >>
8) >> 4)))) ^ ((((((0x7f8000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7f8000
)) >> 8))) - 1) & (((((0x7f8000)) >> 8)))) ^ (
((((0x7f8000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x7f8000)) >> 8)) >> 2)) - 1) &
((((((0x7f8000)) >> 8)) >> 2))) ^ ((((((0x7f8000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x7f8000)) >> 8)))) - 1) & ((
((((0x7f8000)) >> 8))))) ^ ((((((0x7f8000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x7f8000
)))) - 1) & ((((0x7f8000))))) ^ ((((0x7f8000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x7f8000))) >> 4)
) - 1) & (((((0x7f8000))) >> 4))) ^ (((((0x7f8000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x7f8000))) >> 4) >> 2)) - 1) & ((((((0x7f8000
))) >> 4) >> 2))) ^ ((((((0x7f8000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x7f8000))) >> 4))) - 1) & ((((((0x7f8000)))
>> 4)))) ^ ((((((0x7f8000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7f8000))))) - 1) &
(((((0x7f8000)))))) ^ (((((0x7f8000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x7f8000)))) >> 2)) - 1) &
((((((0x7f8000)))) >> 2))) ^ ((((((0x7f8000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7f8000
)))))) - 1) & ((((((0x7f8000))))))) ^ ((((((0x7f8000)))))
))) >> (1)) != 0) ? 1 : 0))))))
|
1134 LSHIFT(IEEE80211_DUR_DS_DIFS, ATW_IFST_DIFS_MASK)(((10 + 2 * 20)) << ((((u_long)((((((0x7e00)) - 1) &
((0x7e00))) ^ ((0x7e00)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0x7e00) >> 16)) - 1) & (((0x7e00) >> 16
))) ^ (((0x7e00) >> 16)))) >> (8)) != 0) ? 8 + ((
((u_long)((((((((0x7e00) >> 16) >> 8)) - 1) &
((((0x7e00) >> 16) >> 8))) ^ ((((0x7e00) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0x7e00) >> 16) >> 8) >> 4)) - 1) &
(((((0x7e00) >> 16) >> 8) >> 4))) ^ (((((0x7e00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x7e00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0x7e00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0x7e00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x7e00) >> 16) >> 8) >>
4))) - 1) & ((((((0x7e00) >> 16) >> 8) >>
4)))) ^ ((((((0x7e00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7e00
) >> 16) >> 8))) - 1) & (((((0x7e00) >>
16) >> 8)))) ^ (((((0x7e00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x7e00) >>
16) >> 8)) >> 2)) - 1) & ((((((0x7e00) >>
16) >> 8)) >> 2))) ^ ((((((0x7e00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x7e00) >> 16) >> 8)))) - 1) & (((
(((0x7e00) >> 16) >> 8))))) ^ ((((((0x7e00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x7e00) >> 16))) - 1) & ((((0x7e00) >>
16)))) ^ ((((0x7e00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x7e00) >> 16)) >> 4)) - 1
) & (((((0x7e00) >> 16)) >> 4))) ^ (((((0x7e00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x7e00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0x7e00) >> 16)) >> 4) >>
2))) ^ ((((((0x7e00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7e00)
>> 16)) >> 4))) - 1) & ((((((0x7e00) >>
16)) >> 4)))) ^ ((((((0x7e00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x7e00
) >> 16)))) - 1) & (((((0x7e00) >> 16))))) ^ (
((((0x7e00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x7e00) >> 16))) >> 2)) - 1) & (((
(((0x7e00) >> 16))) >> 2))) ^ ((((((0x7e00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x7e00) >> 16))))) - 1) & ((((((0x7e00) >>
16)))))) ^ ((((((0x7e00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0x7e00))) - 1) & (((0x7e00
)))) ^ (((0x7e00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0x7e00)) >> 8)) - 1) & ((((0x7e00)) >> 8
))) ^ ((((0x7e00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0x7e00)) >> 8) >> 4)) - 1) &
(((((0x7e00)) >> 8) >> 4))) ^ (((((0x7e00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x7e00)) >> 8) >> 4) >> 2)) - 1) &
((((((0x7e00)) >> 8) >> 4) >> 2))) ^ (((((
(0x7e00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7e00)) >> 8) >>
4))) - 1) & ((((((0x7e00)) >> 8) >> 4)))) ^ (
(((((0x7e00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0x7e00)) >> 8))) - 1) &
(((((0x7e00)) >> 8)))) ^ (((((0x7e00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0x7e00)) >>
8)) >> 2)) - 1) & ((((((0x7e00)) >> 8)) >>
2))) ^ ((((((0x7e00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7e00)) >> 8
)))) - 1) & ((((((0x7e00)) >> 8))))) ^ ((((((0x7e00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x7e00)))) - 1) & ((((0x7e00))))) ^ ((((0x7e00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x7e00))) >>
4)) - 1) & (((((0x7e00))) >> 4))) ^ (((((0x7e00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0x7e00))) >> 4) >> 2)) - 1) & ((((((0x7e00)
)) >> 4) >> 2))) ^ ((((((0x7e00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7e00
))) >> 4))) - 1) & ((((((0x7e00))) >> 4)))) ^
((((((0x7e00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x7e00))))) - 1) & (((((0x7e00)))
))) ^ (((((0x7e00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x7e00)))) >> 2)) - 1) & ((((((0x7e00)))
) >> 2))) ^ ((((((0x7e00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x7e00)))))) - 1) &
((((((0x7e00))))))) ^ ((((((0x7e00)))))))) >> (1)) != 0
) ? 1 : 0))))))
|
1135 LSHIFT(0x64 /* IEEE80211_DUR_DS_EIFS */, ATW_IFST_EIFS_MASK)((0x64) << ((((u_long)((((((0x1ff)) - 1) & ((0x1ff)
)) ^ ((0x1ff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0x1ff) >> 16)) - 1) & (((0x1ff) >> 16))) ^ (
((0x1ff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x1ff) >> 16) >> 8)) - 1) & ((((0x1ff
) >> 16) >> 8))) ^ ((((0x1ff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x1ff) >>
16) >> 8) >> 4)) - 1) & (((((0x1ff) >>
16) >> 8) >> 4))) ^ (((((0x1ff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x1ff) >> 16) >> 8) >> 4) >> 2))
- 1) & ((((((0x1ff) >> 16) >> 8) >> 4)
>> 2))) ^ ((((((0x1ff) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x1ff) >> 16) >> 8) >> 4))) - 1) &
((((((0x1ff) >> 16) >> 8) >> 4)))) ^ (((((
(0x1ff) >> 16) >> 8) >> 4))))) >> (1)
) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1ff) >> 16) >>
8))) - 1) & (((((0x1ff) >> 16) >> 8)))) ^ ((
(((0x1ff) >> 16) >> 8))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0x1ff) >> 16) >> 8)) >>
2)) - 1) & ((((((0x1ff) >> 16) >> 8)) >>
2))) ^ ((((((0x1ff) >> 16) >> 8)) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1ff) >>
16) >> 8)))) - 1) & ((((((0x1ff) >> 16) >>
8))))) ^ ((((((0x1ff) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1ff) >> 16
))) - 1) & ((((0x1ff) >> 16)))) ^ ((((0x1ff) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x1ff)
>> 16)) >> 4)) - 1) & (((((0x1ff) >> 16
)) >> 4))) ^ (((((0x1ff) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff) >> 16)) >>
4) >> 2)) - 1) & ((((((0x1ff) >> 16)) >>
4) >> 2))) ^ ((((((0x1ff) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1ff
) >> 16)) >> 4))) - 1) & ((((((0x1ff) >>
16)) >> 4)))) ^ ((((((0x1ff) >> 16)) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1ff
) >> 16)))) - 1) & (((((0x1ff) >> 16))))) ^ (
((((0x1ff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x1ff) >> 16))) >> 2)) - 1) & ((((
((0x1ff) >> 16))) >> 2))) ^ ((((((0x1ff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x1ff) >> 16))))) - 1) & ((((((0x1ff) >>
16)))))) ^ ((((((0x1ff) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0x1ff))) - 1) & (((0x1ff
)))) ^ (((0x1ff))))) >> (8)) != 0) ? 8 + ((((u_long)(((
(((((0x1ff)) >> 8)) - 1) & ((((0x1ff)) >> 8))
) ^ ((((0x1ff)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0x1ff)) >> 8) >> 4)) - 1) & (
((((0x1ff)) >> 8) >> 4))) ^ (((((0x1ff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x1ff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0x1ff)) >> 8) >> 4) >> 2))) ^ ((((((0x1ff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x1ff)) >> 8) >>
4))) - 1) & ((((((0x1ff)) >> 8) >> 4)))) ^ (
(((((0x1ff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x1ff)) >> 8))) - 1) &
(((((0x1ff)) >> 8)))) ^ (((((0x1ff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff)) >> 8)) >>
2)) - 1) & ((((((0x1ff)) >> 8)) >> 2))) ^ ((
((((0x1ff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x1ff)) >> 8)))) - 1) &
((((((0x1ff)) >> 8))))) ^ ((((((0x1ff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1ff)
))) - 1) & ((((0x1ff))))) ^ ((((0x1ff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0x1ff))) >> 4)) - 1) &
(((((0x1ff))) >> 4))) ^ (((((0x1ff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff))) >> 4) >>
2)) - 1) & ((((((0x1ff))) >> 4) >> 2))) ^ ((
((((0x1ff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x1ff))) >> 4))) - 1) &
((((((0x1ff))) >> 4)))) ^ ((((((0x1ff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1ff)
)))) - 1) & (((((0x1ff)))))) ^ (((((0x1ff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff)))) >> 2))
- 1) & ((((((0x1ff)))) >> 2))) ^ ((((((0x1ff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1ff
)))))) - 1) & ((((((0x1ff))))))) ^ ((((((0x1ff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
1136
1137 ATW_WRITE(sc, ATW_IFST, ifst)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xE4)), ((ifst
))))
;
1138}
1139
1140void
1141atw_response_times_init(struct atw_softc *sc)
1142{
1143 /* XXX More magic. Relates to ACK timing? The datasheet seems to
1144 * indicate that the MAC expects at least SIFS + MIRT microseconds
1145 * to pass after it transmits a frame that requires a response;
1146 * it waits at most SIFS + MART microseconds for the response.
1147 * Surely this is not the ACK timeout?
1148 */
1149 ATW_WRITE(sc, ATW_RSPT, LSHIFT(0xffff, ATW_RSPT_MART_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xE8)), (((
(0xffff) << ((((u_long)((((((0xffff0000)) - 1) & ((
0xffff0000))) ^ ((0xffff0000)))) >> (16)) != 0) ? 16 + (
(((u_long)(((((((0xffff0000) >> 16)) - 1) & (((0xffff0000
) >> 16))) ^ (((0xffff0000) >> 16)))) >> (8
)) != 0) ? 8 + ((((u_long)((((((((0xffff0000) >> 16) >>
8)) - 1) & ((((0xffff0000) >> 16) >> 8))) ^ (
(((0xffff0000) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xffff0000) >> 16) >>
8) >> 4)) - 1) & (((((0xffff0000) >> 16) >>
8) >> 4))) ^ (((((0xffff0000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4)))) ^ ((((((0xffff0000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16) >> 8))) - 1) & (((((0xffff0000) >>
16) >> 8)))) ^ (((((0xffff0000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xffff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xffff0000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8)))) - 1) & ((((((0xffff0000) >> 16) >> 8))
))) ^ ((((((0xffff0000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000) >>
16))) - 1) & ((((0xffff0000) >> 16)))) ^ ((((0xffff0000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xffff0000) >> 16)) >> 4)) - 1) & (((((0xffff0000
) >> 16)) >> 4))) ^ (((((0xffff0000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff0000) >> 16)) >> 4) >> 2))) ^ (
(((((0xffff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >>
16)) >> 4))) - 1) & ((((((0xffff0000) >> 16)
) >> 4)))) ^ ((((((0xffff0000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16)))) - 1) & (((((0xffff0000) >> 16))))
) ^ (((((0xffff0000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xffff0000) >> 16))) >> 2
)) - 1) & ((((((0xffff0000) >> 16))) >> 2))) ^
((((((0xffff0000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16
))))) - 1) & ((((((0xffff0000) >> 16)))))) ^ ((((((
0xffff0000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xffff0000))) - 1) & (((0xffff0000)
))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xffff0000)) >> 8)) - 1) & ((((0xffff0000)
) >> 8))) ^ ((((0xffff0000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8) >>
4)) - 1) & (((((0xffff0000)) >> 8) >> 4))) ^
(((((0xffff0000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000)) >> 8) >> 4))) - 1) & (((
(((0xffff0000)) >> 8) >> 4)))) ^ ((((((0xffff0000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xffff0000)) >> 8))) - 1) & ((
(((0xffff0000)) >> 8)))) ^ (((((0xffff0000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
)) >> 8)) >> 2)) - 1) & ((((((0xffff0000)) >>
8)) >> 2))) ^ ((((((0xffff0000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
)) >> 8)))) - 1) & ((((((0xffff0000)) >> 8)))
)) ^ ((((((0xffff0000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1) & ((((
0xffff0000))))) ^ ((((0xffff0000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff0000))) >> 4)) - 1) & (
((((0xffff0000))) >> 4))) ^ (((((0xffff0000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
))) >> 4) >> 2)) - 1) & ((((((0xffff0000))) >>
4) >> 2))) ^ ((((((0xffff0000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
))) >> 4))) - 1) & ((((((0xffff0000))) >> 4))
)) ^ ((((((0xffff0000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xffff0000))))) - 1) & (((
((0xffff0000)))))) ^ (((((0xffff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff0000)))) >> 2)) - 1)
& ((((((0xffff0000)))) >> 2))) ^ ((((((0xffff0000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xffff0000)))))) - 1) & ((((((0xffff0000)))))))
^ ((((((0xffff0000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((0xff) << ((((u_long)((((((0xff00)) - 1) & ((0xff00
))) ^ ((0xff00)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xff00) >> 16)) - 1) & (((0xff00) >> 16))
) ^ (((0xff00) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xff00) >> 16) >> 8)) - 1) & (
(((0xff00) >> 16) >> 8))) ^ ((((0xff00) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff00) >> 16) >> 8) >> 4)) - 1) & ((
(((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
1150 LSHIFT(0xff, ATW_RSPT_MIRT_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xE8)), (((
(0xffff) << ((((u_long)((((((0xffff0000)) - 1) & ((
0xffff0000))) ^ ((0xffff0000)))) >> (16)) != 0) ? 16 + (
(((u_long)(((((((0xffff0000) >> 16)) - 1) & (((0xffff0000
) >> 16))) ^ (((0xffff0000) >> 16)))) >> (8
)) != 0) ? 8 + ((((u_long)((((((((0xffff0000) >> 16) >>
8)) - 1) & ((((0xffff0000) >> 16) >> 8))) ^ (
(((0xffff0000) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xffff0000) >> 16) >>
8) >> 4)) - 1) & (((((0xffff0000) >> 16) >>
8) >> 4))) ^ (((((0xffff0000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4)))) ^ ((((((0xffff0000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16) >> 8))) - 1) & (((((0xffff0000) >>
16) >> 8)))) ^ (((((0xffff0000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xffff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xffff0000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8)))) - 1) & ((((((0xffff0000) >> 16) >> 8))
))) ^ ((((((0xffff0000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000) >>
16))) - 1) & ((((0xffff0000) >> 16)))) ^ ((((0xffff0000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xffff0000) >> 16)) >> 4)) - 1) & (((((0xffff0000
) >> 16)) >> 4))) ^ (((((0xffff0000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff0000) >> 16)) >> 4) >> 2))) ^ (
(((((0xffff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >>
16)) >> 4))) - 1) & ((((((0xffff0000) >> 16)
) >> 4)))) ^ ((((((0xffff0000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16)))) - 1) & (((((0xffff0000) >> 16))))
) ^ (((((0xffff0000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xffff0000) >> 16))) >> 2
)) - 1) & ((((((0xffff0000) >> 16))) >> 2))) ^
((((((0xffff0000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16
))))) - 1) & ((((((0xffff0000) >> 16)))))) ^ ((((((
0xffff0000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xffff0000))) - 1) & (((0xffff0000)
))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xffff0000)) >> 8)) - 1) & ((((0xffff0000)
) >> 8))) ^ ((((0xffff0000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8) >>
4)) - 1) & (((((0xffff0000)) >> 8) >> 4))) ^
(((((0xffff0000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000)) >> 8) >> 4))) - 1) & (((
(((0xffff0000)) >> 8) >> 4)))) ^ ((((((0xffff0000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xffff0000)) >> 8))) - 1) & ((
(((0xffff0000)) >> 8)))) ^ (((((0xffff0000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
)) >> 8)) >> 2)) - 1) & ((((((0xffff0000)) >>
8)) >> 2))) ^ ((((((0xffff0000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
)) >> 8)))) - 1) & ((((((0xffff0000)) >> 8)))
)) ^ ((((((0xffff0000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1) & ((((
0xffff0000))))) ^ ((((0xffff0000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff0000))) >> 4)) - 1) & (
((((0xffff0000))) >> 4))) ^ (((((0xffff0000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
))) >> 4) >> 2)) - 1) & ((((((0xffff0000))) >>
4) >> 2))) ^ ((((((0xffff0000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
))) >> 4))) - 1) & ((((((0xffff0000))) >> 4))
)) ^ ((((((0xffff0000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xffff0000))))) - 1) & (((
((0xffff0000)))))) ^ (((((0xffff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff0000)))) >> 2)) - 1)
& ((((((0xffff0000)))) >> 2))) ^ ((((((0xffff0000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xffff0000)))))) - 1) & ((((((0xffff0000)))))))
^ ((((((0xffff0000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((0xff) << ((((u_long)((((((0xff00)) - 1) & ((0xff00
))) ^ ((0xff00)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xff00) >> 16)) - 1) & (((0xff00) >> 16))
) ^ (((0xff00) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xff00) >> 16) >> 8)) - 1) & (
(((0xff00) >> 16) >> 8))) ^ ((((0xff00) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff00) >> 16) >> 8) >> 4)) - 1) & ((
(((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
;
1151}
1152
1153/* Set up the MMI read/write addresses for the baseband. The Tx/Rx
1154 * engines read and write baseband registers after Rx and before
1155 * Tx, respectively.
1156 */
1157void
1158atw_bbp_io_init(struct atw_softc *sc)
1159{
1160 uint32_t mmiraddr2;
1161
1162 /* XXX The reference driver does this, but is it *really*
1163 * necessary?
1164 */
1165 switch (sc->sc_rev) {
1166 case ATW_REVISION_AB:
1167 case ATW_REVISION_AF:
1168 mmiraddr2 = 0x0;
1169 break;
1170 default:
1171 mmiraddr2 = ATW_READ(sc, ATW_MMIRADDR2)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x74))));
1172 mmiraddr2 &=
1173 ~(ATW_MMIRADDR2_PROREXT(1<<15)|ATW_MMIRADDR2_PRORLEN_MASK0x7fff);
1174 break;
1175 }
1176
1177 switch (sc->sc_bbptype) {
1178 case ATW_BBPTYPE_INTERSIL:
1179 ATW_WRITE(sc, ATW_MMIWADDR, ATW_MMIWADDR_INTERSIL)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x6C)), (((
((0x0c) << ((((u_long)((((((0xff00)) - 1) & ((0xff00
))) ^ ((0xff00)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xff00) >> 16)) - 1) & (((0xff00) >> 16))
) ^ (((0xff00) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xff00) >> 16) >> 8)) - 1) & (
(((0xff00) >> 16) >> 8))) ^ ((((0xff00) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff00) >> 16) >> 8) >> 4)) - 1) & ((
(((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((0x0a) << ((((u_long)((((((0xff)) - 1
) & ((0xff))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((
((u_long)(((((((0xff) >> 16)) - 1) & (((0xff) >>
16))) ^ (((0xff) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xff) >> 16) >> 8)) - 1) & (
(((0xff) >> 16) >> 8))) ^ ((((0xff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >>
16) >> 8) >> 4)) - 1) & (((((0xff) >> 16
) >> 8) >> 4))) ^ (((((0xff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xff) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff
) >> 16) >> 8) >> 4)))) ^ ((((((0xff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff) >> 16) >> 8))) - 1)
& (((((0xff) >> 16) >> 8)))) ^ (((((0xff) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16) >> 8)) >> 2)) - 1) &
((((((0xff) >> 16) >> 8)) >> 2))) ^ ((((((
0xff) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16) >>
8)))) - 1) & ((((((0xff) >> 16) >> 8))))) ^ (
(((((0xff) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff) >> 16))) - 1) &
((((0xff) >> 16)))) ^ ((((0xff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16)) >>
4)) - 1) & (((((0xff) >> 16)) >> 4))) ^ ((((
(0xff) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xff) >> 16)) >> 4) >>
2)) - 1) & ((((((0xff) >> 16)) >> 4) >>
2))) ^ ((((((0xff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
)) >> 4))) - 1) & ((((((0xff) >> 16)) >>
4)))) ^ ((((((0xff) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >> 16))
)) - 1) & (((((0xff) >> 16))))) ^ (((((0xff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff
) >> 16))) >> 2)) - 1) & ((((((0xff) >>
16))) >> 2))) ^ ((((((0xff) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)
>> 16))))) - 1) & ((((((0xff) >> 16)))))) ^ (
(((((0xff) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0xff))) - 1) & (((0xff)))) ^ (((0xff
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff)) >>
8)) - 1) & ((((0xff)) >> 8))) ^ ((((0xff)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff)) >>
8) >> 4)) - 1) & (((((0xff)) >> 8) >> 4
))) ^ (((((0xff)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff)) >> 8) >> 4)
>> 2)) - 1) & ((((((0xff)) >> 8) >> 4)
>> 2))) ^ ((((((0xff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)) >> 8) >> 4))) - 1) & ((((((0xff)) >>
8) >> 4)))) ^ ((((((0xff)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff)) >>
8))) - 1) & (((((0xff)) >> 8)))) ^ (((((0xff)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))
>> 8)) >> 2)) - 1) & ((((((0xff)) >> 8
)) >> 2))) ^ ((((((0xff)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8
)))) - 1) & ((((((0xff)) >> 8))))) ^ ((((((0xff)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff)))) - 1) & ((((0xff))))) ^ ((((0xff)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1)
& (((((0xff))) >> 4))) ^ (((((0xff))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >>
4) >> 2)) - 1) & ((((((0xff))) >> 4) >>
2))) ^ ((((((0xff))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))) >> 4)))
- 1) & ((((((0xff))) >> 4)))) ^ ((((((0xff))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff
))))) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1
) & ((((((0xff)))) >> 2))) ^ ((((((0xff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)))))) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | ((0x0e) << ((((u_long)(((((
(0xff0000)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff0000) >> 16))
- 1) & (((0xff0000) >> 16))) ^ (((0xff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff0000
) >> 16) >> 8)) - 1) & ((((0xff0000) >>
16) >> 8))) ^ ((((0xff0000) >> 16) >> 8)))
) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000) >>
16) >> 8) >> 4)) - 1) & (((((0xff0000) >>
16) >> 8) >> 4))) ^ (((((0xff0000) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff0000) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff0000) >> 16) >> 8) >> 4))) - 1
) & ((((((0xff0000) >> 16) >> 8) >> 4))
)) ^ ((((((0xff0000) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
) >> 16) >> 8))) - 1) & (((((0xff0000) >>
16) >> 8)))) ^ (((((0xff0000) >> 16) >> 8)
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16) >> 8)) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff0000) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16) >> 8))))
- 1) & ((((((0xff0000) >> 16) >> 8))))) ^ ((
((((0xff0000) >> 16) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000) >> 16))) - 1
) & ((((0xff0000) >> 16)))) ^ ((((0xff0000) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000
) >> 16)) >> 4)) - 1) & (((((0xff0000) >>
16)) >> 4))) ^ (((((0xff0000) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16)) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff0000) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16)) >> 4)))
- 1) & ((((((0xff0000) >> 16)) >> 4)))) ^ ((
((((0xff0000) >> 16)) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >> 16)))) -
1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000
) >> 16))) >> 2)) - 1) & ((((((0xff0000) >>
16))) >> 2))) ^ ((((((0xff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16))))) - 1) & ((((((0xff0000) >> 16))))
)) ^ ((((((0xff0000) >> 16))))))) >> (1)) != 0) ?
1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) & (((0xff0000
)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 + ((((u_long)
((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000)) >>
8))) ^ ((((0xff0000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000)) >> 8) >> 4)) - 1
) & (((((0xff0000)) >> 8) >> 4))) ^ (((((0xff0000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff0000)) >> 8) >> 4) >> 2)) - 1
) & ((((((0xff0000)) >> 8) >> 4) >> 2))
) ^ ((((((0xff0000)) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000)) >>
8) >> 4))) - 1) & ((((((0xff0000)) >> 8) >>
4)))) ^ ((((((0xff0000)) >> 8) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000)) >>
8))) - 1) & (((((0xff0000)) >> 8)))) ^ (((((0xff0000
)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000)) >> 8)) >> 2)) - 1) & ((((((0xff0000
)) >> 8)) >> 2))) ^ ((((((0xff0000)) >> 8))
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000)) >> 8)))) - 1) & ((((((0xff0000)) >>
8))))) ^ ((((((0xff0000)) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000)))) - 1) & (((
(0xff0000))))) ^ ((((0xff0000)))))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xff0000))) >> 4)) - 1) & ((((
(0xff0000))) >> 4))) ^ (((((0xff0000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000))) >> 4
) >> 2)) - 1) & ((((((0xff0000))) >> 4) >>
2))) ^ ((((((0xff0000))) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000))) >>
4))) - 1) & ((((((0xff0000))) >> 4)))) ^ ((((((0xff0000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff0000))))) - 1) & (((((0xff0000)))))) ^ ((((
(0xff0000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000)))) >> 2)) - 1) & ((((((0xff0000)))) >>
2))) ^ ((((((0xff0000)))) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff0000)))))) - 1) & ((
((((0xff0000))))))) ^ ((((((0xff0000)))))))) >> (1)) !=
0) ? 1 : 0)))))) | ((0x10) << ((((u_long)((((((0xff000000
)) - 1) & ((0xff000000))) ^ ((0xff000000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xff000000) >> 16)) -
1) & (((0xff000000) >> 16))) ^ (((0xff000000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000
) >> 16) >> 8)) - 1) & ((((0xff000000) >>
16) >> 8))) ^ ((((0xff000000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)
>> 16) >> 8) >> 4)) - 1) & (((((0xff000000
) >> 16) >> 8) >> 4))) ^ (((((0xff000000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xff000000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8) >> 4))) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4)))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff000000) >> 16) >> 8))) - 1) & ((
(((0xff000000) >> 16) >> 8)))) ^ (((((0xff000000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xff000000) >> 16) >> 8)) >>
2))) ^ ((((((0xff000000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8)))) - 1) & ((((((0xff000000) >>
16) >> 8))))) ^ ((((((0xff000000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff000000) >> 16))) - 1) & ((((0xff000000) >>
16)))) ^ ((((0xff000000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff000000) >> 16)) >>
4)) - 1) & (((((0xff000000) >> 16)) >> 4))) ^
(((((0xff000000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16)) >>
4) >> 2))) ^ ((((((0xff000000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000) >> 16)) >> 4))) - 1) & ((
((((0xff000000) >> 16)) >> 4)))) ^ ((((((0xff000000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xff000000) >> 16)))) - 1) &
(((((0xff000000) >> 16))))) ^ (((((0xff000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16))) >> 2)) - 1) & ((((((0xff000000) >>
16))) >> 2))) ^ ((((((0xff000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16))))) - 1) & ((((((0xff000000) >> 16))
)))) ^ ((((((0xff000000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xff000000))) - 1) & ((
(0xff000000)))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff000000)) >> 8)) - 1) & ((((
0xff000000)) >> 8))) ^ ((((0xff000000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8
) >> 4)) - 1) & (((((0xff000000)) >> 8) >>
4))) ^ (((((0xff000000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xff000000)) >>
8) >> 4) >> 2))) ^ ((((((0xff000000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000)) >> 8) >> 4))) - 1
) & ((((((0xff000000)) >> 8) >> 4)))) ^ (((((
(0xff000000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000)) >> 8))) -
1) & (((((0xff000000)) >> 8)))) ^ (((((0xff000000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff000000)) >> 8)) >> 2)) - 1) & ((((((0xff000000
)) >> 8)) >> 2))) ^ ((((((0xff000000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000)) >> 8)))) - 1) & ((((((0xff000000
)) >> 8))))) ^ ((((((0xff000000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1
) & ((((0xff000000))))) ^ ((((0xff000000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000))) >> 4)
) - 1) & (((((0xff000000))) >> 4))) ^ (((((0xff000000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff000000))) >> 4) >> 2)) - 1) & ((((((
0xff000000))) >> 4) >> 2))) ^ ((((((0xff000000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xff000000))) >> 4))) - 1) & (((
(((0xff000000))) >> 4)))) ^ ((((((0xff000000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
))))) - 1) & (((((0xff000000)))))) ^ (((((0xff000000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)
))) >> 2)) - 1) & ((((((0xff000000)))) >> 2))
) ^ ((((((0xff000000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000)))))) - 1) & ((
((((0xff000000))))))) ^ ((((((0xff000000)))))))) >> (1)
) != 0) ? 1 : 0)))))))))))
;
1180 ATW_WRITE(sc, ATW_MMIRADDR1, ATW_MMIRADDR1_INTERSIL)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x70)), (((
((0x7c) << ((((u_long)((((((0xff00)) - 1) & ((0xff00
))) ^ ((0xff00)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xff00) >> 16)) - 1) & (((0xff00) >> 16))
) ^ (((0xff00) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xff00) >> 16) >> 8)) - 1) & (
(((0xff00) >> 16) >> 8))) ^ ((((0xff00) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff00) >> 16) >> 8) >> 4)) - 1) & ((
(((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((0x7e) << ((((u_long)((((((0xff)) - 1
) & ((0xff))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((
((u_long)(((((((0xff) >> 16)) - 1) & (((0xff) >>
16))) ^ (((0xff) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xff) >> 16) >> 8)) - 1) & (
(((0xff) >> 16) >> 8))) ^ ((((0xff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >>
16) >> 8) >> 4)) - 1) & (((((0xff) >> 16
) >> 8) >> 4))) ^ (((((0xff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xff) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff
) >> 16) >> 8) >> 4)))) ^ ((((((0xff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff) >> 16) >> 8))) - 1)
& (((((0xff) >> 16) >> 8)))) ^ (((((0xff) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16) >> 8)) >> 2)) - 1) &
((((((0xff) >> 16) >> 8)) >> 2))) ^ ((((((
0xff) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16) >>
8)))) - 1) & ((((((0xff) >> 16) >> 8))))) ^ (
(((((0xff) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff) >> 16))) - 1) &
((((0xff) >> 16)))) ^ ((((0xff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16)) >>
4)) - 1) & (((((0xff) >> 16)) >> 4))) ^ ((((
(0xff) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xff) >> 16)) >> 4) >>
2)) - 1) & ((((((0xff) >> 16)) >> 4) >>
2))) ^ ((((((0xff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
)) >> 4))) - 1) & ((((((0xff) >> 16)) >>
4)))) ^ ((((((0xff) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >> 16))
)) - 1) & (((((0xff) >> 16))))) ^ (((((0xff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff
) >> 16))) >> 2)) - 1) & ((((((0xff) >>
16))) >> 2))) ^ ((((((0xff) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)
>> 16))))) - 1) & ((((((0xff) >> 16)))))) ^ (
(((((0xff) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0xff))) - 1) & (((0xff)))) ^ (((0xff
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff)) >>
8)) - 1) & ((((0xff)) >> 8))) ^ ((((0xff)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff)) >>
8) >> 4)) - 1) & (((((0xff)) >> 8) >> 4
))) ^ (((((0xff)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff)) >> 8) >> 4)
>> 2)) - 1) & ((((((0xff)) >> 8) >> 4)
>> 2))) ^ ((((((0xff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)) >> 8) >> 4))) - 1) & ((((((0xff)) >>
8) >> 4)))) ^ ((((((0xff)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff)) >>
8))) - 1) & (((((0xff)) >> 8)))) ^ (((((0xff)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))
>> 8)) >> 2)) - 1) & ((((((0xff)) >> 8
)) >> 2))) ^ ((((((0xff)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8
)))) - 1) & ((((((0xff)) >> 8))))) ^ ((((((0xff)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff)))) - 1) & ((((0xff))))) ^ ((((0xff)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1)
& (((((0xff))) >> 4))) ^ (((((0xff))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >>
4) >> 2)) - 1) & ((((((0xff))) >> 4) >>
2))) ^ ((((((0xff))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))) >> 4)))
- 1) & ((((((0xff))) >> 4)))) ^ ((((((0xff))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff
))))) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1
) & ((((((0xff)))) >> 2))) ^ ((((((0xff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)))))) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))))))))
;
1181 mmiraddr2 |= ATW_MMIRADDR2_INTERSIL(((0x0) << ((((u_long)((((((0xff000000)) - 1) & ((0xff000000
))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff000000) >> 16)) - 1) & (((0xff000000) >>
16))) ^ (((0xff000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff000000) >> 16) >> 8))
- 1) & ((((0xff000000) >> 16) >> 8))) ^ ((((
0xff000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((0x10) << ((((u_long)((((((0xff0000)) - 1) & ((
0xff0000))) ^ ((0xff0000)))) >> (16)) != 0) ? 16 + ((((
u_long)(((((((0xff0000) >> 16)) - 1) & (((0xff0000)
>> 16))) ^ (((0xff0000) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >> 8
)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((((
0xff0000) >> 16) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0)))))))
;
1182 break;
1183 case ATW_BBPTYPE_MARVEL:
1184 /* TBD find out the Marvel settings. */
1185 break;
1186 case ATW_BBPTYPE_RFMD:
1187 default:
1188 ATW_WRITE(sc, ATW_MMIWADDR, ATW_MMIWADDR_RFMD)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x6C)), (((
((0x80|0x11) << ((((u_long)((((((0xff00)) - 1) & ((
0xff00))) ^ ((0xff00)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff00) >> 16)) - 1) & (((0xff00) >> 16
))) ^ (((0xff00) >> 16)))) >> (8)) != 0) ? 8 + ((
((u_long)((((((((0xff00) >> 16) >> 8)) - 1) &
((((0xff00) >> 16) >> 8))) ^ ((((0xff00) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xff00) >> 16) >> 8) >> 4)) - 1) &
(((((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((0x01) << ((((u_long)((((((0xff)) - 1
) & ((0xff))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((
((u_long)(((((((0xff) >> 16)) - 1) & (((0xff) >>
16))) ^ (((0xff) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xff) >> 16) >> 8)) - 1) & (
(((0xff) >> 16) >> 8))) ^ ((((0xff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >>
16) >> 8) >> 4)) - 1) & (((((0xff) >> 16
) >> 8) >> 4))) ^ (((((0xff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xff) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff
) >> 16) >> 8) >> 4)))) ^ ((((((0xff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff) >> 16) >> 8))) - 1)
& (((((0xff) >> 16) >> 8)))) ^ (((((0xff) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16) >> 8)) >> 2)) - 1) &
((((((0xff) >> 16) >> 8)) >> 2))) ^ ((((((
0xff) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16) >>
8)))) - 1) & ((((((0xff) >> 16) >> 8))))) ^ (
(((((0xff) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff) >> 16))) - 1) &
((((0xff) >> 16)))) ^ ((((0xff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16)) >>
4)) - 1) & (((((0xff) >> 16)) >> 4))) ^ ((((
(0xff) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xff) >> 16)) >> 4) >>
2)) - 1) & ((((((0xff) >> 16)) >> 4) >>
2))) ^ ((((((0xff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
)) >> 4))) - 1) & ((((((0xff) >> 16)) >>
4)))) ^ ((((((0xff) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >> 16))
)) - 1) & (((((0xff) >> 16))))) ^ (((((0xff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff
) >> 16))) >> 2)) - 1) & ((((((0xff) >>
16))) >> 2))) ^ ((((((0xff) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)
>> 16))))) - 1) & ((((((0xff) >> 16)))))) ^ (
(((((0xff) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0xff))) - 1) & (((0xff)))) ^ (((0xff
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff)) >>
8)) - 1) & ((((0xff)) >> 8))) ^ ((((0xff)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff)) >>
8) >> 4)) - 1) & (((((0xff)) >> 8) >> 4
))) ^ (((((0xff)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff)) >> 8) >> 4)
>> 2)) - 1) & ((((((0xff)) >> 8) >> 4)
>> 2))) ^ ((((((0xff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)) >> 8) >> 4))) - 1) & ((((((0xff)) >>
8) >> 4)))) ^ ((((((0xff)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff)) >>
8))) - 1) & (((((0xff)) >> 8)))) ^ (((((0xff)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))
>> 8)) >> 2)) - 1) & ((((((0xff)) >> 8
)) >> 2))) ^ ((((((0xff)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8
)))) - 1) & ((((((0xff)) >> 8))))) ^ ((((((0xff)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff)))) - 1) & ((((0xff))))) ^ ((((0xff)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1)
& (((((0xff))) >> 4))) ^ (((((0xff))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >>
4) >> 2)) - 1) & ((((((0xff))) >> 4) >>
2))) ^ ((((((0xff))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))) >> 4)))
- 1) & ((((((0xff))) >> 4)))) ^ ((((((0xff))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff
))))) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1
) & ((((((0xff)))) >> 2))) ^ ((((((0xff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)))))) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))))))))
;
1189 ATW_WRITE(sc, ATW_MMIRADDR1, ATW_MMIRADDR1_RFMD)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x70)), (((
((0x03) << ((((u_long)((((((0xff00)) - 1) & ((0xff00
))) ^ ((0xff00)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xff00) >> 16)) - 1) & (((0xff00) >> 16))
) ^ (((0xff00) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xff00) >> 16) >> 8)) - 1) & (
(((0xff00) >> 16) >> 8))) ^ ((((0xff00) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff00) >> 16) >> 8) >> 4)) - 1) & ((
(((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((0x01) << ((((u_long)((((((0xff)) - 1
) & ((0xff))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((
((u_long)(((((((0xff) >> 16)) - 1) & (((0xff) >>
16))) ^ (((0xff) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xff) >> 16) >> 8)) - 1) & (
(((0xff) >> 16) >> 8))) ^ ((((0xff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >>
16) >> 8) >> 4)) - 1) & (((((0xff) >> 16
) >> 8) >> 4))) ^ (((((0xff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xff) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff
) >> 16) >> 8) >> 4)))) ^ ((((((0xff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff) >> 16) >> 8))) - 1)
& (((((0xff) >> 16) >> 8)))) ^ (((((0xff) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16) >> 8)) >> 2)) - 1) &
((((((0xff) >> 16) >> 8)) >> 2))) ^ ((((((
0xff) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16) >>
8)))) - 1) & ((((((0xff) >> 16) >> 8))))) ^ (
(((((0xff) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff) >> 16))) - 1) &
((((0xff) >> 16)))) ^ ((((0xff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16)) >>
4)) - 1) & (((((0xff) >> 16)) >> 4))) ^ ((((
(0xff) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xff) >> 16)) >> 4) >>
2)) - 1) & ((((((0xff) >> 16)) >> 4) >>
2))) ^ ((((((0xff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
)) >> 4))) - 1) & ((((((0xff) >> 16)) >>
4)))) ^ ((((((0xff) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >> 16))
)) - 1) & (((((0xff) >> 16))))) ^ (((((0xff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff
) >> 16))) >> 2)) - 1) & ((((((0xff) >>
16))) >> 2))) ^ ((((((0xff) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)
>> 16))))) - 1) & ((((((0xff) >> 16)))))) ^ (
(((((0xff) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0xff))) - 1) & (((0xff)))) ^ (((0xff
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff)) >>
8)) - 1) & ((((0xff)) >> 8))) ^ ((((0xff)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff)) >>
8) >> 4)) - 1) & (((((0xff)) >> 8) >> 4
))) ^ (((((0xff)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff)) >> 8) >> 4)
>> 2)) - 1) & ((((((0xff)) >> 8) >> 4)
>> 2))) ^ ((((((0xff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)) >> 8) >> 4))) - 1) & ((((((0xff)) >>
8) >> 4)))) ^ ((((((0xff)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff)) >>
8))) - 1) & (((((0xff)) >> 8)))) ^ (((((0xff)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))
>> 8)) >> 2)) - 1) & ((((((0xff)) >> 8
)) >> 2))) ^ ((((((0xff)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8
)))) - 1) & ((((((0xff)) >> 8))))) ^ ((((((0xff)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff)))) - 1) & ((((0xff))))) ^ ((((0xff)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1)
& (((((0xff))) >> 4))) ^ (((((0xff))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >>
4) >> 2)) - 1) & ((((((0xff))) >> 4) >>
2))) ^ ((((((0xff))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))) >> 4)))
- 1) & ((((((0xff))) >> 4)))) ^ ((((((0xff))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff
))))) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1
) & ((((((0xff)))) >> 2))) ^ ((((((0xff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)))))) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))))))))
;
1190 mmiraddr2 |= ATW_MMIRADDR2_RFMD(((0x7e) << ((((u_long)((((((0xff000000)) - 1) & ((
0xff000000))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + (
(((u_long)(((((((0xff000000) >> 16)) - 1) & (((0xff000000
) >> 16))) ^ (((0xff000000) >> 16)))) >> (8
)) != 0) ? 8 + ((((u_long)((((((((0xff000000) >> 16) >>
8)) - 1) & ((((0xff000000) >> 16) >> 8))) ^ (
(((0xff000000) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff000000) >> 16) >>
8) >> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((0x10) << ((((u_long)((((((0xff0000)) - 1) & ((
0xff0000))) ^ ((0xff0000)))) >> (16)) != 0) ? 16 + ((((
u_long)(((((((0xff0000) >> 16)) - 1) & (((0xff0000)
>> 16))) ^ (((0xff0000) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >> 8
)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((((
0xff0000) >> 16) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0)))))))
;
1191 break;
1192 }
1193 ATW_WRITE(sc, ATW_MMIRADDR2, mmiraddr2)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x74)), ((mmiraddr2
))))
;
1194
1195 atw_si4126_init(sc);
1196
1197 ATW_WRITE(sc, ATW_MACTEST, ATW_MACTEST_MMI_USETXCLK)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xFC)), (((
1<<11)))))
;
1198}
1199
1200void
1201atw_si4126_init(struct atw_softc *sc)
1202{
1203 switch (sc->sc_rftype) {
1204 case ATW_RFTYPE_RFMD:
1205 if (sc->sc_rev >= ATW_REVISION_BA) {
1206 atw_si4126_write(sc, 0x1f, 0x00000);
1207 atw_si4126_write(sc, 0x0c, 0x3001f);
1208 atw_si4126_write(sc, SI4126_GAIN1, 0x29c03);
1209 atw_si4126_write(sc, SI4126_RF1N3, 0x1ff6f);
1210 atw_si4126_write(sc, SI4126_RF2N4, 0x29403);
1211 atw_si4126_write(sc, SI4126_RF2R7, 0x1456f);
1212 atw_si4126_write(sc, 0x09, 0x10050);
1213 atw_si4126_write(sc, SI4126_IFR8, 0x3fff8);
1214 }
1215 break;
1216 default:
1217 break;
1218 }
1219}
1220
1221/*
1222 * atw_init: [ ifnet interface function ]
1223 *
1224 * Initialize the interface. Must be called at splnet().
1225 */
1226int
1227atw_init(struct ifnet *ifp)
1228{
1229 struct atw_softc *sc = ifp->if_softc;
1230 struct ieee80211com *ic = &sc->sc_ic;
1231 struct atw_txsoft *txs;
1232 struct atw_rxsoft *rxs;
1233 int i, error = 0;
1234
1235 if ((error = atw_enable(sc)) != 0)
1236 goto out;
1237
1238 /*
1239 * Cancel any pending I/O. This also resets.
1240 */
1241 atw_stop(ifp, 0);
1242
1243 ic->ic_bss->ni_chan = ic->ic_ibss_chan;
1244 DPRINTF(sc, ("%s: channel %d freq %d flags 0x%04x\n",
1245 __func__, ieee80211_chan2ieee(ic, ic->ic_bss->ni_chan),
1246 ic->ic_bss->ni_chan->ic_freq, ic->ic_bss->ni_chan->ic_flags));
1247
1248 atw_wcsr_init(sc);
1249
1250 atw_cmdr_init(sc);
1251
1252 /* Set data rate for PLCP Signal field, 1Mbps = 10 x 100Kb/s.
1253 *
1254 * XXX Set transmit power for ATIM, RTS, Beacon.
1255 */
1256 ATW_WRITE(sc, ATW_PLCPHD, LSHIFT(10, ATW_PLCPHD_SIGNAL_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x68)), (((
(10) << ((((u_long)((((((0xff000000)) - 1) & ((0xff000000
))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff000000) >> 16)) - 1) & (((0xff000000) >>
16))) ^ (((0xff000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff000000) >> 16) >> 8))
- 1) & ((((0xff000000) >> 16) >> 8))) ^ ((((
0xff000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((0xb0) << ((((u_long)((((((0xff0000)) - 1) & ((
0xff0000))) ^ ((0xff0000)))) >> (16)) != 0) ? 16 + ((((
u_long)(((((((0xff0000) >> 16)) - 1) & (((0xff0000)
>> 16))) ^ (((0xff0000) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >> 8
)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((((
0xff0000) >> 16) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0))))))))))
1257 LSHIFT(0xb0, ATW_PLCPHD_SERVICE_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x68)), (((
(10) << ((((u_long)((((((0xff000000)) - 1) & ((0xff000000
))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff000000) >> 16)) - 1) & (((0xff000000) >>
16))) ^ (((0xff000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff000000) >> 16) >> 8))
- 1) & ((((0xff000000) >> 16) >> 8))) ^ ((((
0xff000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((0xb0) << ((((u_long)((((((0xff0000)) - 1) & ((
0xff0000))) ^ ((0xff0000)))) >> (16)) != 0) ? 16 + ((((
u_long)(((((((0xff0000) >> 16)) - 1) & (((0xff0000)
>> 16))) ^ (((0xff0000) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >> 8
)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((((
0xff0000) >> 16) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0))))))))))
;
1258
1259 atw_tofs2_init(sc);
1260
1261 atw_nar_init(sc);
1262
1263 atw_txlmt_init(sc);
1264
1265 atw_test1_init(sc);
1266
1267 atw_rf_reset(sc);
1268
1269 atw_cfp_init(sc);
1270
1271 atw_tofs0_init(sc);
1272
1273 atw_ifs_init(sc);
1274
1275 /* XXX Fall asleep after one second of inactivity.
1276 * XXX A frame may only dribble in for 65536us.
1277 */
1278 ATW_WRITE(sc, ATW_RMD,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xD4)), (((
(1) << ((((u_long)((((((0xfff0000)) - 1) & ((0xfff0000
))) ^ ((0xfff0000)))) >> (16)) != 0) ? 16 + ((((u_long)
(((((((0xfff0000) >> 16)) - 1) & (((0xfff0000) >>
16))) ^ (((0xfff0000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xfff0000) >> 16) >> 8)) - 1
) & ((((0xfff0000) >> 16) >> 8))) ^ ((((0xfff0000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xfff0000) >> 16) >> 8) >> 4)) - 1
) & (((((0xfff0000) >> 16) >> 8) >> 4))
) ^ (((((0xfff0000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff0000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xfff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xfff0000) >> 16) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xfff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xfff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xfff0000) >> 16) >> 8)))
- 1) & (((((0xfff0000) >> 16) >> 8)))) ^ (((
((0xfff0000) >> 16) >> 8))))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xfff0000) >> 16) >> 8
)) >> 2)) - 1) & ((((((0xfff0000) >> 16) >>
8)) >> 2))) ^ ((((((0xfff0000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xfff0000) >> 16) >> 8)))) - 1) & ((
((((0xfff0000) >> 16) >> 8))))) ^ ((((((0xfff0000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xfff0000) >> 16))) - 1) & (
(((0xfff0000) >> 16)))) ^ ((((0xfff0000) >> 16)))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xfff0000) >>
16)) >> 4)) - 1) & (((((0xfff0000) >> 16)) >>
4))) ^ (((((0xfff0000) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff0000) >> 16
)) >> 4) >> 2)) - 1) & ((((((0xfff0000) >>
16)) >> 4) >> 2))) ^ ((((((0xfff0000) >> 16
)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xfff0000) >> 16)) >> 4))) - 1
) & ((((((0xfff0000) >> 16)) >> 4)))) ^ (((((
(0xfff0000) >> 16)) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xfff0000) >> 16)))) -
1) & (((((0xfff0000) >> 16))))) ^ (((((0xfff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff0000
) >> 16))) >> 2)) - 1) & ((((((0xfff0000) >>
16))) >> 2))) ^ ((((((0xfff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff0000
) >> 16))))) - 1) & ((((((0xfff0000) >> 16)))
))) ^ ((((((0xfff0000) >> 16))))))) >> (1)) != 0)
? 1 : 0)))) : ((((u_long)(((((((0xfff0000))) - 1) & (((0xfff0000
)))) ^ (((0xfff0000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff0000)) >> 8)) - 1) & ((((0xfff0000)) >>
8))) ^ ((((0xfff0000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xfff0000)) >> 8) >> 4)) -
1) & (((((0xfff0000)) >> 8) >> 4))) ^ (((((0xfff0000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xfff0000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xfff0000)) >> 8) >> 4) >> 2
))) ^ ((((((0xfff0000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff0000
)) >> 8) >> 4))) - 1) & ((((((0xfff0000)) >>
8) >> 4)))) ^ ((((((0xfff0000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff0000
)) >> 8))) - 1) & (((((0xfff0000)) >> 8)))) ^
(((((0xfff0000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xfff0000)) >> 8)) >> 2)) - 1
) & ((((((0xfff0000)) >> 8)) >> 2))) ^ ((((((
0xfff0000)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff0000)) >> 8)))) - 1
) & ((((((0xfff0000)) >> 8))))) ^ ((((((0xfff0000))
>> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xfff0000)))) - 1) & ((((0xfff0000))))) ^ ((((0xfff0000
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xfff0000
))) >> 4)) - 1) & (((((0xfff0000))) >> 4))) ^
(((((0xfff0000))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xfff0000))) >> 4) >> 2)) - 1
) & ((((((0xfff0000))) >> 4) >> 2))) ^ ((((((
0xfff0000))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff0000))) >> 4))) - 1
) & ((((((0xfff0000))) >> 4)))) ^ ((((((0xfff0000))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xfff0000))))) - 1) & (((((0xfff0000)))))) ^ (((
((0xfff0000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff0000)))) >> 2)) - 1) & ((((((0xfff0000)))
) >> 2))) ^ ((((((0xfff0000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff0000)))))) -
1) & ((((((0xfff0000))))))) ^ ((((((0xfff0000)))))))) >>
(1)) != 0) ? 1 : 0)))))) | ((0xffff) << ((((u_long)(((
(((0xffff)) - 1) & ((0xffff))) ^ ((0xffff)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xffff) >> 16)) - 1) &
(((0xffff) >> 16))) ^ (((0xffff) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff) >> 16) >>
8)) - 1) & ((((0xffff) >> 16) >> 8))) ^ ((((
0xffff) >> 16) >> 8)))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xffff) >> 16) >> 8) >>
4)) - 1) & (((((0xffff) >> 16) >> 8) >>
4))) ^ (((((0xffff) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8) >> 4) >> 2))) ^ ((((((0xffff) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xffff) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff) >> 16) >>
8) >> 4)))) ^ ((((((0xffff) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16) >> 8))) - 1) & (((((0xffff) >>
16) >> 8)))) ^ (((((0xffff) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8)) >> 2))) ^ ((((((0xffff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16) >> 8)))) - 1) & (((
(((0xffff) >> 16) >> 8))))) ^ ((((((0xffff) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff) >> 16))) - 1) & ((((0xffff) >>
16)))) ^ ((((0xffff) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff) >> 16)) >> 4)) - 1
) & (((((0xffff) >> 16)) >> 4))) ^ (((((0xffff
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xffff) >> 16)) >> 4) >>
2))) ^ ((((((0xffff) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16)) >> 4))) - 1) & ((((((0xffff) >>
16)) >> 4)))) ^ ((((((0xffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16)))) - 1) & (((((0xffff) >> 16))))) ^ (
((((0xffff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff) >> 16))) >> 2)) - 1) & (((
(((0xffff) >> 16))) >> 2))) ^ ((((((0xffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16))))) - 1) & ((((((0xffff) >>
16)))))) ^ ((((((0xffff) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff
)))) ^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8
))) ^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) &
(((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
1279 LSHIFT(1, ATW_RMD_PCNT) | LSHIFT(0xffff, ATW_RMD_RMRD_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xD4)), (((
(1) << ((((u_long)((((((0xfff0000)) - 1) & ((0xfff0000
))) ^ ((0xfff0000)))) >> (16)) != 0) ? 16 + ((((u_long)
(((((((0xfff0000) >> 16)) - 1) & (((0xfff0000) >>
16))) ^ (((0xfff0000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0xfff0000) >> 16) >> 8)) - 1
) & ((((0xfff0000) >> 16) >> 8))) ^ ((((0xfff0000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xfff0000) >> 16) >> 8) >> 4)) - 1
) & (((((0xfff0000) >> 16) >> 8) >> 4))
) ^ (((((0xfff0000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff0000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xfff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xfff0000) >> 16) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xfff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xfff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xfff0000) >> 16) >> 8)))
- 1) & (((((0xfff0000) >> 16) >> 8)))) ^ (((
((0xfff0000) >> 16) >> 8))))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xfff0000) >> 16) >> 8
)) >> 2)) - 1) & ((((((0xfff0000) >> 16) >>
8)) >> 2))) ^ ((((((0xfff0000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xfff0000) >> 16) >> 8)))) - 1) & ((
((((0xfff0000) >> 16) >> 8))))) ^ ((((((0xfff0000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xfff0000) >> 16))) - 1) & (
(((0xfff0000) >> 16)))) ^ ((((0xfff0000) >> 16)))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xfff0000) >>
16)) >> 4)) - 1) & (((((0xfff0000) >> 16)) >>
4))) ^ (((((0xfff0000) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff0000) >> 16
)) >> 4) >> 2)) - 1) & ((((((0xfff0000) >>
16)) >> 4) >> 2))) ^ ((((((0xfff0000) >> 16
)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xfff0000) >> 16)) >> 4))) - 1
) & ((((((0xfff0000) >> 16)) >> 4)))) ^ (((((
(0xfff0000) >> 16)) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xfff0000) >> 16)))) -
1) & (((((0xfff0000) >> 16))))) ^ (((((0xfff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff0000
) >> 16))) >> 2)) - 1) & ((((((0xfff0000) >>
16))) >> 2))) ^ ((((((0xfff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff0000
) >> 16))))) - 1) & ((((((0xfff0000) >> 16)))
))) ^ ((((((0xfff0000) >> 16))))))) >> (1)) != 0)
? 1 : 0)))) : ((((u_long)(((((((0xfff0000))) - 1) & (((0xfff0000
)))) ^ (((0xfff0000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff0000)) >> 8)) - 1) & ((((0xfff0000)) >>
8))) ^ ((((0xfff0000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xfff0000)) >> 8) >> 4)) -
1) & (((((0xfff0000)) >> 8) >> 4))) ^ (((((0xfff0000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xfff0000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xfff0000)) >> 8) >> 4) >> 2
))) ^ ((((((0xfff0000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff0000
)) >> 8) >> 4))) - 1) & ((((((0xfff0000)) >>
8) >> 4)))) ^ ((((((0xfff0000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff0000
)) >> 8))) - 1) & (((((0xfff0000)) >> 8)))) ^
(((((0xfff0000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xfff0000)) >> 8)) >> 2)) - 1
) & ((((((0xfff0000)) >> 8)) >> 2))) ^ ((((((
0xfff0000)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff0000)) >> 8)))) - 1
) & ((((((0xfff0000)) >> 8))))) ^ ((((((0xfff0000))
>> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xfff0000)))) - 1) & ((((0xfff0000))))) ^ ((((0xfff0000
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xfff0000
))) >> 4)) - 1) & (((((0xfff0000))) >> 4))) ^
(((((0xfff0000))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xfff0000))) >> 4) >> 2)) - 1
) & ((((((0xfff0000))) >> 4) >> 2))) ^ ((((((
0xfff0000))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff0000))) >> 4))) - 1
) & ((((((0xfff0000))) >> 4)))) ^ ((((((0xfff0000))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xfff0000))))) - 1) & (((((0xfff0000)))))) ^ (((
((0xfff0000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff0000)))) >> 2)) - 1) & ((((((0xfff0000)))
) >> 2))) ^ ((((((0xfff0000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff0000)))))) -
1) & ((((((0xfff0000))))))) ^ ((((((0xfff0000)))))))) >>
(1)) != 0) ? 1 : 0)))))) | ((0xffff) << ((((u_long)(((
(((0xffff)) - 1) & ((0xffff))) ^ ((0xffff)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xffff) >> 16)) - 1) &
(((0xffff) >> 16))) ^ (((0xffff) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff) >> 16) >>
8)) - 1) & ((((0xffff) >> 16) >> 8))) ^ ((((
0xffff) >> 16) >> 8)))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xffff) >> 16) >> 8) >>
4)) - 1) & (((((0xffff) >> 16) >> 8) >>
4))) ^ (((((0xffff) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8) >> 4) >> 2))) ^ ((((((0xffff) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xffff) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff) >> 16) >>
8) >> 4)))) ^ ((((((0xffff) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16) >> 8))) - 1) & (((((0xffff) >>
16) >> 8)))) ^ (((((0xffff) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8)) >> 2))) ^ ((((((0xffff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16) >> 8)))) - 1) & (((
(((0xffff) >> 16) >> 8))))) ^ ((((((0xffff) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff) >> 16))) - 1) & ((((0xffff) >>
16)))) ^ ((((0xffff) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff) >> 16)) >> 4)) - 1
) & (((((0xffff) >> 16)) >> 4))) ^ (((((0xffff
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xffff) >> 16)) >> 4) >>
2))) ^ ((((((0xffff) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16)) >> 4))) - 1) & ((((((0xffff) >>
16)) >> 4)))) ^ ((((((0xffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16)))) - 1) & (((((0xffff) >> 16))))) ^ (
((((0xffff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff) >> 16))) >> 2)) - 1) & (((
(((0xffff) >> 16))) >> 2))) ^ ((((((0xffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16))))) - 1) & ((((((0xffff) >>
16)))))) ^ ((((((0xffff) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff
)))) ^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8
))) ^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) &
(((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
;
1280
1281 atw_response_times_init(sc);
1282
1283 atw_bbp_io_init(sc);
1284
1285 ATW_WRITE(sc, ATW_STSR, 0xffffffff)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x28)), ((0xffffffff
))))
;
1286
1287 if ((error = atw_rf3000_init(sc)) != 0)
1288 goto out;
1289
1290 ATW_WRITE(sc, ATW_PAR, sc->sc_busmode)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x00)), ((sc
->sc_busmode))))
;
1291 DPRINTF(sc, ("%s: ATW_PAR %08x busmode %08x\n", sc->sc_dev.dv_xname,
1292 ATW_READ(sc, ATW_PAR), sc->sc_busmode));
1293
1294 /*
1295 * Initialize the transmit descriptor ring.
1296 */
1297 memset(sc->sc_txdescs, 0, sizeof(sc->sc_txdescs))__builtin_memset((sc->sc_control_data->acd_txdescs), (0
), (sizeof(sc->sc_control_data->acd_txdescs)))
;
1298 for (i = 0; i < ATW_NTXDESC(64 * 16); i++) {
1299 sc->sc_txdescssc_control_data->acd_txdescs[i].at_ctl = 0;
1300 /* no transmit chaining */
1301 sc->sc_txdescssc_control_data->acd_txdescs[i].at_flags = 0 /* ATW_TXFLAG_TCH */;
1302 sc->sc_txdescssc_control_data->acd_txdescs[i].at_buf2 =
1303 htole32(ATW_CDTXADDR(sc, ATW_NEXTTX(i)))((__uint32_t)(((sc)->sc_cddmamap->dm_segs[0].ds_addr + __builtin_offsetof
(struct atw_control_data, acd_txdescs[((((i + 1) & ((64 *
16) - 1))))]))))
;
1304 }
1305 /* use ring mode */
1306 sc->sc_txdescssc_control_data->acd_txdescs[ATW_NTXDESC(64 * 16) - 1].at_flags |= htole32(ATW_TXFLAG_TER)((__uint32_t)((1<<25)));
1307 ATW_CDTXSYNC(sc, 0, ATW_NTXDESC,do { int __x, __n; __x = (0); __n = ((64 * 16)); if ((__x + __n
) > (64 * 16)) { (*((sc)->sc_dmat)->_dmamap_sync)(((
sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * ((64 * 16) - __x)), ((0x01|0x04))); __n -= ((64
* 16) - __x); __x = 0; } (*((sc)->sc_dmat)->_dmamap_sync
)(((sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * __n), ((0x01|0x04))); } while (0)
1308 BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE)do { int __x, __n; __x = (0); __n = ((64 * 16)); if ((__x + __n
) > (64 * 16)) { (*((sc)->sc_dmat)->_dmamap_sync)(((
sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * ((64 * 16) - __x)), ((0x01|0x04))); __n -= ((64
* 16) - __x); __x = 0; } (*((sc)->sc_dmat)->_dmamap_sync
)(((sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * __n), ((0x01|0x04))); } while (0)
;
1309 sc->sc_txfree = ATW_NTXDESC(64 * 16);
1310 sc->sc_txnext = 0;
1311
1312 /*
1313 * Initialize the transmit job descriptors.
1314 */
1315 SIMPLEQ_INIT(&sc->sc_txfreeq)do { (&sc->sc_txfreeq)->sqh_first = ((void *)0); (&
sc->sc_txfreeq)->sqh_last = &(&sc->sc_txfreeq
)->sqh_first; } while (0)
;
1316 SIMPLEQ_INIT(&sc->sc_txdirtyq)do { (&sc->sc_txdirtyq)->sqh_first = ((void *)0); (
&sc->sc_txdirtyq)->sqh_last = &(&sc->sc_txdirtyq
)->sqh_first; } while (0)
;
1317 for (i = 0; i < ATW_TXQUEUELEN64; i++) {
1318 txs = &sc->sc_txsoft[i];
1319 txs->txs_mbuf = NULL((void *)0);
1320 SIMPLEQ_INSERT_TAIL(&sc->sc_txfreeq, txs, txs_q)do { (txs)->txs_q.sqe_next = ((void *)0); *(&sc->sc_txfreeq
)->sqh_last = (txs); (&sc->sc_txfreeq)->sqh_last
= &(txs)->txs_q.sqe_next; } while (0)
;
1321 }
1322
1323 /*
1324 * Initialize the receive descriptor and receive job
1325 * descriptor rings.
1326 */
1327 for (i = 0; i < ATW_NRXDESC64; i++) {
1328 rxs = &sc->sc_rxsoft[i];
1329 if (rxs->rxs_mbuf == NULL((void *)0)) {
1330 if ((error = atw_add_rxbuf(sc, i)) != 0) {
1331 printf("%s: unable to allocate or map rx "
1332 "buffer %d, error = %d\n",
1333 sc->sc_dev.dv_xname, i, error);
1334 /*
1335 * XXX Should attempt to run with fewer receive
1336 * XXX buffers instead of just failing.
1337 */
1338 atw_rxdrain(sc);
1339 goto out;
1340 }
1341 } else
1342 ATW_INIT_RXDESC(sc, i)do { struct atw_rxsoft *__rxs = &sc->sc_rxsoft[(i)]; struct
atw_rxdesc *__rxd = &sc->sc_control_data->acd_rxdescs
[(i)]; struct mbuf *__m = __rxs->rxs_mbuf; __rxd->ar_buf1
= ((__uint32_t)(__rxs->rxs_dmamap->dm_segs[0].ds_addr)
); __rxd->ar_buf2 = ((__uint32_t)((((sc))->sc_cddmamap->
dm_segs[0].ds_addr + __builtin_offsetof(struct atw_control_data
, acd_rxdescs[(((((i) + 1) & (64 - 1))))])))); __rxd->
ar_ctl = ((__uint32_t)(((((__m->M_dat.MH.MH_dat.MH_ext.ext_size
- 1) & ~0x3U)) << ((((u_long)((((((0xfff)) - 1) &
((0xfff))) ^ ((0xfff)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xfff) >> 16)) - 1) & (((0xfff) >> 16
))) ^ (((0xfff) >> 16)))) >> (8)) != 0) ? 8 + (((
(u_long)((((((((0xfff) >> 16) >> 8)) - 1) & (
(((0xfff) >> 16) >> 8))) ^ ((((0xfff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xfff) >> 16) >> 8) >> 4)) - 1) & (((
((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff)
>> 16) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | 0 | ((i) == (64 - 1) ? (1<<
25) : 0))); __rxd->ar_stat = ((__uint32_t)((1<<31)))
; (*(((sc))->sc_dmat)->_dmamap_sync)((((sc))->sc_dmat
), (((sc))->sc_cddmamap), (__builtin_offsetof(struct atw_control_data
, acd_rxdescs[(((i)))])), (sizeof(struct atw_rxdesc)), ((0x01
|0x04))); } while (0)
;
1343 }
1344 sc->sc_rxptr = 0;
1345
1346 /*
1347 * Initialize the interrupt mask and enable interrupts.
1348 */
1349 /* normal interrupts */
1350 sc->sc_inten = ATW_INTR_TCI(1<<0) | ATW_INTR_TDU(1<<2) | ATW_INTR_RCI(1<<6) |
1351 ATW_INTR_NISS(1<<16) | ATW_INTR_LINKON(1<<24) | ATW_INTR_BCNTC(1<<30);
1352
1353 /* abnormal interrupts */
1354 sc->sc_inten |= ATW_INTR_TPS(1<<1) | ATW_INTR_TLT(1<<3) | ATW_INTR_TRT(1<<4) |
1355 ATW_INTR_TUF(1<<5) | ATW_INTR_RDU(1<<7) | ATW_INTR_RPS(1<<8) | ATW_INTR_AISS(1<<15) |
1356 ATW_INTR_FBE(1<<13) | ATW_INTR_LINKOFF(1<<28) | ATW_INTR_TSFTF(1<<26) | ATW_INTR_TSCZ(1<<25);
1357
1358 sc->sc_linkint_mask = ATW_INTR_LINKON(1<<24) | ATW_INTR_LINKOFF(1<<28) |
1359 ATW_INTR_BCNTC(1<<30) | ATW_INTR_TSFTF(1<<26) | ATW_INTR_TSCZ(1<<25);
1360 sc->sc_rxint_mask = ATW_INTR_RCI(1<<6) | ATW_INTR_RDU(1<<7);
1361 sc->sc_txint_mask = ATW_INTR_TCI(1<<0) | ATW_INTR_TUF(1<<5) | ATW_INTR_TLT(1<<3) |
1362 ATW_INTR_TRT(1<<4);
1363
1364 sc->sc_linkint_mask &= sc->sc_inten;
1365 sc->sc_rxint_mask &= sc->sc_inten;
1366 sc->sc_txint_mask &= sc->sc_inten;
1367
1368 ATW_WRITE(sc, ATW_IER, sc->sc_inten)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x38)), ((sc
->sc_inten))))
;
1369 ATW_WRITE(sc, ATW_STSR, 0xffffffff)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x28)), ((0xffffffff
))))
;
1370
1371 DPRINTF(sc, ("%s: ATW_IER %08x, inten %08x\n",
1372 sc->sc_dev.dv_xname, ATW_READ(sc, ATW_IER), sc->sc_inten));
1373
1374 /*
1375 * Give the transmit and receive rings to the ADM8211.
1376 */
1377 ATW_WRITE(sc, ATW_RDB, ATW_CDRXADDR(sc, sc->sc_rxptr))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x18)), (((
(sc)->sc_cddmamap->dm_segs[0].ds_addr + __builtin_offsetof
(struct atw_control_data, acd_rxdescs[((sc->sc_rxptr))])))
)))
;
1378 ATW_WRITE(sc, ATW_TDBD, ATW_CDTXADDR(sc, sc->sc_txnext))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x20)), (((
(sc)->sc_cddmamap->dm_segs[0].ds_addr + __builtin_offsetof
(struct atw_control_data, acd_txdescs[((sc->sc_txnext))]))
))))
;
1379
1380 sc->sc_txthresh = 0;
1381 sc->sc_opmode = ATW_NAR_SR(1<<1) | ATW_NAR_ST(1<<13) |
1382 sc->sc_txth[sc->sc_txthresh].txth_opmode;
1383
1384 /* common 802.11 configuration */
1385 ic->ic_flags &= ~IEEE80211_F_IBSSON0x00000200;
1386 switch (ic->ic_opmode) {
1387 case IEEE80211_M_STA:
1388 break;
1389#ifndef IEEE80211_STA_ONLY
1390 case IEEE80211_M_AHDEMO: /* XXX */
1391 case IEEE80211_M_IBSS:
1392 ic->ic_flags |= IEEE80211_F_IBSSON0x00000200;
1393 /*FALLTHROUGH*/
1394#endif
1395 default: /* XXX */
1396 break;
1397 }
1398
1399#ifndef IEEE80211_STA_ONLY
1400 switch (ic->ic_opmode) {
1401 case IEEE80211_M_AHDEMO:
1402 ic->ic_bss->ni_intval = ic->ic_lintval;
1403 ic->ic_bss->ni_rssi = 0;
1404 ic->ic_bss->ni_rstamp = 0;
1405 break;
1406 default: /* XXX */
1407 break;
1408 }
1409#endif
1410 sc->sc_wepctl = 0;
1411
1412 atw_write_ssid(sc);
1413 atw_write_sup_rates(sc);
1414 if (ic->ic_caps & IEEE80211_C_WEP0x00000001)
1415 atw_write_wep(sc);
1416
1417 ic->ic_state = IEEE80211_S_INIT;
1418
1419 /*
1420 * Set the receive filter. This will start the transmit and
1421 * receive processes.
1422 */
1423 atw_filter_setup(sc);
1424
1425 /*
1426 * Start the receive process.
1427 */
1428 ATW_WRITE(sc, ATW_RDR, 0x1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x10)), ((0x1
))))
;
1429
1430 /*
1431 * Note that the interface is now running.
1432 */
1433 ifp->if_flags |= IFF_RUNNING0x40;
1434 ifq_clr_oactive(&ifp->if_snd);
1435
1436 /* send no beacons, yet. */
1437 atw_start_beacon(sc, 0);
1438
1439 if (ic->ic_opmode == IEEE80211_M_MONITOR)
1440 error = ieee80211_new_state(ic, IEEE80211_S_RUN, -1)(((ic)->ic_newstate)((ic), (IEEE80211_S_RUN), (-1)));
1441 else
1442 error = ieee80211_new_state(ic, IEEE80211_S_SCAN, -1)(((ic)->ic_newstate)((ic), (IEEE80211_S_SCAN), (-1)));
1443 out:
1444 if (error) {
1445 ifp->if_flags &= ~IFF_RUNNING0x40;
1446 ifq_clr_oactive(&ifp->if_snd);
1447 ifp->if_timer = 0;
1448 printf("%s: interface not running\n", sc->sc_dev.dv_xname);
1449 }
1450#ifdef ATW_DEBUG
1451 atw_print_regs(sc, "end of init");
1452#endif /* ATW_DEBUG */
1453
1454 return (error);
1455}
1456
1457/* enable == 1: host control of RF3000/Si4126 through ATW_SYNCTL.
1458 * 0: MAC control of RF3000/Si4126.
1459 *
1460 * Applies power, or selects RF front-end? Sets reset condition.
1461 *
1462 * TBD support non-RFMD BBP, non-SiLabs synth.
1463 */
1464void
1465atw_bbp_io_enable(struct atw_softc *sc, int enable)
1466{
1467 if (enable) {
1468 ATW_WRITE(sc, ATW_SYNRF,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), (((
1<<30)|(1<<25)|(1<<18)))))
1469 ATW_SYNRF_SELRF|ATW_SYNRF_PE1|ATW_SYNRF_PHYRST)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), (((
1<<30)|(1<<25)|(1<<18)))))
;
1470 DELAY(atw_bbp_io_enable_delay)(*delay_func)(atw_bbp_io_enable_delay);
1471 } else {
1472 ATW_WRITE(sc, ATW_SYNRF, 0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((0
))))
;
1473 DELAY(atw_bbp_io_disable_delay)(*delay_func)(atw_bbp_io_disable_delay); /* shorter for some reason */
1474 }
1475}
1476
1477int
1478atw_tune(struct atw_softc *sc)
1479{
1480 int rc;
1481 u_int chan;
1482 struct ieee80211com *ic = &sc->sc_ic;
1483
1484 chan = ieee80211_chan2ieee(ic, ic->ic_bss->ni_chan);
1485 if (chan == 0 || chan == IEEE80211_CHAN_ANY0xffff)
1486 return 0;
1487
1488 if (chan == sc->sc_cur_chan)
1489 return 0;
1490
1491 DPRINTF(sc, ("%s: chan %d -> %d\n", sc->sc_dev.dv_xname,
1492 sc->sc_cur_chan, chan));
1493
1494 atw_idle(sc, ATW_NAR_SR(1<<1)|ATW_NAR_ST(1<<13));
1495
1496 atw_si4126_tune(sc, chan);
1497 if ((rc = atw_rf3000_tune(sc, chan)) != 0)
1498 printf("%s: failed to tune channel %d\n", sc->sc_dev.dv_xname,
1499 chan);
1500
1501 ATW_WRITE(sc, ATW_NAR, sc->sc_opmode)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x30)), ((sc
->sc_opmode))))
;
1502 DELAY(20 * 1000)(*delay_func)(20 * 1000);
1503 ATW_WRITE(sc, ATW_RDR, 0x1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x10)), ((0x1
))))
;
1504
1505 if (rc == 0)
1506 sc->sc_cur_chan = chan;
1507
1508 return rc;
1509}
1510
1511#ifdef ATW_SYNDEBUG
1512void
1513atw_si4126_print(struct atw_softc *sc)
1514{
1515 struct ifnet *ifp = &sc->sc_ic.ic_ific_ac.ac_if;
1516 u_int addr, val;
1517
1518 if (atw_debug < 3 || (ifp->if_flags & IFF_DEBUG0x4) == 0)
1519 return;
1520
1521 for (addr = 0; addr <= 8; addr++) {
1522 printf("%s: synth[%d] = ", sc->sc_dev.dv_xname, addr);
1523 if (atw_si4126_read(sc, addr, &val) == 0) {
1524 printf("<unknown> (quitting print-out)\n");
1525 break;
1526 }
1527 printf("%05x\n", val);
1528 }
1529}
1530#endif /* ATW_SYNDEBUG */
1531
1532/* Tune to channel chan by adjusting the Si4126 RF/IF synthesizer.
1533 *
1534 * The RF/IF synthesizer produces two reference frequencies for
1535 * the RF2948B transceiver. The first frequency the RF2948B requires
1536 * is two times the so-called "intermediate frequency" (IF). Since
1537 * a SAW filter on the radio fixes the IF at 374MHz, I program the
1538 * Si4126 to generate IF LO = 374MHz x 2 = 748MHz. The second
1539 * frequency required by the transceiver is the radio frequency
1540 * (RF). This is a superheterodyne transceiver; for f(chan) the
1541 * center frequency of the channel we are tuning, RF = f(chan) -
1542 * IF.
1543 *
1544 * XXX I am told by SiLabs that the Si4126 will accept a broader range
1545 * of XIN than the 2-25MHz mentioned by the datasheet, even *without*
1546 * XINDIV2 = 1. I've tried this (it is necessary to double R) and it
1547 * works, but I have still programmed for XINDIV2 = 1 to be safe.
1548 */
1549void
1550atw_si4126_tune(struct atw_softc *sc, u_int chan)
1551{
1552 u_int mhz;
1553 u_int R;
1554 u_int32_t gpio;
1555 u_int16_t gain;
1556
1557#ifdef ATW_SYNDEBUG
1558 atw_si4126_print(sc);
1559#endif /* ATW_SYNDEBUG */
1560
1561 if (sc->sc_rev >= ATW_REVISION_BA) {
1562 atw_si4126_write(sc, SI4126_MAIN0, 0x04007);
1563 atw_si4126_write(sc, SI4126_POWER2, 0x00033);
1564 atw_si4126_write(sc, SI4126_IFN5,
1565 atw_rfmd2958_ifn[chan - 1]);
1566 atw_si4126_write(sc, SI4126_RF1R6,
1567 atw_rfmd2958_rf1r[chan - 1]);
1568#ifdef NOTYET
1569 /* set TX POWER? */
1570 atw_si4126_write(sc, 0x0a,
1571 (sc->sc_srom[ATW_SR_CSR20(0x16/2)] & mask) |
1572 power << 9);
1573#endif
1574 /* set TX GAIN */
1575 atw_si4126_write(sc, 0x09, 0x00050 |
1576 sc->sc_srom[ATW_SR_TXPOWER(chan - 1)(0x54/2 + ((chan - 1) - 1)/2)]);
1577 /* wait 100us from power-up for RF, IF to settle */
1578 DELAY(100)(*delay_func)(100);
1579
1580 return;
1581 }
1582
1583 if (chan == 14)
1584 mhz = 2484;
1585 else
1586 mhz = 2412 + 5 * (chan - 1);
1587
1588 /* Tune IF to 748MHz to suit the IF LO input of the
1589 * RF2494B, which is 2 x IF. No need to set an IF divider
1590 * because an IF in 526MHz - 952MHz is allowed.
1591 *
1592 * XIN is 44.000MHz, so divide it by two to get allowable
1593 * range of 2-25MHz. SiLabs tells me that this is not
1594 * strictly necessary.
1595 */
1596
1597 if (atw_xindiv2)
1598 R = 44;
1599 else
1600 R = 88;
1601
1602 /* Power-up RF, IF synthesizers. */
1603 atw_si4126_write(sc, SI4126_POWER2,
1604 SI4126_POWER_PDIB(1<<1)|SI4126_POWER_PDRB(1<<0));
1605
1606 /* set LPWR, too? */
1607 atw_si4126_write(sc, SI4126_MAIN0,
1608 (atw_xindiv2) ? SI4126_MAIN_XINDIV2(1<<6) : 0);
1609
1610 /* Set the phase-locked loop gain. If RF2 N > 2047, then
1611 * set KP2 to 1.
1612 *
1613 * REFDIF This is different from the reference driver, which
1614 * always sets SI4126_GAIN to 0.
1615 */
1616 gain = LSHIFT(((mhz - 374) > 2047) ? 1 : 0, SI4126_GAIN_KP2_MASK)((((mhz - 374) > 2047) ? 1 : 0) << ((((u_long)((((((
0xc)) - 1) & ((0xc))) ^ ((0xc)))) >> (16)) != 0) ? 16
+ ((((u_long)(((((((0xc) >> 16)) - 1) & (((0xc) >>
16))) ^ (((0xc) >> 16)))) >> (8)) != 0) ? 8 + ((
((u_long)((((((((0xc) >> 16) >> 8)) - 1) & ((
((0xc) >> 16) >> 8))) ^ ((((0xc) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xc) >>
16) >> 8) >> 4)) - 1) & (((((0xc) >> 16
) >> 8) >> 4))) ^ (((((0xc) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xc) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xc) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xc) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc
) >> 16) >> 8) >> 4))) - 1) & ((((((0xc
) >> 16) >> 8) >> 4)))) ^ ((((((0xc) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xc) >> 16) >> 8))) - 1) &
(((((0xc) >> 16) >> 8)))) ^ (((((0xc) >> 16
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xc) >> 16) >> 8)) >> 2)) - 1) & ((
((((0xc) >> 16) >> 8)) >> 2))) ^ ((((((0xc)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xc) >> 16) >> 8
)))) - 1) & ((((((0xc) >> 16) >> 8))))) ^ (((
(((0xc) >> 16) >> 8)))))) >> (1)) != 0) ? 1
: 0))) : ((((u_long)((((((((0xc) >> 16))) - 1) & (
(((0xc) >> 16)))) ^ ((((0xc) >> 16))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xc) >> 16)) >>
4)) - 1) & (((((0xc) >> 16)) >> 4))) ^ (((((
0xc) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xc) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xc) >> 16)) >> 4) >> 2
))) ^ ((((((0xc) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc) >> 16)
) >> 4))) - 1) & ((((((0xc) >> 16)) >> 4
)))) ^ ((((((0xc) >> 16)) >> 4))))) >> (1))
!= 0) ? 1 : 0)) : ((((u_long)(((((((((0xc) >> 16)))) -
1) & (((((0xc) >> 16))))) ^ (((((0xc) >> 16)
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc) >>
16))) >> 2)) - 1) & ((((((0xc) >> 16))) >>
2))) ^ ((((((0xc) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc) >> 16)))))
- 1) & ((((((0xc) >> 16)))))) ^ ((((((0xc) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xc))) - 1) & (((0xc)))) ^ (((0xc))))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xc)) >> 8)) - 1) & ((
((0xc)) >> 8))) ^ ((((0xc)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xc)) >> 8) >> 4
)) - 1) & (((((0xc)) >> 8) >> 4))) ^ (((((0xc
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xc)) >> 8) >> 4) >> 2)) - 1) &
((((((0xc)) >> 8) >> 4) >> 2))) ^ ((((((0xc
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xc)) >> 8) >> 4
))) - 1) & ((((((0xc)) >> 8) >> 4)))) ^ (((((
(0xc)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0
)) : ((((u_long)(((((((((0xc)) >> 8))) - 1) & (((((
0xc)) >> 8)))) ^ (((((0xc)) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xc)) >> 8)) >>
2)) - 1) & ((((((0xc)) >> 8)) >> 2))) ^ ((((
((0xc)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xc)) >> 8)))) - 1) & ((
((((0xc)) >> 8))))) ^ ((((((0xc)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xc)))) - 1) &
((((0xc))))) ^ ((((0xc)))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xc))) >> 4)) - 1) & (((((0xc))) >>
4))) ^ (((((0xc))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xc))) >> 4) >> 2)) - 1) &
((((((0xc))) >> 4) >> 2))) ^ ((((((0xc))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xc))) >> 4))) - 1) & ((((((0xc))) >>
4)))) ^ ((((((0xc))) >> 4))))) >> (1)) != 0) ? 1
: 0)) : ((((u_long)(((((((((0xc))))) - 1) & (((((0xc))))
)) ^ (((((0xc))))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xc)))) >> 2)) - 1) & ((((((0xc)))) >>
2))) ^ ((((((0xc)))) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xc)))))) - 1) & ((((((0xc))))
))) ^ ((((((0xc)))))))) >> (1)) != 0) ? 1 : 0))))))
;
1617
1618 atw_si4126_write(sc, SI4126_GAIN1, gain);
1619
1620 /* XIN = 44MHz.
1621 *
1622 * If XINDIV2 = 1, IF = N/(2 * R) * XIN. I choose N = 1496,
1623 * R = 44 so that 1496/(2 * 44) * 44MHz = 748MHz.
1624 *
1625 * If XINDIV2 = 0, IF = N/R * XIN. I choose N = 1496, R = 88
1626 * so that 1496/88 * 44MHz = 748MHz.
1627 */
1628 atw_si4126_write(sc, SI4126_IFN5, 1496);
1629
1630 atw_si4126_write(sc, SI4126_IFR8, R);
1631
1632#ifndef ATW_REFSLAVE
1633 /* Set RF1 arbitrarily. DO NOT configure RF1 after RF2, because
1634 * then RF1 becomes the active RF synthesizer, even on the Si4126,
1635 * which has no RF1!
1636 */
1637 atw_si4126_write(sc, SI4126_RF1R6, R);
1638
1639 atw_si4126_write(sc, SI4126_RF1N3, mhz - 374);
1640#endif
1641
1642 /* N/R * XIN = RF. XIN = 44MHz. We desire RF = mhz - IF,
1643 * where IF = 374MHz. Let's divide XIN to 1MHz. So R = 44.
1644 * Now let's multiply it to mhz. So mhz - IF = N.
1645 */
1646 atw_si4126_write(sc, SI4126_RF2R7, R);
1647
1648 atw_si4126_write(sc, SI4126_RF2N4, mhz - 374);
1649
1650 /* wait 100us from power-up for RF, IF to settle */
1651 DELAY(100)(*delay_func)(100);
1652
1653 gpio = ATW_READ(sc, ATW_GPIO)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x5C))));
1654 gpio &= ~(ATW_GPIO_EN_MASK0x3f000|ATW_GPIO_O_MASK0xfc0|ATW_GPIO_I_MASK0x3f);
1655 gpio |= LSHIFT(1, ATW_GPIO_EN_MASK)((1) << ((((u_long)((((((0x3f000)) - 1) & ((0x3f000
))) ^ ((0x3f000)))) >> (16)) != 0) ? 16 + ((((u_long)((
(((((0x3f000) >> 16)) - 1) & (((0x3f000) >> 16
))) ^ (((0x3f000) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0x3f000) >> 16) >> 8)) - 1) &
((((0x3f000) >> 16) >> 8))) ^ ((((0x3f000) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0x3f000) >> 16) >> 8) >> 4)) - 1) &
(((((0x3f000) >> 16) >> 8) >> 4))) ^ (((((
0x3f000) >> 16) >> 8) >> 4)))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0x3f000) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0x3f000) >>
16) >> 8) >> 4) >> 2))) ^ ((((((0x3f000) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0x3f000) >> 16) >>
8) >> 4))) - 1) & ((((((0x3f000) >> 16) >>
8) >> 4)))) ^ ((((((0x3f000) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000
) >> 16) >> 8))) - 1) & (((((0x3f000) >>
16) >> 8)))) ^ (((((0x3f000) >> 16) >> 8))
))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000) >>
16) >> 8)) >> 2)) - 1) & ((((((0x3f000) >>
16) >> 8)) >> 2))) ^ ((((((0x3f000) >> 16)
>> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0x3f000) >> 16) >> 8)))) - 1)
& ((((((0x3f000) >> 16) >> 8))))) ^ ((((((0x3f000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0x3f000) >> 16))) - 1) & (((
(0x3f000) >> 16)))) ^ ((((0x3f000) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x3f000) >> 16)) >>
4)) - 1) & (((((0x3f000) >> 16)) >> 4))) ^ (
((((0x3f000) >> 16)) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x3f000) >> 16)) >> 4
) >> 2)) - 1) & ((((((0x3f000) >> 16)) >>
4) >> 2))) ^ ((((((0x3f000) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000
) >> 16)) >> 4))) - 1) & ((((((0x3f000) >>
16)) >> 4)))) ^ ((((((0x3f000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000
) >> 16)))) - 1) & (((((0x3f000) >> 16))))) ^
(((((0x3f000) >> 16)))))) >> (2)) != 0) ? 2 + ((
((u_long)((((((((((0x3f000) >> 16))) >> 2)) - 1) &
((((((0x3f000) >> 16))) >> 2))) ^ ((((((0x3f000)
>> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x3f000) >> 16))))) - 1) & ((
((((0x3f000) >> 16)))))) ^ ((((((0x3f000) >> 16))
))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3f000
))) - 1) & (((0x3f000)))) ^ (((0x3f000))))) >> (8))
!= 0) ? 8 + ((((u_long)((((((((0x3f000)) >> 8)) - 1) &
((((0x3f000)) >> 8))) ^ ((((0x3f000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x3f000)) >> 8) >>
4)) - 1) & (((((0x3f000)) >> 8) >> 4))) ^ ((
(((0x3f000)) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0x3f000)) >> 8) >> 4) >>
2)) - 1) & ((((((0x3f000)) >> 8) >> 4) >>
2))) ^ ((((((0x3f000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000
)) >> 8) >> 4))) - 1) & ((((((0x3f000)) >>
8) >> 4)))) ^ ((((((0x3f000)) >> 8) >> 4))
))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f000
)) >> 8))) - 1) & (((((0x3f000)) >> 8)))) ^ (
((((0x3f000)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x3f000)) >> 8)) >> 2)) - 1) & (((
(((0x3f000)) >> 8)) >> 2))) ^ ((((((0x3f000)) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3f000)) >> 8)))) - 1) & ((((((0x3f000)
) >> 8))))) ^ ((((((0x3f000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3f000)))) - 1) &
((((0x3f000))))) ^ ((((0x3f000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x3f000))) >> 4)) - 1) & (((
((0x3f000))) >> 4))) ^ (((((0x3f000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000))) >> 4)
>> 2)) - 1) & ((((((0x3f000))) >> 4) >>
2))) ^ ((((((0x3f000))) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f000))) >>
4))) - 1) & ((((((0x3f000))) >> 4)))) ^ ((((((0x3f000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x3f000))))) - 1) & (((((0x3f000)))))) ^ (((((0x3f000
))))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f000
)))) >> 2)) - 1) & ((((((0x3f000)))) >> 2))) ^
((((((0x3f000)))) >> 2)))) >> (1)) != 0) ? 1 : 0
) : ((((u_long)((((((((((0x3f000)))))) - 1) & ((((((0x3f000
))))))) ^ ((((((0x3f000)))))))) >> (1)) != 0) ? 1 : 0))
))))
;
1656
1657 if ((sc->sc_ifsc_ic.ic_ac.ac_if.if_flags & IFF_LINK10x2000) != 0 && chan != 14) {
1658 /* Set a Prism RF front-end to a special mode for channel 14?
1659 *
1660 * Apparently the SMC2635W needs this, although I don't think
1661 * it has a Prism RF.
1662 */
1663 gpio |= LSHIFT(1, ATW_GPIO_O_MASK)((1) << ((((u_long)((((((0xfc0)) - 1) & ((0xfc0))) ^
((0xfc0)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xfc0
) >> 16)) - 1) & (((0xfc0) >> 16))) ^ (((0xfc0
) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xfc0) >> 16) >> 8)) - 1) & ((((0xfc0) >>
16) >> 8))) ^ ((((0xfc0) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xfc0) >> 16) >>
8) >> 4)) - 1) & (((((0xfc0) >> 16) >>
8) >> 4))) ^ (((((0xfc0) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc0) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xfc0
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xfc0) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc0) >> 16
) >> 8) >> 4))) - 1) & ((((((0xfc0) >> 16
) >> 8) >> 4)))) ^ ((((((0xfc0) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfc0) >> 16) >> 8))) - 1) & (((((0xfc0
) >> 16) >> 8)))) ^ (((((0xfc0) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc0)
>> 16) >> 8)) >> 2)) - 1) & ((((((0xfc0
) >> 16) >> 8)) >> 2))) ^ ((((((0xfc0) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xfc0) >> 16) >> 8)))) - 1
) & ((((((0xfc0) >> 16) >> 8))))) ^ ((((((0xfc0
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xfc0) >> 16))) - 1) & ((((0xfc0
) >> 16)))) ^ ((((0xfc0) >> 16))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfc0) >> 16)) >>
4)) - 1) & (((((0xfc0) >> 16)) >> 4))) ^ (((
((0xfc0) >> 16)) >> 4)))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xfc0) >> 16)) >> 4) >>
2)) - 1) & ((((((0xfc0) >> 16)) >> 4) >>
2))) ^ ((((((0xfc0) >> 16)) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc0) >>
16)) >> 4))) - 1) & ((((((0xfc0) >> 16)) >>
4)))) ^ ((((((0xfc0) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfc0) >> 16)
))) - 1) & (((((0xfc0) >> 16))))) ^ (((((0xfc0) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc0
) >> 16))) >> 2)) - 1) & ((((((0xfc0) >>
16))) >> 2))) ^ ((((((0xfc0) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc0
) >> 16))))) - 1) & ((((((0xfc0) >> 16)))))) ^
((((((0xfc0) >> 16))))))) >> (1)) != 0) ? 1 : 0)
))) : ((((u_long)(((((((0xfc0))) - 1) & (((0xfc0)))) ^ ((
(0xfc0))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xfc0
)) >> 8)) - 1) & ((((0xfc0)) >> 8))) ^ ((((0xfc0
)) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((((
(((0xfc0)) >> 8) >> 4)) - 1) & (((((0xfc0)) >>
8) >> 4))) ^ (((((0xfc0)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc0)) >> 8) >>
4) >> 2)) - 1) & ((((((0xfc0)) >> 8) >>
4) >> 2))) ^ ((((((0xfc0)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc0
)) >> 8) >> 4))) - 1) & ((((((0xfc0)) >>
8) >> 4)))) ^ ((((((0xfc0)) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfc0))
>> 8))) - 1) & (((((0xfc0)) >> 8)))) ^ (((((
0xfc0)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)
((((((((((0xfc0)) >> 8)) >> 2)) - 1) & ((((((
0xfc0)) >> 8)) >> 2))) ^ ((((((0xfc0)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xfc0)) >> 8)))) - 1) & ((((((0xfc0)) >>
8))))) ^ ((((((0xfc0)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xfc0)))) - 1) & ((((0xfc0
))))) ^ ((((0xfc0)))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfc0))) >> 4)) - 1) & (((((0xfc0))) >>
4))) ^ (((((0xfc0))) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xfc0))) >> 4) >> 2)) - 1) &
((((((0xfc0))) >> 4) >> 2))) ^ ((((((0xfc0))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfc0))) >> 4))) - 1) & ((((((0xfc0))) >>
4)))) ^ ((((((0xfc0))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfc0))))) - 1) & (((((0xfc0
)))))) ^ (((((0xfc0))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xfc0)))) >> 2)) - 1) & ((((((0xfc0)))) >>
2))) ^ ((((((0xfc0)))) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc0)))))) - 1) & ((((((0xfc0
))))))) ^ ((((((0xfc0)))))))) >> (1)) != 0) ? 1 : 0))))
))
;
1664 }
1665 ATW_WRITE(sc, ATW_GPIO, gpio)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x5C)), ((gpio
))))
;
1666
1667#ifdef ATW_SYNDEBUG
1668 atw_si4126_print(sc);
1669#endif /* ATW_SYNDEBUG */
1670}
1671
1672/* Baseline initialization of RF3000 BBP: set CCA mode and enable antenna
1673 * diversity.
1674 *
1675 * !!!
1676 * !!! Call this w/ Tx/Rx suspended, atw_idle(, ATW_NAR_ST|ATW_NAR_SR).
1677 * !!!
1678 */
1679int
1680atw_rf3000_init(struct atw_softc *sc)
1681{
1682 int rc = 0;
1683
1684 atw_bbp_io_enable(sc, 1);
1685
1686 /* CCA is acquisition sensitive */
1687 rc = atw_rf3000_write(sc, RF3000_CCACTL0x02,
1688 LSHIFT(RF3000_CCACTL_MODE_BOTH, RF3000_CCACTL_MODE_MASK)((2) << ((((u_long)((((((0xc0)) - 1) & ((0xc0))) ^ (
(0xc0)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xc0)
>> 16)) - 1) & (((0xc0) >> 16))) ^ (((0xc0) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xc0) >>
16) >> 8)) - 1) & ((((0xc0) >> 16) >> 8
))) ^ ((((0xc0) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xc0) >> 16) >> 8) >>
4)) - 1) & (((((0xc0) >> 16) >> 8) >> 4
))) ^ (((((0xc0) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xc0) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xc0) >> 16
) >> 8) >> 4) >> 2))) ^ ((((((0xc0) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xc0) >> 16) >>
8) >> 4))) - 1) & ((((((0xc0) >> 16) >>
8) >> 4)))) ^ ((((((0xc0) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc0
) >> 16) >> 8))) - 1) & (((((0xc0) >> 16
) >> 8)))) ^ (((((0xc0) >> 16) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xc0) >> 16) >>
8)) >> 2)) - 1) & ((((((0xc0) >> 16) >>
8)) >> 2))) ^ ((((((0xc0) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc0
) >> 16) >> 8)))) - 1) & ((((((0xc0) >>
16) >> 8))))) ^ ((((((0xc0) >> 16) >> 8)))
))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xc0)
>> 16))) - 1) & ((((0xc0) >> 16)))) ^ ((((0xc0
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xc0) >> 16)) >> 4)) - 1) & (((((0xc0) >>
16)) >> 4))) ^ (((((0xc0) >> 16)) >> 4))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xc0) >>
16)) >> 4) >> 2)) - 1) & ((((((0xc0) >>
16)) >> 4) >> 2))) ^ ((((((0xc0) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xc0) >> 16)) >> 4))) - 1) & ((((((
0xc0) >> 16)) >> 4)))) ^ ((((((0xc0) >> 16)
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xc0) >> 16)))) - 1) & (((((0xc0) >>
16))))) ^ (((((0xc0) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xc0) >> 16))) >> 2)) -
1) & ((((((0xc0) >> 16))) >> 2))) ^ ((((((0xc0
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xc0) >> 16))))) - 1) & (((((
(0xc0) >> 16)))))) ^ ((((((0xc0) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xc0))) - 1) &
(((0xc0)))) ^ (((0xc0))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xc0)) >> 8)) - 1) & ((((0xc0)) >> 8
))) ^ ((((0xc0)) >> 8)))) >> (4)) != 0) ? 4 + (((
(u_long)(((((((((0xc0)) >> 8) >> 4)) - 1) & (
((((0xc0)) >> 8) >> 4))) ^ (((((0xc0)) >> 8
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xc0)) >> 8) >> 4) >> 2)) - 1) & (((
(((0xc0)) >> 8) >> 4) >> 2))) ^ ((((((0xc0)
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xc0)) >> 8) >> 4)
)) - 1) & ((((((0xc0)) >> 8) >> 4)))) ^ (((((
(0xc0)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xc0)) >> 8))) - 1) & ((
(((0xc0)) >> 8)))) ^ (((((0xc0)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xc0)) >> 8)) >>
2)) - 1) & ((((((0xc0)) >> 8)) >> 2))) ^ (((
(((0xc0)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xc0)) >> 8)))) - 1) &
((((((0xc0)) >> 8))))) ^ ((((((0xc0)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xc0))))
- 1) & ((((0xc0))))) ^ ((((0xc0)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xc0))) >> 4)) - 1) & (
((((0xc0))) >> 4))) ^ (((((0xc0))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xc0))) >> 4) >>
2)) - 1) & ((((((0xc0))) >> 4) >> 2))) ^ (((
(((0xc0))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xc0))) >> 4))) - 1) &
((((((0xc0))) >> 4)))) ^ ((((((0xc0))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xc0))))
) - 1) & (((((0xc0)))))) ^ (((((0xc0))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xc0)))) >> 2)) - 1) &
((((((0xc0)))) >> 2))) ^ ((((((0xc0)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xc0))))
)) - 1) & ((((((0xc0))))))) ^ ((((((0xc0)))))))) >>
(1)) != 0) ? 1 : 0))))))
);
1689
1690 if (rc != 0)
1691 goto out;
1692
1693 /* enable diversity */
1694 rc = atw_rf3000_write(sc, RF3000_DIVCTL0x03, RF3000_DIVCTL_ENABLE(1<<7));
1695
1696 if (rc != 0)
1697 goto out;
1698
1699 /* sensible setting from a binary-only driver */
1700 rc = atw_rf3000_write(sc, RF3000_GAINCTL0x11,
1701 LSHIFT(0x1d, RF3000_GAINCTL_TXVGC_MASK)((0x1d) << ((((u_long)((((((0xfc)) - 1) & ((0xfc)))
^ ((0xfc)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xfc
) >> 16)) - 1) & (((0xfc) >> 16))) ^ (((0xfc)
>> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(((((((
(0xfc) >> 16) >> 8)) - 1) & ((((0xfc) >>
16) >> 8))) ^ ((((0xfc) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xfc) >> 16) >>
8) >> 4)) - 1) & (((((0xfc) >> 16) >> 8
) >> 4))) ^ (((((0xfc) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xfc
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xfc) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc) >> 16
) >> 8) >> 4))) - 1) & ((((((0xfc) >> 16
) >> 8) >> 4)))) ^ ((((((0xfc) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfc) >> 16) >> 8))) - 1) & (((((0xfc
) >> 16) >> 8)))) ^ (((((0xfc) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >>
16) >> 8)) >> 2)) - 1) & ((((((0xfc) >>
16) >> 8)) >> 2))) ^ ((((((0xfc) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xfc) >> 16) >> 8)))) - 1) & (((((
(0xfc) >> 16) >> 8))))) ^ ((((((0xfc) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xfc) >> 16))) - 1) & ((((0xfc) >> 16
)))) ^ ((((0xfc) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfc) >> 16)) >> 4)) - 1) &
(((((0xfc) >> 16)) >> 4))) ^ (((((0xfc) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xfc) >> 16)) >> 4) >> 2)) - 1) &
((((((0xfc) >> 16)) >> 4) >> 2))) ^ ((((((
0xfc) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xfc) >> 16)) >>
4))) - 1) & ((((((0xfc) >> 16)) >> 4)))) ^ (
(((((0xfc) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfc) >> 16)))) - 1) &
(((((0xfc) >> 16))))) ^ (((((0xfc) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >> 16))) >>
2)) - 1) & ((((((0xfc) >> 16))) >> 2))) ^ ((
((((0xfc) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfc) >> 16))))) - 1) &
((((((0xfc) >> 16)))))) ^ ((((((0xfc) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfc))
) - 1) & (((0xfc)))) ^ (((0xfc))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xfc)) >> 8)) - 1) & ((((0xfc
)) >> 8))) ^ ((((0xfc)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xfc)) >> 8) >> 4))
- 1) & (((((0xfc)) >> 8) >> 4))) ^ (((((0xfc
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xfc)) >> 8) >> 4) >> 2)) - 1) &
((((((0xfc)) >> 8) >> 4) >> 2))) ^ ((((((0xfc
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfc)) >> 8) >> 4
))) - 1) & ((((((0xfc)) >> 8) >> 4)))) ^ ((((
((0xfc)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xfc)) >> 8))) - 1) & ((
(((0xfc)) >> 8)))) ^ (((((0xfc)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc)) >> 8)) >>
2)) - 1) & ((((((0xfc)) >> 8)) >> 2))) ^ (((
(((0xfc)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc)) >> 8)))) - 1) &
((((((0xfc)) >> 8))))) ^ ((((((0xfc)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfc))))
- 1) & ((((0xfc))))) ^ ((((0xfc)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xfc))) >> 4)) - 1) & (
((((0xfc))) >> 4))) ^ (((((0xfc))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc))) >> 4) >>
2)) - 1) & ((((((0xfc))) >> 4) >> 2))) ^ (((
(((0xfc))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc))) >> 4))) - 1) &
((((((0xfc))) >> 4)))) ^ ((((((0xfc))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfc))))
) - 1) & (((((0xfc)))))) ^ (((((0xfc))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xfc)))) >> 2)) - 1) &
((((((0xfc)))) >> 2))) ^ ((((((0xfc)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc))))
)) - 1) & ((((((0xfc))))))) ^ ((((((0xfc)))))))) >>
(1)) != 0) ? 1 : 0))))))
);
1702
1703 if (rc != 0)
1704 goto out;
1705
1706 /* magic from a binary-only driver */
1707 rc = atw_rf3000_write(sc, RF3000_LOGAINCAL0x14,
1708 LSHIFT(0x38, RF3000_LOGAINCAL_CAL_MASK)((0x38) << ((((u_long)((((((0x3f)) - 1) & ((0x3f)))
^ ((0x3f)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0x3f
) >> 16)) - 1) & (((0x3f) >> 16))) ^ (((0x3f)
>> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(((((((
(0x3f) >> 16) >> 8)) - 1) & ((((0x3f) >>
16) >> 8))) ^ ((((0x3f) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x3f) >> 16) >>
8) >> 4)) - 1) & (((((0x3f) >> 16) >> 8
) >> 4))) ^ (((((0x3f) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0x3f
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x3f) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f) >> 16
) >> 8) >> 4))) - 1) & ((((((0x3f) >> 16
) >> 8) >> 4)))) ^ ((((((0x3f) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x3f) >> 16) >> 8))) - 1) & (((((0x3f
) >> 16) >> 8)))) ^ (((((0x3f) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3f) >>
16) >> 8)) >> 2)) - 1) & ((((((0x3f) >>
16) >> 8)) >> 2))) ^ ((((((0x3f) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3f) >> 16) >> 8)))) - 1) & (((((
(0x3f) >> 16) >> 8))))) ^ ((((((0x3f) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3f) >> 16))) - 1) & ((((0x3f) >> 16
)))) ^ ((((0x3f) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0x3f) >> 16)) >> 4)) - 1) &
(((((0x3f) >> 16)) >> 4))) ^ (((((0x3f) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x3f) >> 16)) >> 4) >> 2)) - 1) &
((((((0x3f) >> 16)) >> 4) >> 2))) ^ ((((((
0x3f) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0x3f) >> 16)) >>
4))) - 1) & ((((((0x3f) >> 16)) >> 4)))) ^ (
(((((0x3f) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x3f) >> 16)))) - 1) &
(((((0x3f) >> 16))))) ^ (((((0x3f) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3f) >> 16))) >>
2)) - 1) & ((((((0x3f) >> 16))) >> 2))) ^ ((
((((0x3f) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x3f) >> 16))))) - 1) &
((((((0x3f) >> 16)))))) ^ ((((((0x3f) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3f))
) - 1) & (((0x3f)))) ^ (((0x3f))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0x3f)) >> 8)) - 1) & ((((0x3f
)) >> 8))) ^ ((((0x3f)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0x3f)) >> 8) >> 4))
- 1) & (((((0x3f)) >> 8) >> 4))) ^ (((((0x3f
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x3f)) >> 8) >> 4) >> 2)) - 1) &
((((((0x3f)) >> 8) >> 4) >> 2))) ^ ((((((0x3f
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x3f)) >> 8) >> 4
))) - 1) & ((((((0x3f)) >> 8) >> 4)))) ^ ((((
((0x3f)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0x3f)) >> 8))) - 1) & ((
(((0x3f)) >> 8)))) ^ (((((0x3f)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3f)) >> 8)) >>
2)) - 1) & ((((((0x3f)) >> 8)) >> 2))) ^ (((
(((0x3f)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0x3f)) >> 8)))) - 1) &
((((((0x3f)) >> 8))))) ^ ((((((0x3f)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3f))))
- 1) & ((((0x3f))))) ^ ((((0x3f)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0x3f))) >> 4)) - 1) & (
((((0x3f))) >> 4))) ^ (((((0x3f))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3f))) >> 4) >>
2)) - 1) & ((((((0x3f))) >> 4) >> 2))) ^ (((
(((0x3f))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0x3f))) >> 4))) - 1) &
((((((0x3f))) >> 4)))) ^ ((((((0x3f))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3f))))
) - 1) & (((((0x3f)))))) ^ (((((0x3f))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0x3f)))) >> 2)) - 1) &
((((((0x3f)))) >> 2))) ^ ((((((0x3f)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3f))))
)) - 1) & ((((((0x3f))))))) ^ ((((((0x3f)))))))) >>
(1)) != 0) ? 1 : 0))))))
);
1709
1710 if (rc != 0)
1711 goto out;
1712
1713 rc = atw_rf3000_write(sc, RF3000_HIGAINCAL0x15, RF3000_HIGAINCAL_DSSSPAD(1<<6));
1714
1715 if (rc != 0)
1716 goto out;
1717
1718 /*
1719 * XXX Reference driver remarks that Abocom sets this to 50.
1720 * Meaning 0x50, I think.... 50 = 0x32, which would set a bit
1721 * in the "reserved" area of register RF3000_OPTIONS1.
1722 */
1723 rc = atw_rf3000_write(sc, RF3000_OPTIONS10x1C, sc->sc_rf3000_options1);
1724
1725 if (rc != 0)
1726 goto out;
1727
1728 rc = atw_rf3000_write(sc, RF3000_OPTIONS20x1D, sc->sc_rf3000_options2);
1729
1730 if (rc != 0)
1731 goto out;
1732
1733out:
1734 atw_bbp_io_enable(sc, 0);
1735 return rc;
1736}
1737
1738#ifdef ATW_BBPDEBUG
1739void
1740atw_rf3000_print(struct atw_softc *sc)
1741{
1742 struct ifnet *ifp = &sc->sc_ic.ic_ific_ac.ac_if;
1743 u_int addr, val;
1744
1745 if (atw_debug < 3 || (ifp->if_flags & IFF_DEBUG0x4) == 0)
1746 return;
1747
1748 for (addr = 0x01; addr <= 0x15; addr++) {
1749 printf("%s: bbp[%d] = \n", sc->sc_dev.dv_xname, addr);
1750 if (atw_rf3000_read(sc, addr, &val) != 0) {
1751 printf("<unknown> (quitting print-out)\n");
1752 break;
1753 }
1754 printf("%08x\n", val);
1755 }
1756}
1757#endif /* ATW_BBPDEBUG */
1758
1759/* Set the power settings on the BBP for channel `chan'. */
1760int
1761atw_rf3000_tune(struct atw_softc *sc, u_int chan)
1762{
1763 int rc = 0;
1764 u_int32_t reg;
1765 u_int16_t txpower, lpf_cutoff, lna_gs_thresh;
1766
1767 txpower = sc->sc_srom[ATW_SR_TXPOWER(chan)(0x54/2 + ((chan) - 1)/2)];
1768 lpf_cutoff = sc->sc_srom[ATW_SR_LPF_CUTOFF(chan)(0x62/2 + ((chan) - 1)/2)];
1769 lna_gs_thresh = sc->sc_srom[ATW_SR_LNA_GS_THRESH(chan)(0x70/2 + ((chan) - 1)/2)];
1770
1771 /* odd channels: LSB, even channels: MSB */
1772 if (chan % 2 == 1) {
1773 txpower &= 0xFF;
1774 lpf_cutoff &= 0xFF;
1775 lna_gs_thresh &= 0xFF;
1776 } else {
1777 txpower >>= 8;
1778 lpf_cutoff >>= 8;
1779 lna_gs_thresh >>= 8;
1780 }
1781
1782#ifdef ATW_BBPDEBUG
1783 atw_rf3000_print(sc);
1784#endif /* ATW_BBPDEBUG */
1785
1786 DPRINTF(sc, ("%s: chan %d txpower %02x, lpf_cutoff %02x, "
1787 "lna_gs_thresh %02x\n",
1788 sc->sc_dev.dv_xname, chan, txpower, lpf_cutoff, lna_gs_thresh));
1789
1790 atw_bbp_io_enable(sc, 1);
1791
1792 if ((rc = atw_rf3000_write(sc, RF3000_GAINCTL0x11,
1793 LSHIFT(txpower, RF3000_GAINCTL_TXVGC_MASK)((txpower) << ((((u_long)((((((0xfc)) - 1) & ((0xfc
))) ^ ((0xfc)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xfc) >> 16)) - 1) & (((0xfc) >> 16))) ^ ((
(0xfc) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xfc) >> 16) >> 8)) - 1) & ((((0xfc) >>
16) >> 8))) ^ ((((0xfc) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xfc) >> 16) >>
8) >> 4)) - 1) & (((((0xfc) >> 16) >> 8
) >> 4))) ^ (((((0xfc) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xfc
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xfc) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc) >> 16
) >> 8) >> 4))) - 1) & ((((((0xfc) >> 16
) >> 8) >> 4)))) ^ ((((((0xfc) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfc) >> 16) >> 8))) - 1) & (((((0xfc
) >> 16) >> 8)))) ^ (((((0xfc) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >>
16) >> 8)) >> 2)) - 1) & ((((((0xfc) >>
16) >> 8)) >> 2))) ^ ((((((0xfc) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xfc) >> 16) >> 8)))) - 1) & (((((
(0xfc) >> 16) >> 8))))) ^ ((((((0xfc) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xfc) >> 16))) - 1) & ((((0xfc) >> 16
)))) ^ ((((0xfc) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfc) >> 16)) >> 4)) - 1) &
(((((0xfc) >> 16)) >> 4))) ^ (((((0xfc) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xfc) >> 16)) >> 4) >> 2)) - 1) &
((((((0xfc) >> 16)) >> 4) >> 2))) ^ ((((((
0xfc) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xfc) >> 16)) >>
4))) - 1) & ((((((0xfc) >> 16)) >> 4)))) ^ (
(((((0xfc) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfc) >> 16)))) - 1) &
(((((0xfc) >> 16))))) ^ (((((0xfc) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >> 16))) >>
2)) - 1) & ((((((0xfc) >> 16))) >> 2))) ^ ((
((((0xfc) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfc) >> 16))))) - 1) &
((((((0xfc) >> 16)))))) ^ ((((((0xfc) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfc))
) - 1) & (((0xfc)))) ^ (((0xfc))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xfc)) >> 8)) - 1) & ((((0xfc
)) >> 8))) ^ ((((0xfc)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xfc)) >> 8) >> 4))
- 1) & (((((0xfc)) >> 8) >> 4))) ^ (((((0xfc
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xfc)) >> 8) >> 4) >> 2)) - 1) &
((((((0xfc)) >> 8) >> 4) >> 2))) ^ ((((((0xfc
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfc)) >> 8) >> 4
))) - 1) & ((((((0xfc)) >> 8) >> 4)))) ^ ((((
((0xfc)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xfc)) >> 8))) - 1) & ((
(((0xfc)) >> 8)))) ^ (((((0xfc)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc)) >> 8)) >>
2)) - 1) & ((((((0xfc)) >> 8)) >> 2))) ^ (((
(((0xfc)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc)) >> 8)))) - 1) &
((((((0xfc)) >> 8))))) ^ ((((((0xfc)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfc))))
- 1) & ((((0xfc))))) ^ ((((0xfc)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xfc))) >> 4)) - 1) & (
((((0xfc))) >> 4))) ^ (((((0xfc))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc))) >> 4) >>
2)) - 1) & ((((((0xfc))) >> 4) >> 2))) ^ (((
(((0xfc))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc))) >> 4))) - 1) &
((((((0xfc))) >> 4)))) ^ ((((((0xfc))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfc))))
) - 1) & (((((0xfc)))))) ^ (((((0xfc))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xfc)))) >> 2)) - 1) &
((((((0xfc)))) >> 2))) ^ ((((((0xfc)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc))))
)) - 1) & ((((((0xfc))))))) ^ ((((((0xfc)))))))) >>
(1)) != 0) ? 1 : 0))))))
)) != 0)
1794 goto out;
1795
1796 if ((rc = atw_rf3000_write(sc, RF3000_LOGAINCAL0x14, lpf_cutoff)) != 0)
1797 goto out;
1798
1799 if ((rc = atw_rf3000_write(sc, RF3000_HIGAINCAL0x15, lna_gs_thresh)) != 0)
1800 goto out;
1801
1802 if ((rc = atw_rf3000_write(sc, RF3000_OPTIONS10x1C, 0x0)) != 0)
1803 goto out;
1804
1805 rc = atw_rf3000_write(sc, RF3000_OPTIONS20x1D, RF3000_OPTIONS2_LNAGS_DELAY(1<<7));
1806 if (rc != 0)
1807 goto out;
1808
1809#ifdef ATW_BBPDEBUG
1810 atw_rf3000_print(sc);
1811#endif /* ATW_BBPDEBUG */
1812
1813out:
1814 atw_bbp_io_enable(sc, 0);
1815
1816 /* set beacon, rts, atim transmit power */
1817 reg = ATW_READ(sc, ATW_PLCPHD)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x68))));
1818 reg &= ~ATW_PLCPHD_SERVICE_MASK0xff0000;
1819 reg |= LSHIFT(LSHIFT(txpower, RF3000_GAINCTL_TXVGC_MASK),((((txpower) << ((((u_long)((((((0xfc)) - 1) & ((0xfc
))) ^ ((0xfc)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xfc) >> 16)) - 1) & (((0xfc) >> 16))) ^ ((
(0xfc) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xfc) >> 16) >> 8)) - 1) & ((((0xfc) >>
16) >> 8))) ^ ((((0xfc) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xfc) >> 16) >>
8) >> 4)) - 1) & (((((0xfc) >> 16) >> 8
) >> 4))) ^ (((((0xfc) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xfc
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xfc) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc) >> 16
) >> 8) >> 4))) - 1) & ((((((0xfc) >> 16
) >> 8) >> 4)))) ^ ((((((0xfc) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfc) >> 16) >> 8))) - 1) & (((((0xfc
) >> 16) >> 8)))) ^ (((((0xfc) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >>
16) >> 8)) >> 2)) - 1) & ((((((0xfc) >>
16) >> 8)) >> 2))) ^ ((((((0xfc) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xfc) >> 16) >> 8)))) - 1) & (((((
(0xfc) >> 16) >> 8))))) ^ ((((((0xfc) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xfc) >> 16))) - 1) & ((((0xfc) >> 16
)))) ^ ((((0xfc) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfc) >> 16)) >> 4)) - 1) &
(((((0xfc) >> 16)) >> 4))) ^ (((((0xfc) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xfc) >> 16)) >> 4) >> 2)) - 1) &
((((((0xfc) >> 16)) >> 4) >> 2))) ^ ((((((
0xfc) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xfc) >> 16)) >>
4))) - 1) & ((((((0xfc) >> 16)) >> 4)))) ^ (
(((((0xfc) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfc) >> 16)))) - 1) &
(((((0xfc) >> 16))))) ^ (((((0xfc) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >> 16))) >>
2)) - 1) & ((((((0xfc) >> 16))) >> 2))) ^ ((
((((0xfc) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfc) >> 16))))) - 1) &
((((((0xfc) >> 16)))))) ^ ((((((0xfc) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfc))
) - 1) & (((0xfc)))) ^ (((0xfc))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xfc)) >> 8)) - 1) & ((((0xfc
)) >> 8))) ^ ((((0xfc)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xfc)) >> 8) >> 4))
- 1) & (((((0xfc)) >> 8) >> 4))) ^ (((((0xfc
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xfc)) >> 8) >> 4) >> 2)) - 1) &
((((((0xfc)) >> 8) >> 4) >> 2))) ^ ((((((0xfc
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfc)) >> 8) >> 4
))) - 1) & ((((((0xfc)) >> 8) >> 4)))) ^ ((((
((0xfc)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xfc)) >> 8))) - 1) & ((
(((0xfc)) >> 8)))) ^ (((((0xfc)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc)) >> 8)) >>
2)) - 1) & ((((((0xfc)) >> 8)) >> 2))) ^ (((
(((0xfc)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc)) >> 8)))) - 1) &
((((((0xfc)) >> 8))))) ^ ((((((0xfc)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfc))))
- 1) & ((((0xfc))))) ^ ((((0xfc)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xfc))) >> 4)) - 1) & (
((((0xfc))) >> 4))) ^ (((((0xfc))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc))) >> 4) >>
2)) - 1) & ((((((0xfc))) >> 4) >> 2))) ^ (((
(((0xfc))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc))) >> 4))) - 1) &
((((((0xfc))) >> 4)))) ^ ((((((0xfc))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfc))))
) - 1) & (((((0xfc)))))) ^ (((((0xfc))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xfc)))) >> 2)) - 1) &
((((((0xfc)))) >> 2))) ^ ((((((0xfc)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc))))
)) - 1) & ((((((0xfc))))))) ^ ((((((0xfc)))))))) >>
(1)) != 0) ? 1 : 0))))))) << ((((u_long)((((((0xff0000
)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xff0000) >> 16)) - 1) &
(((0xff0000) >> 16))) ^ (((0xff0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >>
8)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((
((0xff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0))))))
1820 ATW_PLCPHD_SERVICE_MASK)((((txpower) << ((((u_long)((((((0xfc)) - 1) & ((0xfc
))) ^ ((0xfc)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xfc) >> 16)) - 1) & (((0xfc) >> 16))) ^ ((
(0xfc) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xfc) >> 16) >> 8)) - 1) & ((((0xfc) >>
16) >> 8))) ^ ((((0xfc) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xfc) >> 16) >>
8) >> 4)) - 1) & (((((0xfc) >> 16) >> 8
) >> 4))) ^ (((((0xfc) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xfc
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xfc) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc) >> 16
) >> 8) >> 4))) - 1) & ((((((0xfc) >> 16
) >> 8) >> 4)))) ^ ((((((0xfc) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfc) >> 16) >> 8))) - 1) & (((((0xfc
) >> 16) >> 8)))) ^ (((((0xfc) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >>
16) >> 8)) >> 2)) - 1) & ((((((0xfc) >>
16) >> 8)) >> 2))) ^ ((((((0xfc) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xfc) >> 16) >> 8)))) - 1) & (((((
(0xfc) >> 16) >> 8))))) ^ ((((((0xfc) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xfc) >> 16))) - 1) & ((((0xfc) >> 16
)))) ^ ((((0xfc) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfc) >> 16)) >> 4)) - 1) &
(((((0xfc) >> 16)) >> 4))) ^ (((((0xfc) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xfc) >> 16)) >> 4) >> 2)) - 1) &
((((((0xfc) >> 16)) >> 4) >> 2))) ^ ((((((
0xfc) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xfc) >> 16)) >>
4))) - 1) & ((((((0xfc) >> 16)) >> 4)))) ^ (
(((((0xfc) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfc) >> 16)))) - 1) &
(((((0xfc) >> 16))))) ^ (((((0xfc) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc) >> 16))) >>
2)) - 1) & ((((((0xfc) >> 16))) >> 2))) ^ ((
((((0xfc) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfc) >> 16))))) - 1) &
((((((0xfc) >> 16)))))) ^ ((((((0xfc) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfc))
) - 1) & (((0xfc)))) ^ (((0xfc))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xfc)) >> 8)) - 1) & ((((0xfc
)) >> 8))) ^ ((((0xfc)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xfc)) >> 8) >> 4))
- 1) & (((((0xfc)) >> 8) >> 4))) ^ (((((0xfc
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xfc)) >> 8) >> 4) >> 2)) - 1) &
((((((0xfc)) >> 8) >> 4) >> 2))) ^ ((((((0xfc
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfc)) >> 8) >> 4
))) - 1) & ((((((0xfc)) >> 8) >> 4)))) ^ ((((
((0xfc)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xfc)) >> 8))) - 1) & ((
(((0xfc)) >> 8)))) ^ (((((0xfc)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc)) >> 8)) >>
2)) - 1) & ((((((0xfc)) >> 8)) >> 2))) ^ (((
(((0xfc)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc)) >> 8)))) - 1) &
((((((0xfc)) >> 8))))) ^ ((((((0xfc)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfc))))
- 1) & ((((0xfc))))) ^ ((((0xfc)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xfc))) >> 4)) - 1) & (
((((0xfc))) >> 4))) ^ (((((0xfc))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfc))) >> 4) >>
2)) - 1) & ((((((0xfc))) >> 4) >> 2))) ^ (((
(((0xfc))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xfc))) >> 4))) - 1) &
((((((0xfc))) >> 4)))) ^ ((((((0xfc))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfc))))
) - 1) & (((((0xfc)))))) ^ (((((0xfc))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xfc)))) >> 2)) - 1) &
((((((0xfc)))) >> 2))) ^ ((((((0xfc)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfc))))
)) - 1) & ((((((0xfc))))))) ^ ((((((0xfc)))))))) >>
(1)) != 0) ? 1 : 0))))))) << ((((u_long)((((((0xff0000
)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xff0000) >> 16)) - 1) &
(((0xff0000) >> 16))) ^ (((0xff0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >>
8)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((
((0xff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0))))))
;
1821 ATW_WRITE(sc, ATW_PLCPHD, reg)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x68)), ((reg
))))
;
1822 DELAY(2 * 1000)(*delay_func)(2 * 1000);
1823
1824 return rc;
1825}
1826
1827/* Write a register on the RF3000 baseband processor using the
1828 * registers provided by the ADM8211 for this purpose.
1829 *
1830 * Return 0 on success.
1831 */
1832int
1833atw_rf3000_write(struct atw_softc *sc, u_int addr, u_int val)
1834{
1835 u_int32_t reg;
1836 int i;
1837
1838 reg = sc->sc_bbpctl_wr |
1839 LSHIFT(val & 0xff, ATW_BBPCTL_DATA_MASK)((val & 0xff) << ((((u_long)((((((0xff)) - 1) &
((0xff))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff) >> 16)) - 1) & (((0xff) >> 16))
) ^ (((0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff) >> 16) >> 8)) - 1) & ((((0xff)
>> 16) >> 8))) ^ ((((0xff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >>
16) >> 8) >> 4)) - 1) & (((((0xff) >> 16
) >> 8) >> 4))) ^ (((((0xff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xff) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff
) >> 16) >> 8) >> 4)))) ^ ((((((0xff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff) >> 16) >> 8))) - 1)
& (((((0xff) >> 16) >> 8)))) ^ (((((0xff) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16) >> 8)) >> 2)) - 1) &
((((((0xff) >> 16) >> 8)) >> 2))) ^ ((((((
0xff) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16) >>
8)))) - 1) & ((((((0xff) >> 16) >> 8))))) ^ (
(((((0xff) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff) >> 16))) - 1) &
((((0xff) >> 16)))) ^ ((((0xff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16)) >>
4)) - 1) & (((((0xff) >> 16)) >> 4))) ^ ((((
(0xff) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xff) >> 16)) >> 4) >>
2)) - 1) & ((((((0xff) >> 16)) >> 4) >>
2))) ^ ((((((0xff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
)) >> 4))) - 1) & ((((((0xff) >> 16)) >>
4)))) ^ ((((((0xff) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >> 16))
)) - 1) & (((((0xff) >> 16))))) ^ (((((0xff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff
) >> 16))) >> 2)) - 1) & ((((((0xff) >>
16))) >> 2))) ^ ((((((0xff) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)
>> 16))))) - 1) & ((((((0xff) >> 16)))))) ^ (
(((((0xff) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0xff))) - 1) & (((0xff)))) ^ (((0xff
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff)) >>
8)) - 1) & ((((0xff)) >> 8))) ^ ((((0xff)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff)) >>
8) >> 4)) - 1) & (((((0xff)) >> 8) >> 4
))) ^ (((((0xff)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff)) >> 8) >> 4)
>> 2)) - 1) & ((((((0xff)) >> 8) >> 4)
>> 2))) ^ ((((((0xff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)) >> 8) >> 4))) - 1) & ((((((0xff)) >>
8) >> 4)))) ^ ((((((0xff)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff)) >>
8))) - 1) & (((((0xff)) >> 8)))) ^ (((((0xff)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))
>> 8)) >> 2)) - 1) & ((((((0xff)) >> 8
)) >> 2))) ^ ((((((0xff)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8
)))) - 1) & ((((((0xff)) >> 8))))) ^ ((((((0xff)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff)))) - 1) & ((((0xff))))) ^ ((((0xff)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1)
& (((((0xff))) >> 4))) ^ (((((0xff))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >>
4) >> 2)) - 1) & ((((((0xff))) >> 4) >>
2))) ^ ((((((0xff))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))) >> 4)))
- 1) & ((((((0xff))) >> 4)))) ^ ((((((0xff))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff
))))) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1
) & ((((((0xff)))) >> 2))) ^ ((((((0xff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)))))) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
|
1840 LSHIFT(addr & 0x7f, ATW_BBPCTL_ADDR_MASK)((addr & 0x7f) << ((((u_long)((((((0xff00)) - 1) &
((0xff00))) ^ ((0xff00)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff00) >> 16)) - 1) & (((0xff00) >> 16
))) ^ (((0xff00) >> 16)))) >> (8)) != 0) ? 8 + ((
((u_long)((((((((0xff00) >> 16) >> 8)) - 1) &
((((0xff00) >> 16) >> 8))) ^ ((((0xff00) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xff00) >> 16) >> 8) >> 4)) - 1) &
(((((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
1841
1842 for (i = 10; --i >= 0; ) {
1843 ATW_WRITE(sc, ATW_BBPCTL, reg)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x60)), ((reg
))))
;
1844 DELAY(2000)(*delay_func)(2000);
1845 if (ATW_ISSET(sc, ATW_BBPCTL, ATW_BBPCTL_WR)(((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x60))
))) & ((1<<17)))
== 0)
1846 break;
1847 }
1848
1849 if (i < 0) {
1850 printf("%s: BBPCTL still busy\n", sc->sc_dev.dv_xname);
1851 return ETIMEDOUT60;
1852 }
1853 return 0;
1854}
1855
1856/* Read a register on the RF3000 baseband processor using the registers
1857 * the ADM8211 provides for this purpose.
1858 *
1859 * The 7-bit register address is addr. Record the 8-bit data in the register
1860 * in *val.
1861 *
1862 * Return 0 on success.
1863 *
1864 * XXX This does not seem to work. The ADM8211 must require more or
1865 * different magic to read the chip than to write it. Possibly some
1866 * of the magic I have derived from a binary-only driver concerns
1867 * the "chip address" (see the RF3000 manual).
1868 */
1869#ifdef ATW_BBPDEBUG
1870int
1871atw_rf3000_read(struct atw_softc *sc, u_int addr, u_int *val)
1872{
1873 u_int32_t reg;
1874 int i;
1875
1876 for (i = 1000; --i >= 0; ) {
1877 if (ATW_ISSET(sc, ATW_BBPCTL, ATW_BBPCTL_RD|ATW_BBPCTL_WR)(((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x60))
))) & ((1<<16)|(1<<17)))
== 0)
1878 break;
1879 DELAY(100)(*delay_func)(100);
1880 }
1881
1882 if (i < 0) {
1883 printf("%s: start atw_rf3000_read, BBPCTL busy\n",
1884 sc->sc_dev.dv_xname);
1885 return ETIMEDOUT60;
1886 }
1887
1888 reg = sc->sc_bbpctl_rd | LSHIFT(addr & 0x7f, ATW_BBPCTL_ADDR_MASK)((addr & 0x7f) << ((((u_long)((((((0xff00)) - 1) &
((0xff00))) ^ ((0xff00)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff00) >> 16)) - 1) & (((0xff00) >> 16
))) ^ (((0xff00) >> 16)))) >> (8)) != 0) ? 8 + ((
((u_long)((((((((0xff00) >> 16) >> 8)) - 1) &
((((0xff00) >> 16) >> 8))) ^ ((((0xff00) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xff00) >> 16) >> 8) >> 4)) - 1) &
(((((0xff00) >> 16) >> 8) >> 4))) ^ (((((0xff00
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff00) >> 16) >> 8) >>
4))) - 1) & ((((((0xff00) >> 16) >> 8) >>
4)))) ^ ((((((0xff00) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16) >> 8))) - 1) & (((((0xff00) >>
16) >> 8)))) ^ (((((0xff00) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff00) >>
16) >> 8)) >> 2))) ^ ((((((0xff00) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16) >> 8)))) - 1) & (((
(((0xff00) >> 16) >> 8))))) ^ ((((((0xff00) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00) >> 16))) - 1) & ((((0xff00) >>
16)))) ^ ((((0xff00) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00) >> 16)) >> 4)) - 1
) & (((((0xff00) >> 16)) >> 4))) ^ (((((0xff00
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xff00) >> 16)) >> 4) >>
2))) ^ ((((((0xff00) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16)) >> 4))) - 1) & ((((((0xff00) >>
16)) >> 4)))) ^ ((((((0xff00) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00
) >> 16)))) - 1) & (((((0xff00) >> 16))))) ^ (
((((0xff00) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00) >> 16))) >> 2)) - 1) & (((
(((0xff00) >> 16))) >> 2))) ^ ((((((0xff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff00) >> 16))))) - 1) & ((((((0xff00) >>
16)))))) ^ ((((((0xff00) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00
)))) ^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8
))) ^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) &
(((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
1889
1890 ATW_WRITE(sc, ATW_BBPCTL, reg)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x60)), ((reg
))))
;
1891
1892 for (i = 1000; --i >= 0; ) {
1893 DELAY(100)(*delay_func)(100);
1894 if (ATW_ISSET(sc, ATW_BBPCTL, ATW_BBPCTL_RD)(((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x60))
))) & ((1<<16)))
== 0)
1895 break;
1896 }
1897
1898 ATW_CLR(sc, ATW_BBPCTL, ATW_BBPCTL_RD)((((sc))->sc_st)->write_4((((sc))->sc_sh), (((0x60))
), ((((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x60
))))) & ~((1<<16))))))
;
1899
1900 if (i < 0) {
1901 printf("%s: atw_rf3000_read wrote %08x; BBPCTL still busy\n",
1902 sc->sc_dev.dv_xname, reg);
1903 return ETIMEDOUT60;
1904 }
1905 if (val != NULL((void *)0))
1906 *val = MASK_AND_RSHIFT(reg, ATW_BBPCTL_DATA_MASK)(((reg) & (0xff)) >> ((((u_long)((((((0xff)) - 1) &
((0xff))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff) >> 16)) - 1) & (((0xff) >> 16))
) ^ (((0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff) >> 16) >> 8)) - 1) & ((((0xff)
>> 16) >> 8))) ^ ((((0xff) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >>
16) >> 8) >> 4)) - 1) & (((((0xff) >> 16
) >> 8) >> 4))) ^ (((((0xff) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff) >> 16) >> 8) >> 4) >> 2)) -
1) & ((((((0xff) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0xff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff
) >> 16) >> 8) >> 4)))) ^ ((((((0xff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff) >> 16) >> 8))) - 1)
& (((((0xff) >> 16) >> 8)))) ^ (((((0xff) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16) >> 8)) >> 2)) - 1) &
((((((0xff) >> 16) >> 8)) >> 2))) ^ ((((((
0xff) >> 16) >> 8)) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16) >>
8)))) - 1) & ((((((0xff) >> 16) >> 8))))) ^ (
(((((0xff) >> 16) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff) >> 16))) - 1) &
((((0xff) >> 16)))) ^ ((((0xff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16)) >>
4)) - 1) & (((((0xff) >> 16)) >> 4))) ^ ((((
(0xff) >> 16)) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)((((((((((0xff) >> 16)) >> 4) >>
2)) - 1) & ((((((0xff) >> 16)) >> 4) >>
2))) ^ ((((((0xff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
)) >> 4))) - 1) & ((((((0xff) >> 16)) >>
4)))) ^ ((((((0xff) >> 16)) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff) >> 16))
)) - 1) & (((((0xff) >> 16))))) ^ (((((0xff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff
) >> 16))) >> 2)) - 1) & ((((((0xff) >>
16))) >> 2))) ^ ((((((0xff) >> 16))) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)
>> 16))))) - 1) & ((((((0xff) >> 16)))))) ^ (
(((((0xff) >> 16))))))) >> (1)) != 0) ? 1 : 0))))
: ((((u_long)(((((((0xff))) - 1) & (((0xff)))) ^ (((0xff
))))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff)) >>
8)) - 1) & ((((0xff)) >> 8))) ^ ((((0xff)) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff)) >>
8) >> 4)) - 1) & (((((0xff)) >> 8) >> 4
))) ^ (((((0xff)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff)) >> 8) >> 4)
>> 2)) - 1) & ((((((0xff)) >> 8) >> 4)
>> 2))) ^ ((((((0xff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)) >> 8) >> 4))) - 1) & ((((((0xff)) >>
8) >> 4)))) ^ ((((((0xff)) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff)) >>
8))) - 1) & (((((0xff)) >> 8)))) ^ (((((0xff)) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))
>> 8)) >> 2)) - 1) & ((((((0xff)) >> 8
)) >> 2))) ^ ((((((0xff)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8
)))) - 1) & ((((((0xff)) >> 8))))) ^ ((((((0xff)) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff)))) - 1) & ((((0xff))))) ^ ((((0xff)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1)
& (((((0xff))) >> 4))) ^ (((((0xff))) >> 4))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >>
4) >> 2)) - 1) & ((((((0xff))) >> 4) >>
2))) ^ ((((((0xff))) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))) >> 4)))
- 1) & ((((((0xff))) >> 4)))) ^ ((((((0xff))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff
))))) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1
) & ((((((0xff)))) >> 2))) ^ ((((((0xff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff
)))))) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
1907 return 0;
1908}
1909#endif /* ATW_BBPDEBUG */
1910
1911/* Write a register on the Si4126 RF/IF synthesizer using the registers
1912 * provided by the ADM8211 for that purpose.
1913 *
1914 * val is 18 bits of data, and val is the 4-bit address of the register.
1915 *
1916 * Return 0 on success.
1917 */
1918void
1919atw_si4126_write(struct atw_softc *sc, u_int addr, u_int val)
1920{
1921 uint32_t bits, mask, reg;
1922 int nbits;
1923
1924 if (sc->sc_rev >= ATW_REVISION_BA) {
1925 nbits = 24;
1926
1927 val &= 0x3ffff;
1928 addr &= 0x1f;
1929 bits = val | (addr << 18);
1930 } else {
1931 nbits = 22;
1932
1933 KASSERT((addr & ~PRESHIFT(SI4126_TWI_ADDR_MASK)) == 0)(((addr & ~((((0xf)) & ((0xf))) >> ((((u_long)(
((((((0xf))) - 1) & (((0xf)))) ^ (((0xf))))) >> (16
)) != 0) ? 16 + ((((u_long)((((((((0xf)) >> 16)) - 1) &
((((0xf)) >> 16))) ^ ((((0xf)) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)(((((((((0xf)) >> 16) >>
8)) - 1) & (((((0xf)) >> 16) >> 8))) ^ (((((
0xf)) >> 16) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)((((((((((0xf)) >> 16) >> 8) >> 4
)) - 1) & ((((((0xf)) >> 16) >> 8) >> 4
))) ^ ((((((0xf)) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)(((((((((((0xf)) >> 16) >>
8) >> 4) >> 2)) - 1) & (((((((0xf)) >>
16) >> 8) >> 4) >> 2))) ^ (((((((0xf)) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)(((((((((((0xf)) >> 16) >>
8) >> 4))) - 1) & (((((((0xf)) >> 16) >>
8) >> 4)))) ^ (((((((0xf)) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)((((((((((
0xf)) >> 16) >> 8))) - 1) & ((((((0xf)) >>
16) >> 8)))) ^ ((((((0xf)) >> 16) >> 8))))
) >> (2)) != 0) ? 2 + ((((u_long)(((((((((((0xf)) >>
16) >> 8)) >> 2)) - 1) & (((((((0xf)) >>
16) >> 8)) >> 2))) ^ (((((((0xf)) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)(((((((((((0xf)) >> 16) >> 8)))) - 1) & ((((
(((0xf)) >> 16) >> 8))))) ^ (((((((0xf)) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)(((((((((0xf)) >> 16))) - 1) & (((((0xf)) >>
16)))) ^ (((((0xf)) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)((((((((((0xf)) >> 16)) >> 4)) - 1)
& ((((((0xf)) >> 16)) >> 4))) ^ ((((((0xf)) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
((((((((0xf)) >> 16)) >> 4) >> 2)) - 1) &
(((((((0xf)) >> 16)) >> 4) >> 2))) ^ (((((
((0xf)) >> 16)) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)(((((((((((0xf)) >> 16)) >>
4))) - 1) & (((((((0xf)) >> 16)) >> 4)))) ^ (
((((((0xf)) >> 16)) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)((((((((((0xf)) >> 16)))) - 1) &
((((((0xf)) >> 16))))) ^ ((((((0xf)) >> 16))))))
>> (2)) != 0) ? 2 + ((((u_long)(((((((((((0xf)) >>
16))) >> 2)) - 1) & (((((((0xf)) >> 16))) >>
2))) ^ (((((((0xf)) >> 16))) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((0xf)) >> 16)
)))) - 1) & (((((((0xf)) >> 16)))))) ^ (((((((0xf))
>> 16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long
)((((((((0xf)))) - 1) & ((((0xf))))) ^ ((((0xf)))))) >>
(8)) != 0) ? 8 + ((((u_long)(((((((((0xf))) >> 8)) - 1
) & (((((0xf))) >> 8))) ^ (((((0xf))) >> 8)))
) >> (4)) != 0) ? 4 + ((((u_long)((((((((((0xf))) >>
8) >> 4)) - 1) & ((((((0xf))) >> 8) >>
4))) ^ ((((((0xf))) >> 8) >> 4)))) >> (2))
!= 0) ? 2 + ((((u_long)(((((((((((0xf))) >> 8) >>
4) >> 2)) - 1) & (((((((0xf))) >> 8) >>
4) >> 2))) ^ (((((((0xf))) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((0xf
))) >> 8) >> 4))) - 1) & (((((((0xf))) >>
8) >> 4)))) ^ (((((((0xf))) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)((((((((((0xf)))
>> 8))) - 1) & ((((((0xf))) >> 8)))) ^ (((((
(0xf))) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)
(((((((((((0xf))) >> 8)) >> 2)) - 1) & ((((((
(0xf))) >> 8)) >> 2))) ^ (((((((0xf))) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
((((((((((0xf))) >> 8)))) - 1) & (((((((0xf))) >>
8))))) ^ (((((((0xf))) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)(((((((((0xf))))) - 1) & (((((0xf)
))))) ^ (((((0xf))))))) >> (4)) != 0) ? 4 + ((((u_long)
((((((((((0xf)))) >> 4)) - 1) & ((((((0xf)))) >>
4))) ^ ((((((0xf)))) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)(((((((((((0xf)))) >> 4) >> 2)) - 1) &
(((((((0xf)))) >> 4) >> 2))) ^ (((((((0xf)))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
(((((((((((0xf)))) >> 4))) - 1) & (((((((0xf)))) >>
4)))) ^ (((((((0xf)))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)((((((((((0xf)))))) - 1) & ((((((0xf
))))))) ^ ((((((0xf)))))))) >> (2)) != 0) ? 2 + ((((u_long
)(((((((((((0xf))))) >> 2)) - 1) & (((((((0xf))))) >>
2))) ^ (((((((0xf))))) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)(((((((((((0xf))))))) - 1) & (((((((0xf
)))))))) ^ (((((((0xf))))))))) >> (1)) != 0) ? 1 : 0)))
)))) == 0) ? (void)0 : __assert("diagnostic ", "/usr/src/sys/dev/ic/atw.c"
, 1933, "(addr & ~PRESHIFT(SI4126_TWI_ADDR_MASK)) == 0"))
;
1934 KASSERT((val & ~PRESHIFT(SI4126_TWI_DATA_MASK)) == 0)(((val & ~((((0x3ffff0)) & ((0x3ffff0))) >> (((
(u_long)(((((((0x3ffff0))) - 1) & (((0x3ffff0)))) ^ (((0x3ffff0
))))) >> (16)) != 0) ? 16 + ((((u_long)((((((((0x3ffff0
)) >> 16)) - 1) & ((((0x3ffff0)) >> 16))) ^ (
(((0x3ffff0)) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)(((((((((0x3ffff0)) >> 16) >> 8)) - 1) & (((
((0x3ffff0)) >> 16) >> 8))) ^ (((((0x3ffff0)) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
((((((0x3ffff0)) >> 16) >> 8) >> 4)) - 1) &
((((((0x3ffff0)) >> 16) >> 8) >> 4))) ^ ((
((((0x3ffff0)) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)(((((((((((0x3ffff0)) >> 16
) >> 8) >> 4) >> 2)) - 1) & (((((((0x3ffff0
)) >> 16) >> 8) >> 4) >> 2))) ^ (((((
((0x3ffff0)) >> 16) >> 8) >> 4) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((0x3ffff0
)) >> 16) >> 8) >> 4))) - 1) & (((((((0x3ffff0
)) >> 16) >> 8) >> 4)))) ^ (((((((0x3ffff0)
) >> 16) >> 8) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)((((((((((0x3ffff0)) >> 16) >>
8))) - 1) & ((((((0x3ffff0)) >> 16) >> 8))))
^ ((((((0x3ffff0)) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)(((((((((((0x3ffff0)) >> 16) >>
8)) >> 2)) - 1) & (((((((0x3ffff0)) >> 16) >>
8)) >> 2))) ^ (((((((0x3ffff0)) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
((((((((((0x3ffff0)) >> 16) >> 8)))) - 1) & (
((((((0x3ffff0)) >> 16) >> 8))))) ^ (((((((0x3ffff0
)) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0)
)) : ((((u_long)(((((((((0x3ffff0)) >> 16))) - 1) &
(((((0x3ffff0)) >> 16)))) ^ (((((0x3ffff0)) >> 16
))))) >> (4)) != 0) ? 4 + ((((u_long)((((((((((0x3ffff0
)) >> 16)) >> 4)) - 1) & ((((((0x3ffff0)) >>
16)) >> 4))) ^ ((((((0x3ffff0)) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((((((0x3ffff0
)) >> 16)) >> 4) >> 2)) - 1) & (((((((0x3ffff0
)) >> 16)) >> 4) >> 2))) ^ (((((((0x3ffff0)
) >> 16)) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)(((((((((((0x3ffff0)) >> 16)) >>
4))) - 1) & (((((((0x3ffff0)) >> 16)) >> 4))
)) ^ (((((((0x3ffff0)) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)((((((((((0x3ffff0)) >>
16)))) - 1) & ((((((0x3ffff0)) >> 16))))) ^ ((((((
0x3ffff0)) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)(((((((((((0x3ffff0)) >> 16))) >> 2)) - 1) &
(((((((0x3ffff0)) >> 16))) >> 2))) ^ (((((((0x3ffff0
)) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)(((((((((((0x3ffff0)) >> 16))))) - 1) &
(((((((0x3ffff0)) >> 16)))))) ^ (((((((0x3ffff0)) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
(((0x3ffff0)))) - 1) & ((((0x3ffff0))))) ^ ((((0x3ffff0))
)))) >> (8)) != 0) ? 8 + ((((u_long)(((((((((0x3ffff0))
) >> 8)) - 1) & (((((0x3ffff0))) >> 8))) ^ ((
(((0x3ffff0))) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)((((((((((0x3ffff0))) >> 8) >> 4)) - 1) & ((
((((0x3ffff0))) >> 8) >> 4))) ^ ((((((0x3ffff0)))
>> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)(((((((((((0x3ffff0))) >> 8) >> 4) >> 2)) -
1) & (((((((0x3ffff0))) >> 8) >> 4) >>
2))) ^ (((((((0x3ffff0))) >> 8) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((0x3ffff0
))) >> 8) >> 4))) - 1) & (((((((0x3ffff0))) >>
8) >> 4)))) ^ (((((((0x3ffff0))) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)((((((((((0x3ffff0
))) >> 8))) - 1) & ((((((0x3ffff0))) >> 8))))
^ ((((((0x3ffff0))) >> 8))))) >> (2)) != 0) ? 2 +
((((u_long)(((((((((((0x3ffff0))) >> 8)) >> 2)) -
1) & (((((((0x3ffff0))) >> 8)) >> 2))) ^ (((
((((0x3ffff0))) >> 8)) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)(((((((((((0x3ffff0))) >> 8))))
- 1) & (((((((0x3ffff0))) >> 8))))) ^ (((((((0x3ffff0
))) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)(((((((((0x3ffff0))))) - 1) & (((((0x3ffff0)))))) ^ ((((
(0x3ffff0))))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
(((0x3ffff0)))) >> 4)) - 1) & ((((((0x3ffff0)))) >>
4))) ^ ((((((0x3ffff0)))) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)(((((((((((0x3ffff0)))) >> 4) >>
2)) - 1) & (((((((0x3ffff0)))) >> 4) >> 2)))
^ (((((((0x3ffff0)))) >> 4) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)(((((((((((0x3ffff0)))) >>
4))) - 1) & (((((((0x3ffff0)))) >> 4)))) ^ (((((((
0x3ffff0)))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : (
(((u_long)((((((((((0x3ffff0)))))) - 1) & ((((((0x3ffff0)
)))))) ^ ((((((0x3ffff0)))))))) >> (2)) != 0) ? 2 + (((
(u_long)(((((((((((0x3ffff0))))) >> 2)) - 1) & ((((
(((0x3ffff0))))) >> 2))) ^ (((((((0x3ffff0))))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((0x3ffff0
))))))) - 1) & (((((((0x3ffff0)))))))) ^ (((((((0x3ffff0)
)))))))) >> (1)) != 0) ? 1 : 0))))))) == 0) ? (void)0 :
__assert("diagnostic ", "/usr/src/sys/dev/ic/atw.c", 1934, "(val & ~PRESHIFT(SI4126_TWI_DATA_MASK)) == 0"
))
;
1935
1936 bits = LSHIFT(val, SI4126_TWI_DATA_MASK)((val) << ((((u_long)((((((0x3ffff0)) - 1) & ((0x3ffff0
))) ^ ((0x3ffff0)))) >> (16)) != 0) ? 16 + ((((u_long)(
((((((0x3ffff0) >> 16)) - 1) & (((0x3ffff0) >>
16))) ^ (((0x3ffff0) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0x3ffff0) >> 16) >> 8)) - 1
) & ((((0x3ffff0) >> 16) >> 8))) ^ ((((0x3ffff0
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x3ffff0) >> 16) >> 8) >> 4)) - 1
) & (((((0x3ffff0) >> 16) >> 8) >> 4)))
^ (((((0x3ffff0) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3ffff0) >> 16)
>> 8) >> 4) >> 2)) - 1) & ((((((0x3ffff0
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x3ffff0) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3ffff0
) >> 16) >> 8) >> 4))) - 1) & ((((((0x3ffff0
) >> 16) >> 8) >> 4)))) ^ ((((((0x3ffff0) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x3ffff0) >> 16) >> 8))) -
1) & (((((0x3ffff0) >> 16) >> 8)))) ^ (((((0x3ffff0
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3ffff0) >> 16) >> 8)) >>
2)) - 1) & ((((((0x3ffff0) >> 16) >> 8)) >>
2))) ^ ((((((0x3ffff0) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3ffff0
) >> 16) >> 8)))) - 1) & ((((((0x3ffff0) >>
16) >> 8))))) ^ ((((((0x3ffff0) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3ffff0
) >> 16))) - 1) & ((((0x3ffff0) >> 16)))) ^ (
(((0x3ffff0) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x3ffff0) >> 16)) >> 4)) - 1) & (((
((0x3ffff0) >> 16)) >> 4))) ^ (((((0x3ffff0) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x3ffff0) >> 16)) >> 4) >> 2)) - 1) &
((((((0x3ffff0) >> 16)) >> 4) >> 2))) ^ ((
((((0x3ffff0) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3ffff0) >>
16)) >> 4))) - 1) & ((((((0x3ffff0) >> 16)) >>
4)))) ^ ((((((0x3ffff0) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3ffff0) >>
16)))) - 1) & (((((0x3ffff0) >> 16))))) ^ (((((0x3ffff0
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3ffff0) >> 16))) >> 2)) - 1) & ((((((
0x3ffff0) >> 16))) >> 2))) ^ ((((((0x3ffff0) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3ffff0) >> 16))))) - 1) & ((((((0x3ffff0
) >> 16)))))) ^ ((((((0x3ffff0) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3ffff0))) - 1) &
(((0x3ffff0)))) ^ (((0x3ffff0))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0x3ffff0)) >> 8)) - 1) & ((((0x3ffff0
)) >> 8))) ^ ((((0x3ffff0)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x3ffff0)) >> 8) >>
4)) - 1) & (((((0x3ffff0)) >> 8) >> 4))) ^ (
((((0x3ffff0)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x3ffff0)) >> 8) >> 4
) >> 2)) - 1) & ((((((0x3ffff0)) >> 8) >>
4) >> 2))) ^ ((((((0x3ffff0)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3ffff0
)) >> 8) >> 4))) - 1) & ((((((0x3ffff0)) >>
8) >> 4)))) ^ ((((((0x3ffff0)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3ffff0
)) >> 8))) - 1) & (((((0x3ffff0)) >> 8)))) ^ (
((((0x3ffff0)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3ffff0)) >> 8)) >> 2)) - 1) &
((((((0x3ffff0)) >> 8)) >> 2))) ^ ((((((0x3ffff0
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x3ffff0)) >> 8)))) - 1) & ((
((((0x3ffff0)) >> 8))))) ^ ((((((0x3ffff0)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3ffff0
)))) - 1) & ((((0x3ffff0))))) ^ ((((0x3ffff0)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x3ffff0))) >> 4)
) - 1) & (((((0x3ffff0))) >> 4))) ^ (((((0x3ffff0))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x3ffff0))) >> 4) >> 2)) - 1) & ((((((0x3ffff0
))) >> 4) >> 2))) ^ ((((((0x3ffff0))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3ffff0))) >> 4))) - 1) & ((((((0x3ffff0)))
>> 4)))) ^ ((((((0x3ffff0))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3ffff0))))) - 1) &
(((((0x3ffff0)))))) ^ (((((0x3ffff0))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x3ffff0)))) >> 2)) - 1) &
((((((0x3ffff0)))) >> 2))) ^ ((((((0x3ffff0)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3ffff0
)))))) - 1) & ((((((0x3ffff0))))))) ^ ((((((0x3ffff0)))))
))) >> (1)) != 0) ? 1 : 0))))))
|
1937 LSHIFT(addr, SI4126_TWI_ADDR_MASK)((addr) << ((((u_long)((((((0xf)) - 1) & ((0xf))) ^
((0xf)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xf)
>> 16)) - 1) & (((0xf) >> 16))) ^ (((0xf) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xf) >>
16) >> 8)) - 1) & ((((0xf) >> 16) >> 8
))) ^ ((((0xf) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xf) >> 16) >> 8) >>
4)) - 1) & (((((0xf) >> 16) >> 8) >> 4
))) ^ (((((0xf) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xf) >> 16
) >> 8) >> 4) >> 2))) ^ ((((((0xf) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xf) >> 16) >> 8
) >> 4))) - 1) & ((((((0xf) >> 16) >> 8
) >> 4)))) ^ ((((((0xf) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf
) >> 16) >> 8))) - 1) & (((((0xf) >> 16
) >> 8)))) ^ (((((0xf) >> 16) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf) >> 16) >>
8)) >> 2)) - 1) & ((((((0xf) >> 16) >>
8)) >> 2))) ^ ((((((0xf) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf
) >> 16) >> 8)))) - 1) & ((((((0xf) >> 16
) >> 8))))) ^ ((((((0xf) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf) >> 16)
)) - 1) & ((((0xf) >> 16)))) ^ ((((0xf) >> 16
))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf) >>
16)) >> 4)) - 1) & (((((0xf) >> 16)) >>
4))) ^ (((((0xf) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xf) >> 16)) >> 4)
>> 2)) - 1) & ((((((0xf) >> 16)) >> 4)
>> 2))) ^ ((((((0xf) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf
) >> 16)) >> 4))) - 1) & ((((((0xf) >> 16
)) >> 4)))) ^ ((((((0xf) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf) >> 16)
))) - 1) & (((((0xf) >> 16))))) ^ (((((0xf) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf)
>> 16))) >> 2)) - 1) & ((((((0xf) >> 16
))) >> 2))) ^ ((((((0xf) >> 16))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf) >> 16)
)))) - 1) & ((((((0xf) >> 16)))))) ^ ((((((0xf) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xf))) - 1) & (((0xf)))) ^ (((0xf))))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xf)) >> 8)) - 1) & ((
((0xf)) >> 8))) ^ ((((0xf)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xf)) >> 8) >> 4
)) - 1) & (((((0xf)) >> 8) >> 4))) ^ (((((0xf
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf)) >> 8) >> 4) >> 2)) - 1) &
((((((0xf)) >> 8) >> 4) >> 2))) ^ ((((((0xf
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xf)) >> 8) >> 4
))) - 1) & ((((((0xf)) >> 8) >> 4)))) ^ (((((
(0xf)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0
)) : ((((u_long)(((((((((0xf)) >> 8))) - 1) & (((((
0xf)) >> 8)))) ^ (((((0xf)) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xf)) >> 8)) >>
2)) - 1) & ((((((0xf)) >> 8)) >> 2))) ^ ((((
((0xf)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xf)) >> 8)))) - 1) & ((
((((0xf)) >> 8))))) ^ ((((((0xf)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf)))) - 1) &
((((0xf))))) ^ ((((0xf)))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf))) >> 4)) - 1) & (((((0xf))) >>
4))) ^ (((((0xf))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf))) >> 4) >> 2)) - 1) &
((((((0xf))) >> 4) >> 2))) ^ ((((((0xf))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf))) >> 4))) - 1) & ((((((0xf))) >>
4)))) ^ ((((((0xf))) >> 4))))) >> (1)) != 0) ? 1
: 0)) : ((((u_long)(((((((((0xf))))) - 1) & (((((0xf))))
)) ^ (((((0xf))))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xf)))) >> 2)) - 1) & ((((((0xf)))) >>
2))) ^ ((((((0xf)))) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xf)))))) - 1) & ((((((0xf))))
))) ^ ((((((0xf)))))))) >> (1)) != 0) ? 1 : 0))))))
;
1938 }
1939
1940 reg = ATW_SYNRF_SELSYN(1<<31);
1941 /* reference driver: reset Si4126 serial bus to initial
1942 * conditions?
1943 */
1944 ATW_WRITE(sc, ATW_SYNRF, reg | ATW_SYNRF_LEIF)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((reg
| (1<<28)))))
;
1945 ATW_WRITE(sc, ATW_SYNRF, reg)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((reg
))))
;
1946
1947 for (mask = (1 << (nbits - 1)); mask != 0; mask >>= 1) {
1948 if ((bits & mask) != 0)
1949 reg |= ATW_SYNRF_SYNDATA(1<<26);
1950 else
1951 reg &= ~ATW_SYNRF_SYNDATA(1<<26);
1952 ATW_WRITE(sc, ATW_SYNRF, reg)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((reg
))))
;
1953 ATW_WRITE(sc, ATW_SYNRF, reg | ATW_SYNRF_SYNCLK)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((reg
| (1<<27)))))
;
1954 ATW_WRITE(sc, ATW_SYNRF, reg)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((reg
))))
;
1955 }
1956 ATW_WRITE(sc, ATW_SYNRF, reg | ATW_SYNRF_LEIF)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((reg
| (1<<28)))))
;
1957 ATW_WRITE(sc, ATW_SYNRF, 0x0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC4)), ((0x0
))))
;
1958}
1959
1960/* Read 18-bit data from the 4-bit address addr in Si4126
1961 * RF synthesizer and write the data to *val. Return 0 on success.
1962 *
1963 * XXX This does not seem to work. The ADM8211 must require more or
1964 * different magic to read the chip than to write it.
1965 */
1966#ifdef ATW_SYNDEBUG
1967int
1968atw_si4126_read(struct atw_softc *sc, u_int addr, u_int *val)
1969{
1970 u_int32_t reg;
1971 int i;
1972
1973 KASSERT((addr & ~PRESHIFT(SI4126_TWI_ADDR_MASK)) == 0)(((addr & ~((((0xf)) & ((0xf))) >> ((((u_long)(
((((((0xf))) - 1) & (((0xf)))) ^ (((0xf))))) >> (16
)) != 0) ? 16 + ((((u_long)((((((((0xf)) >> 16)) - 1) &
((((0xf)) >> 16))) ^ ((((0xf)) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)(((((((((0xf)) >> 16) >>
8)) - 1) & (((((0xf)) >> 16) >> 8))) ^ (((((
0xf)) >> 16) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)((((((((((0xf)) >> 16) >> 8) >> 4
)) - 1) & ((((((0xf)) >> 16) >> 8) >> 4
))) ^ ((((((0xf)) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)(((((((((((0xf)) >> 16) >>
8) >> 4) >> 2)) - 1) & (((((((0xf)) >>
16) >> 8) >> 4) >> 2))) ^ (((((((0xf)) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)(((((((((((0xf)) >> 16) >>
8) >> 4))) - 1) & (((((((0xf)) >> 16) >>
8) >> 4)))) ^ (((((((0xf)) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)((((((((((
0xf)) >> 16) >> 8))) - 1) & ((((((0xf)) >>
16) >> 8)))) ^ ((((((0xf)) >> 16) >> 8))))
) >> (2)) != 0) ? 2 + ((((u_long)(((((((((((0xf)) >>
16) >> 8)) >> 2)) - 1) & (((((((0xf)) >>
16) >> 8)) >> 2))) ^ (((((((0xf)) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)(((((((((((0xf)) >> 16) >> 8)))) - 1) & ((((
(((0xf)) >> 16) >> 8))))) ^ (((((((0xf)) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)(((((((((0xf)) >> 16))) - 1) & (((((0xf)) >>
16)))) ^ (((((0xf)) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)((((((((((0xf)) >> 16)) >> 4)) - 1)
& ((((((0xf)) >> 16)) >> 4))) ^ ((((((0xf)) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
((((((((0xf)) >> 16)) >> 4) >> 2)) - 1) &
(((((((0xf)) >> 16)) >> 4) >> 2))) ^ (((((
((0xf)) >> 16)) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)(((((((((((0xf)) >> 16)) >>
4))) - 1) & (((((((0xf)) >> 16)) >> 4)))) ^ (
((((((0xf)) >> 16)) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)((((((((((0xf)) >> 16)))) - 1) &
((((((0xf)) >> 16))))) ^ ((((((0xf)) >> 16))))))
>> (2)) != 0) ? 2 + ((((u_long)(((((((((((0xf)) >>
16))) >> 2)) - 1) & (((((((0xf)) >> 16))) >>
2))) ^ (((((((0xf)) >> 16))) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((0xf)) >> 16)
)))) - 1) & (((((((0xf)) >> 16)))))) ^ (((((((0xf))
>> 16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long
)((((((((0xf)))) - 1) & ((((0xf))))) ^ ((((0xf)))))) >>
(8)) != 0) ? 8 + ((((u_long)(((((((((0xf))) >> 8)) - 1
) & (((((0xf))) >> 8))) ^ (((((0xf))) >> 8)))
) >> (4)) != 0) ? 4 + ((((u_long)((((((((((0xf))) >>
8) >> 4)) - 1) & ((((((0xf))) >> 8) >>
4))) ^ ((((((0xf))) >> 8) >> 4)))) >> (2))
!= 0) ? 2 + ((((u_long)(((((((((((0xf))) >> 8) >>
4) >> 2)) - 1) & (((((((0xf))) >> 8) >>
4) >> 2))) ^ (((((((0xf))) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((((((((((0xf
))) >> 8) >> 4))) - 1) & (((((((0xf))) >>
8) >> 4)))) ^ (((((((0xf))) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)((((((((((0xf)))
>> 8))) - 1) & ((((((0xf))) >> 8)))) ^ (((((
(0xf))) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)
(((((((((((0xf))) >> 8)) >> 2)) - 1) & ((((((
(0xf))) >> 8)) >> 2))) ^ (((((((0xf))) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
((((((((((0xf))) >> 8)))) - 1) & (((((((0xf))) >>
8))))) ^ (((((((0xf))) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)(((((((((0xf))))) - 1) & (((((0xf)
))))) ^ (((((0xf))))))) >> (4)) != 0) ? 4 + ((((u_long)
((((((((((0xf)))) >> 4)) - 1) & ((((((0xf)))) >>
4))) ^ ((((((0xf)))) >> 4)))) >> (2)) != 0) ? 2 +
((((u_long)(((((((((((0xf)))) >> 4) >> 2)) - 1) &
(((((((0xf)))) >> 4) >> 2))) ^ (((((((0xf)))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
(((((((((((0xf)))) >> 4))) - 1) & (((((((0xf)))) >>
4)))) ^ (((((((0xf)))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)((((((((((0xf)))))) - 1) & ((((((0xf
))))))) ^ ((((((0xf)))))))) >> (2)) != 0) ? 2 + ((((u_long
)(((((((((((0xf))))) >> 2)) - 1) & (((((((0xf))))) >>
2))) ^ (((((((0xf))))) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)(((((((((((0xf))))))) - 1) & (((((((0xf
)))))))) ^ (((((((0xf))))))))) >> (1)) != 0) ? 1 : 0)))
)))) == 0) ? (void)0 : __assert("diagnostic ", "/usr/src/sys/dev/ic/atw.c"
, 1973, "(addr & ~PRESHIFT(SI4126_TWI_ADDR_MASK)) == 0"))
;
1974
1975 for (i = 1000; --i >= 0; ) {
1976 if (ATW_ISSET(sc, ATW_SYNCTL, ATW_SYNCTL_RD|ATW_SYNCTL_WR)(((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x64))
))) & ((1<<30)|(1<<31)))
== 0)
1977 break;
1978 DELAY(100)(*delay_func)(100);
1979 }
1980
1981 if (i < 0) {
1982 printf("%s: start atw_si4126_read, SYNCTL busy\n",
1983 sc->sc_dev.dv_xname);
1984 return ETIMEDOUT60;
1985 }
1986
1987 reg = sc->sc_synctl_rd | LSHIFT(addr, ATW_SYNCTL_DATA_MASK)((addr) << ((((u_long)((((((0x3fffff)) - 1) & ((0x3fffff
))) ^ ((0x3fffff)))) >> (16)) != 0) ? 16 + ((((u_long)(
((((((0x3fffff) >> 16)) - 1) & (((0x3fffff) >>
16))) ^ (((0x3fffff) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0x3fffff) >> 16) >> 8)) - 1
) & ((((0x3fffff) >> 16) >> 8))) ^ ((((0x3fffff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x3fffff) >> 16) >> 8) >> 4)) - 1
) & (((((0x3fffff) >> 16) >> 8) >> 4)))
^ (((((0x3fffff) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffff) >> 16)
>> 8) >> 4) >> 2)) - 1) & ((((((0x3fffff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x3fffff) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
) >> 16) >> 8) >> 4))) - 1) & ((((((0x3fffff
) >> 16) >> 8) >> 4)))) ^ ((((((0x3fffff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x3fffff) >> 16) >> 8))) -
1) & (((((0x3fffff) >> 16) >> 8)))) ^ (((((0x3fffff
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3fffff) >> 16) >> 8)) >>
2)) - 1) & ((((((0x3fffff) >> 16) >> 8)) >>
2))) ^ ((((((0x3fffff) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
) >> 16) >> 8)))) - 1) & ((((((0x3fffff) >>
16) >> 8))))) ^ ((((((0x3fffff) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3fffff
) >> 16))) - 1) & ((((0x3fffff) >> 16)))) ^ (
(((0x3fffff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x3fffff) >> 16)) >> 4)) - 1) & (((
((0x3fffff) >> 16)) >> 4))) ^ (((((0x3fffff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x3fffff) >> 16)) >> 4) >> 2)) - 1) &
((((((0x3fffff) >> 16)) >> 4) >> 2))) ^ ((
((((0x3fffff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff) >>
16)) >> 4))) - 1) & ((((((0x3fffff) >> 16)) >>
4)))) ^ ((((((0x3fffff) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff) >>
16)))) - 1) & (((((0x3fffff) >> 16))))) ^ (((((0x3fffff
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3fffff) >> 16))) >> 2)) - 1) & ((((((
0x3fffff) >> 16))) >> 2))) ^ ((((((0x3fffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3fffff) >> 16))))) - 1) & ((((((0x3fffff
) >> 16)))))) ^ ((((((0x3fffff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3fffff))) - 1) &
(((0x3fffff)))) ^ (((0x3fffff))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0x3fffff)) >> 8)) - 1) & ((((0x3fffff
)) >> 8))) ^ ((((0x3fffff)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x3fffff)) >> 8) >>
4)) - 1) & (((((0x3fffff)) >> 8) >> 4))) ^ (
((((0x3fffff)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x3fffff)) >> 8) >> 4
) >> 2)) - 1) & ((((((0x3fffff)) >> 8) >>
4) >> 2))) ^ ((((((0x3fffff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
)) >> 8) >> 4))) - 1) & ((((((0x3fffff)) >>
8) >> 4)))) ^ ((((((0x3fffff)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff
)) >> 8))) - 1) & (((((0x3fffff)) >> 8)))) ^ (
((((0x3fffff)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3fffff)) >> 8)) >> 2)) - 1) &
((((((0x3fffff)) >> 8)) >> 2))) ^ ((((((0x3fffff
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x3fffff)) >> 8)))) - 1) & ((
((((0x3fffff)) >> 8))))) ^ ((((((0x3fffff)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3fffff
)))) - 1) & ((((0x3fffff))))) ^ ((((0x3fffff)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffff))) >> 4)
) - 1) & (((((0x3fffff))) >> 4))) ^ (((((0x3fffff))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x3fffff))) >> 4) >> 2)) - 1) & ((((((0x3fffff
))) >> 4) >> 2))) ^ ((((((0x3fffff))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffff))) >> 4))) - 1) & ((((((0x3fffff)))
>> 4)))) ^ ((((((0x3fffff))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff))))) - 1) &
(((((0x3fffff)))))) ^ (((((0x3fffff))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x3fffff)))) >> 2)) - 1) &
((((((0x3fffff)))) >> 2))) ^ ((((((0x3fffff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
)))))) - 1) & ((((((0x3fffff))))))) ^ ((((((0x3fffff)))))
))) >> (1)) != 0) ? 1 : 0))))))
;
1988
1989 ATW_WRITE(sc, ATW_SYNCTL, reg)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x64)), ((reg
))))
;
1990
1991 for (i = 1000; --i >= 0; ) {
1992 DELAY(100)(*delay_func)(100);
1993 if (ATW_ISSET(sc, ATW_SYNCTL, ATW_SYNCTL_RD)(((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x64))
))) & ((1<<30)))
== 0)
1994 break;
1995 }
1996
1997 ATW_CLR(sc, ATW_SYNCTL, ATW_SYNCTL_RD)((((sc))->sc_st)->write_4((((sc))->sc_sh), (((0x64))
), ((((((sc))->sc_st)->read_4((((sc))->sc_sh), (((0x64
))))) & ~((1<<30))))))
;
1998
1999 if (i < 0) {
2000 printf("%s: atw_si4126_read wrote %#08x, SYNCTL still busy\n",
2001 sc->sc_dev.dv_xname, reg);
2002 return ETIMEDOUT60;
2003 }
2004 if (val != NULL((void *)0))
2005 *val = MASK_AND_RSHIFT(ATW_READ(sc, ATW_SYNCTL),((((((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x64)))))
& (0x3fffff)) >> ((((u_long)((((((0x3fffff)) - 1) &
((0x3fffff))) ^ ((0x3fffff)))) >> (16)) != 0) ? 16 + (
(((u_long)(((((((0x3fffff) >> 16)) - 1) & (((0x3fffff
) >> 16))) ^ (((0x3fffff) >> 16)))) >> (8))
!= 0) ? 8 + ((((u_long)((((((((0x3fffff) >> 16) >>
8)) - 1) & ((((0x3fffff) >> 16) >> 8))) ^ ((
((0x3fffff) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x3fffff) >> 16) >> 8) >>
4)) - 1) & (((((0x3fffff) >> 16) >> 8) >>
4))) ^ (((((0x3fffff) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0x3fffff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x3fffff) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
) >> 16) >> 8) >> 4))) - 1) & ((((((0x3fffff
) >> 16) >> 8) >> 4)))) ^ ((((((0x3fffff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x3fffff) >> 16) >> 8))) -
1) & (((((0x3fffff) >> 16) >> 8)))) ^ (((((0x3fffff
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3fffff) >> 16) >> 8)) >>
2)) - 1) & ((((((0x3fffff) >> 16) >> 8)) >>
2))) ^ ((((((0x3fffff) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
) >> 16) >> 8)))) - 1) & ((((((0x3fffff) >>
16) >> 8))))) ^ ((((((0x3fffff) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3fffff
) >> 16))) - 1) & ((((0x3fffff) >> 16)))) ^ (
(((0x3fffff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x3fffff) >> 16)) >> 4)) - 1) & (((
((0x3fffff) >> 16)) >> 4))) ^ (((((0x3fffff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x3fffff) >> 16)) >> 4) >> 2)) - 1) &
((((((0x3fffff) >> 16)) >> 4) >> 2))) ^ ((
((((0x3fffff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff) >>
16)) >> 4))) - 1) & ((((((0x3fffff) >> 16)) >>
4)))) ^ ((((((0x3fffff) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff) >>
16)))) - 1) & (((((0x3fffff) >> 16))))) ^ (((((0x3fffff
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3fffff) >> 16))) >> 2)) - 1) & ((((((
0x3fffff) >> 16))) >> 2))) ^ ((((((0x3fffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3fffff) >> 16))))) - 1) & ((((((0x3fffff
) >> 16)))))) ^ ((((((0x3fffff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3fffff))) - 1) &
(((0x3fffff)))) ^ (((0x3fffff))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0x3fffff)) >> 8)) - 1) & ((((0x3fffff
)) >> 8))) ^ ((((0x3fffff)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x3fffff)) >> 8) >>
4)) - 1) & (((((0x3fffff)) >> 8) >> 4))) ^ (
((((0x3fffff)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x3fffff)) >> 8) >> 4
) >> 2)) - 1) & ((((((0x3fffff)) >> 8) >>
4) >> 2))) ^ ((((((0x3fffff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
)) >> 8) >> 4))) - 1) & ((((((0x3fffff)) >>
8) >> 4)))) ^ ((((((0x3fffff)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff
)) >> 8))) - 1) & (((((0x3fffff)) >> 8)))) ^ (
((((0x3fffff)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3fffff)) >> 8)) >> 2)) - 1) &
((((((0x3fffff)) >> 8)) >> 2))) ^ ((((((0x3fffff
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x3fffff)) >> 8)))) - 1) & ((
((((0x3fffff)) >> 8))))) ^ ((((((0x3fffff)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3fffff
)))) - 1) & ((((0x3fffff))))) ^ ((((0x3fffff)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffff))) >> 4)
) - 1) & (((((0x3fffff))) >> 4))) ^ (((((0x3fffff))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x3fffff))) >> 4) >> 2)) - 1) & ((((((0x3fffff
))) >> 4) >> 2))) ^ ((((((0x3fffff))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffff))) >> 4))) - 1) & ((((((0x3fffff)))
>> 4)))) ^ ((((((0x3fffff))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff))))) - 1) &
(((((0x3fffff)))))) ^ (((((0x3fffff))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x3fffff)))) >> 2)) - 1) &
((((((0x3fffff)))) >> 2))) ^ ((((((0x3fffff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
)))))) - 1) & ((((((0x3fffff))))))) ^ ((((((0x3fffff)))))
))) >> (1)) != 0) ? 1 : 0))))))
2006 ATW_SYNCTL_DATA_MASK)((((((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x64)))))
& (0x3fffff)) >> ((((u_long)((((((0x3fffff)) - 1) &
((0x3fffff))) ^ ((0x3fffff)))) >> (16)) != 0) ? 16 + (
(((u_long)(((((((0x3fffff) >> 16)) - 1) & (((0x3fffff
) >> 16))) ^ (((0x3fffff) >> 16)))) >> (8))
!= 0) ? 8 + ((((u_long)((((((((0x3fffff) >> 16) >>
8)) - 1) & ((((0x3fffff) >> 16) >> 8))) ^ ((
((0x3fffff) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x3fffff) >> 16) >> 8) >>
4)) - 1) & (((((0x3fffff) >> 16) >> 8) >>
4))) ^ (((((0x3fffff) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0x3fffff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x3fffff) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
) >> 16) >> 8) >> 4))) - 1) & ((((((0x3fffff
) >> 16) >> 8) >> 4)))) ^ ((((((0x3fffff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x3fffff) >> 16) >> 8))) -
1) & (((((0x3fffff) >> 16) >> 8)))) ^ (((((0x3fffff
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3fffff) >> 16) >> 8)) >>
2)) - 1) & ((((((0x3fffff) >> 16) >> 8)) >>
2))) ^ ((((((0x3fffff) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
) >> 16) >> 8)))) - 1) & ((((((0x3fffff) >>
16) >> 8))))) ^ ((((((0x3fffff) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3fffff
) >> 16))) - 1) & ((((0x3fffff) >> 16)))) ^ (
(((0x3fffff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x3fffff) >> 16)) >> 4)) - 1) & (((
((0x3fffff) >> 16)) >> 4))) ^ (((((0x3fffff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x3fffff) >> 16)) >> 4) >> 2)) - 1) &
((((((0x3fffff) >> 16)) >> 4) >> 2))) ^ ((
((((0x3fffff) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff) >>
16)) >> 4))) - 1) & ((((((0x3fffff) >> 16)) >>
4)))) ^ ((((((0x3fffff) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff) >>
16)))) - 1) & (((((0x3fffff) >> 16))))) ^ (((((0x3fffff
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3fffff) >> 16))) >> 2)) - 1) & ((((((
0x3fffff) >> 16))) >> 2))) ^ ((((((0x3fffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3fffff) >> 16))))) - 1) & ((((((0x3fffff
) >> 16)))))) ^ ((((((0x3fffff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3fffff))) - 1) &
(((0x3fffff)))) ^ (((0x3fffff))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0x3fffff)) >> 8)) - 1) & ((((0x3fffff
)) >> 8))) ^ ((((0x3fffff)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x3fffff)) >> 8) >>
4)) - 1) & (((((0x3fffff)) >> 8) >> 4))) ^ (
((((0x3fffff)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x3fffff)) >> 8) >> 4
) >> 2)) - 1) & ((((((0x3fffff)) >> 8) >>
4) >> 2))) ^ ((((((0x3fffff)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
)) >> 8) >> 4))) - 1) & ((((((0x3fffff)) >>
8) >> 4)))) ^ ((((((0x3fffff)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff
)) >> 8))) - 1) & (((((0x3fffff)) >> 8)))) ^ (
((((0x3fffff)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x3fffff)) >> 8)) >> 2)) - 1) &
((((((0x3fffff)) >> 8)) >> 2))) ^ ((((((0x3fffff
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x3fffff)) >> 8)))) - 1) & ((
((((0x3fffff)) >> 8))))) ^ ((((((0x3fffff)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x3fffff
)))) - 1) & ((((0x3fffff))))) ^ ((((0x3fffff)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffff))) >> 4)
) - 1) & (((((0x3fffff))) >> 4))) ^ (((((0x3fffff))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x3fffff))) >> 4) >> 2)) - 1) & ((((((0x3fffff
))) >> 4) >> 2))) ^ ((((((0x3fffff))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffff))) >> 4))) - 1) & ((((((0x3fffff)))
>> 4)))) ^ ((((((0x3fffff))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffff))))) - 1) &
(((((0x3fffff)))))) ^ (((((0x3fffff))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x3fffff)))) >> 2)) - 1) &
((((((0x3fffff)))) >> 2))) ^ ((((((0x3fffff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffff
)))))) - 1) & ((((((0x3fffff))))))) ^ ((((((0x3fffff)))))
))) >> (1)) != 0) ? 1 : 0))))))
;
2007 return 0;
2008}
2009#endif /* ATW_SYNDEBUG */
2010
2011/* XXX is the endianness correct? test. */
2012#define atw_calchash(addr)(ether_crc32_le((addr), 6) & 0x3f) \
2013 (ether_crc32_le((addr), IEEE80211_ADDR_LEN6) & 0x3f)
2014
2015/*
2016 * atw_filter_setup:
2017 *
2018 * Set the ADM8211's receive filter.
2019 */
2020void
2021atw_filter_setup(struct atw_softc *sc)
2022{
2023 struct ieee80211com *ic = &sc->sc_ic;
2024 struct arpcom *ac = &ic->ic_ac;
2025 struct ifnet *ifp = &sc->sc_ic.ic_ific_ac.ac_if;
2026 int hash;
2027 u_int32_t hashes[2];
2028 struct ether_multi *enm;
2029 struct ether_multistep step;
2030
2031 /* According to comments in tlp_al981_filter_setup
2032 * (dev/ic/tulip.c) the ADMtek AL981 does not like for its
2033 * multicast filter to be set while it is running. Hopefully
2034 * the ADM8211 is not the same!
2035 */
2036 if ((ifp->if_flags & IFF_RUNNING0x40) != 0)
2037 atw_idle(sc, ATW_NAR_SR(1<<1));
2038
2039 sc->sc_opmode &= ~(ATW_NAR_PR(1<<6)|ATW_NAR_MM(1<<7));
2040
2041 /* XXX in scan mode, do not filter packets. Maybe this is
2042 * unnecessary.
2043 */
2044 if (ic->ic_state == IEEE80211_S_SCAN ||
2045 (ifp->if_flags & IFF_PROMISC0x100) != 0) {
2046 sc->sc_opmode |= ATW_NAR_PR(1<<6);
2047 goto allmulti;
2048 }
2049
2050 hashes[0] = hashes[1] = 0x0;
2051
2052 if (ac->ac_multirangecnt > 0)
2053 goto allmulti;
2054
2055 /*
2056 * Program the 64-bit multicast hash filter.
2057 */
2058 ETHER_FIRST_MULTI(step, ac, enm)do { (step).e_enm = ((&(ac)->ac_multiaddrs)->lh_first
); do { if ((((enm)) = ((step)).e_enm) != ((void *)0)) ((step
)).e_enm = ((((enm)))->enm_list.le_next); } while ( 0); } while
( 0)
;
2059 while (enm != NULL((void *)0)) {
2060 hash = atw_calchash(enm->enm_addrlo)(ether_crc32_le((enm->enm_addrlo), 6) & 0x3f);
2061 hashes[hash >> 5] |= 1 << (hash & 0x1f);
2062 ETHER_NEXT_MULTI(step, enm)do { if (((enm) = (step).e_enm) != ((void *)0)) (step).e_enm =
(((enm))->enm_list.le_next); } while ( 0)
;
2063 sc->sc_opmode |= ATW_NAR_MM(1<<7);
2064 }
2065 ifp->if_flags &= ~IFF_ALLMULTI0x200;
2066 goto setit;
2067
2068allmulti:
2069 sc->sc_opmode |= ATW_NAR_MM(1<<7);
2070 ifp->if_flags |= IFF_ALLMULTI0x200;
2071 hashes[0] = hashes[1] = 0xffffffff;
2072
2073setit:
2074 ATW_WRITE(sc, ATW_MAR0, hashes[0])(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x9C)), ((hashes
[0]))))
;
2075 ATW_WRITE(sc, ATW_MAR1, hashes[1])(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xA0)), ((hashes
[1]))))
;
2076 ATW_WRITE(sc, ATW_NAR, sc->sc_opmode)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x30)), ((sc
->sc_opmode))))
;
2077 DELAY(20 * 1000)(*delay_func)(20 * 1000);
2078 ATW_WRITE(sc, ATW_RDR, 0x1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x10)), ((0x1
))))
;
2079
2080 DPRINTF(sc, ("%s: ATW_NAR %08x opmode %08x\n", sc->sc_dev.dv_xname,
2081 ATW_READ(sc, ATW_NAR), sc->sc_opmode));
2082}
2083
2084/* Tell the ADM8211 our preferred BSSID. The ADM8211 must match
2085 * a beacon's BSSID and SSID against the preferred BSSID and SSID
2086 * before it will raise ATW_INTR_LINKON. When the ADM8211 receives
2087 * no beacon with the preferred BSSID and SSID in the number of
2088 * beacon intervals given in ATW_BPLI, then it raises ATW_INTR_LINKOFF.
2089 */
2090void
2091atw_write_bssid(struct atw_softc *sc)
2092{
2093 struct ieee80211com *ic = &sc->sc_ic;
2094 u_int8_t *bssid;
2095
2096 bssid = ic->ic_bss->ni_bssid;
2097
2098 ATW_WRITE(sc, ATW_BSSID0,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xAC)), (((
(bssid[0]) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | ((bssid[1]) << ((((u_long)(
(((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >> (
16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) - 1
) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)))
) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((bssid[2]) << ((((u_long)((((((0xff0000
)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xff0000) >> 16)) - 1) &
(((0xff0000) >> 16))) ^ (((0xff0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >>
8)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((
((0xff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0)))))) | ((bssid[3]) << (
(((u_long)((((((0xff000000)) - 1) & ((0xff000000))) ^ ((0xff000000
)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff000000
) >> 16)) - 1) & (((0xff000000) >> 16))) ^ ((
(0xff000000) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000) >> 16) >> 8)) - 1) & (((
(0xff000000) >> 16) >> 8))) ^ ((((0xff000000) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xff000000) >> 16) >> 8) >> 4)) - 1) &
(((((0xff000000) >> 16) >> 8) >> 4))) ^ ((
(((0xff000000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff000000) >> 16) >> 8) >> 4) >> 2))
)) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff000000)
>> 16) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000) >> 16) >>
8))) - 1) & (((((0xff000000) >> 16) >> 8))))
^ (((((0xff000000) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8)) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000) >> 16) >> 8)))) - 1) & (
(((((0xff000000) >> 16) >> 8))))) ^ ((((((0xff000000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xff000000) >> 16))) - 1) & (
(((0xff000000) >> 16)))) ^ ((((0xff000000) >> 16)
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000
) >> 16)) >> 4)) - 1) & (((((0xff000000) >>
16)) >> 4))) ^ (((((0xff000000) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16)) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff000000)
>> 16)) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16)) >>
4))) - 1) & ((((((0xff000000) >> 16)) >> 4))
)) ^ ((((((0xff000000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000) >>
16)))) - 1) & (((((0xff000000) >> 16))))) ^ (((((0xff000000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff000000) >> 16))) >> 2)) - 1) & ((((
((0xff000000) >> 16))) >> 2))) ^ ((((((0xff000000
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff000000) >> 16))))) - 1) &
((((((0xff000000) >> 16)))))) ^ ((((((0xff000000) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xff000000))) - 1) & (((0xff000000)))) ^ (((0xff000000)
)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000)
) >> 8)) - 1) & ((((0xff000000)) >> 8))) ^ ((
((0xff000000)) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff000000)) >> 8) >> 4)) - 1) & ((
(((0xff000000)) >> 8) >> 4))) ^ (((((0xff000000))
>> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xff000000)) >> 8) >> 4) >>
2))) ^ ((((((0xff000000)) >> 8) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8) >> 4))) - 1) & ((((((0xff000000)) >>
8) >> 4)))) ^ ((((((0xff000000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
)) >> 8))) - 1) & (((((0xff000000)) >> 8)))) ^
(((((0xff000000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xff000000)) >> 8)) >> 2)) - 1
) & ((((((0xff000000)) >> 8)) >> 2))) ^ (((((
(0xff000000)) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000)) >> 8)))) -
1) & ((((((0xff000000)) >> 8))))) ^ ((((((0xff000000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff000000)))) - 1) & ((((0xff000000))))) ^ ((((
0xff000000)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff000000))) >> 4)) - 1) & (((((0xff000000))) >>
4))) ^ (((((0xff000000))) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff000000))) >> 4) >>
2)) - 1) & ((((((0xff000000))) >> 4) >> 2)))
^ ((((((0xff000000))) >> 4) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000))) >>
4))) - 1) & ((((((0xff000000))) >> 4)))) ^ ((((((0xff000000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff000000))))) - 1) & (((((0xff000000)))))) ^ (
((((0xff000000))))))) >> (2)) != 0) ? 2 + ((((u_long)((
((((((((0xff000000)))) >> 2)) - 1) & ((((((0xff000000
)))) >> 2))) ^ ((((((0xff000000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000)))))) -
1) & ((((((0xff000000))))))) ^ ((((((0xff000000)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
2099 LSHIFT(bssid[0], ATW_BSSID0_BSSIDB0_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xAC)), (((
(bssid[0]) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | ((bssid[1]) << ((((u_long)(
(((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >> (
16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) - 1
) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)))
) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((bssid[2]) << ((((u_long)((((((0xff0000
)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xff0000) >> 16)) - 1) &
(((0xff0000) >> 16))) ^ (((0xff0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >>
8)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((
((0xff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0)))))) | ((bssid[3]) << (
(((u_long)((((((0xff000000)) - 1) & ((0xff000000))) ^ ((0xff000000
)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff000000
) >> 16)) - 1) & (((0xff000000) >> 16))) ^ ((
(0xff000000) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000) >> 16) >> 8)) - 1) & (((
(0xff000000) >> 16) >> 8))) ^ ((((0xff000000) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xff000000) >> 16) >> 8) >> 4)) - 1) &
(((((0xff000000) >> 16) >> 8) >> 4))) ^ ((
(((0xff000000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff000000) >> 16) >> 8) >> 4) >> 2))
)) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff000000)
>> 16) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000) >> 16) >>
8))) - 1) & (((((0xff000000) >> 16) >> 8))))
^ (((((0xff000000) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8)) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000) >> 16) >> 8)))) - 1) & (
(((((0xff000000) >> 16) >> 8))))) ^ ((((((0xff000000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xff000000) >> 16))) - 1) & (
(((0xff000000) >> 16)))) ^ ((((0xff000000) >> 16)
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000
) >> 16)) >> 4)) - 1) & (((((0xff000000) >>
16)) >> 4))) ^ (((((0xff000000) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16)) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff000000)
>> 16)) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16)) >>
4))) - 1) & ((((((0xff000000) >> 16)) >> 4))
)) ^ ((((((0xff000000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000) >>
16)))) - 1) & (((((0xff000000) >> 16))))) ^ (((((0xff000000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff000000) >> 16))) >> 2)) - 1) & ((((
((0xff000000) >> 16))) >> 2))) ^ ((((((0xff000000
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff000000) >> 16))))) - 1) &
((((((0xff000000) >> 16)))))) ^ ((((((0xff000000) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xff000000))) - 1) & (((0xff000000)))) ^ (((0xff000000)
)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000)
) >> 8)) - 1) & ((((0xff000000)) >> 8))) ^ ((
((0xff000000)) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff000000)) >> 8) >> 4)) - 1) & ((
(((0xff000000)) >> 8) >> 4))) ^ (((((0xff000000))
>> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xff000000)) >> 8) >> 4) >>
2))) ^ ((((((0xff000000)) >> 8) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8) >> 4))) - 1) & ((((((0xff000000)) >>
8) >> 4)))) ^ ((((((0xff000000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
)) >> 8))) - 1) & (((((0xff000000)) >> 8)))) ^
(((((0xff000000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xff000000)) >> 8)) >> 2)) - 1
) & ((((((0xff000000)) >> 8)) >> 2))) ^ (((((
(0xff000000)) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000)) >> 8)))) -
1) & ((((((0xff000000)) >> 8))))) ^ ((((((0xff000000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff000000)))) - 1) & ((((0xff000000))))) ^ ((((
0xff000000)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff000000))) >> 4)) - 1) & (((((0xff000000))) >>
4))) ^ (((((0xff000000))) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff000000))) >> 4) >>
2)) - 1) & ((((((0xff000000))) >> 4) >> 2)))
^ ((((((0xff000000))) >> 4) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000))) >>
4))) - 1) & ((((((0xff000000))) >> 4)))) ^ ((((((0xff000000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff000000))))) - 1) & (((((0xff000000)))))) ^ (
((((0xff000000))))))) >> (2)) != 0) ? 2 + ((((u_long)((
((((((((0xff000000)))) >> 2)) - 1) & ((((((0xff000000
)))) >> 2))) ^ ((((((0xff000000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000)))))) -
1) & ((((((0xff000000))))))) ^ ((((((0xff000000)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
2100 LSHIFT(bssid[1], ATW_BSSID0_BSSIDB1_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xAC)), (((
(bssid[0]) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | ((bssid[1]) << ((((u_long)(
(((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >> (
16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) - 1
) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)))
) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((bssid[2]) << ((((u_long)((((((0xff0000
)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xff0000) >> 16)) - 1) &
(((0xff0000) >> 16))) ^ (((0xff0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >>
8)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((
((0xff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0)))))) | ((bssid[3]) << (
(((u_long)((((((0xff000000)) - 1) & ((0xff000000))) ^ ((0xff000000
)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff000000
) >> 16)) - 1) & (((0xff000000) >> 16))) ^ ((
(0xff000000) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000) >> 16) >> 8)) - 1) & (((
(0xff000000) >> 16) >> 8))) ^ ((((0xff000000) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xff000000) >> 16) >> 8) >> 4)) - 1) &
(((((0xff000000) >> 16) >> 8) >> 4))) ^ ((
(((0xff000000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff000000) >> 16) >> 8) >> 4) >> 2))
)) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff000000)
>> 16) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000) >> 16) >>
8))) - 1) & (((((0xff000000) >> 16) >> 8))))
^ (((((0xff000000) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8)) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000) >> 16) >> 8)))) - 1) & (
(((((0xff000000) >> 16) >> 8))))) ^ ((((((0xff000000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xff000000) >> 16))) - 1) & (
(((0xff000000) >> 16)))) ^ ((((0xff000000) >> 16)
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000
) >> 16)) >> 4)) - 1) & (((((0xff000000) >>
16)) >> 4))) ^ (((((0xff000000) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16)) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff000000)
>> 16)) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16)) >>
4))) - 1) & ((((((0xff000000) >> 16)) >> 4))
)) ^ ((((((0xff000000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000) >>
16)))) - 1) & (((((0xff000000) >> 16))))) ^ (((((0xff000000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff000000) >> 16))) >> 2)) - 1) & ((((
((0xff000000) >> 16))) >> 2))) ^ ((((((0xff000000
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff000000) >> 16))))) - 1) &
((((((0xff000000) >> 16)))))) ^ ((((((0xff000000) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xff000000))) - 1) & (((0xff000000)))) ^ (((0xff000000)
)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000)
) >> 8)) - 1) & ((((0xff000000)) >> 8))) ^ ((
((0xff000000)) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff000000)) >> 8) >> 4)) - 1) & ((
(((0xff000000)) >> 8) >> 4))) ^ (((((0xff000000))
>> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xff000000)) >> 8) >> 4) >>
2))) ^ ((((((0xff000000)) >> 8) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8) >> 4))) - 1) & ((((((0xff000000)) >>
8) >> 4)))) ^ ((((((0xff000000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
)) >> 8))) - 1) & (((((0xff000000)) >> 8)))) ^
(((((0xff000000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xff000000)) >> 8)) >> 2)) - 1
) & ((((((0xff000000)) >> 8)) >> 2))) ^ (((((
(0xff000000)) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000)) >> 8)))) -
1) & ((((((0xff000000)) >> 8))))) ^ ((((((0xff000000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff000000)))) - 1) & ((((0xff000000))))) ^ ((((
0xff000000)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff000000))) >> 4)) - 1) & (((((0xff000000))) >>
4))) ^ (((((0xff000000))) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff000000))) >> 4) >>
2)) - 1) & ((((((0xff000000))) >> 4) >> 2)))
^ ((((((0xff000000))) >> 4) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000))) >>
4))) - 1) & ((((((0xff000000))) >> 4)))) ^ ((((((0xff000000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff000000))))) - 1) & (((((0xff000000)))))) ^ (
((((0xff000000))))))) >> (2)) != 0) ? 2 + ((((u_long)((
((((((((0xff000000)))) >> 2)) - 1) & ((((((0xff000000
)))) >> 2))) ^ ((((((0xff000000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000)))))) -
1) & ((((((0xff000000))))))) ^ ((((((0xff000000)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
2101 LSHIFT(bssid[2], ATW_BSSID0_BSSIDB2_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xAC)), (((
(bssid[0]) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | ((bssid[1]) << ((((u_long)(
(((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >> (
16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) - 1
) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)))
) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((bssid[2]) << ((((u_long)((((((0xff0000
)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xff0000) >> 16)) - 1) &
(((0xff0000) >> 16))) ^ (((0xff0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >>
8)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((
((0xff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0)))))) | ((bssid[3]) << (
(((u_long)((((((0xff000000)) - 1) & ((0xff000000))) ^ ((0xff000000
)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff000000
) >> 16)) - 1) & (((0xff000000) >> 16))) ^ ((
(0xff000000) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000) >> 16) >> 8)) - 1) & (((
(0xff000000) >> 16) >> 8))) ^ ((((0xff000000) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xff000000) >> 16) >> 8) >> 4)) - 1) &
(((((0xff000000) >> 16) >> 8) >> 4))) ^ ((
(((0xff000000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff000000) >> 16) >> 8) >> 4) >> 2))
)) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff000000)
>> 16) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000) >> 16) >>
8))) - 1) & (((((0xff000000) >> 16) >> 8))))
^ (((((0xff000000) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8)) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000) >> 16) >> 8)))) - 1) & (
(((((0xff000000) >> 16) >> 8))))) ^ ((((((0xff000000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xff000000) >> 16))) - 1) & (
(((0xff000000) >> 16)))) ^ ((((0xff000000) >> 16)
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000
) >> 16)) >> 4)) - 1) & (((((0xff000000) >>
16)) >> 4))) ^ (((((0xff000000) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16)) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff000000)
>> 16)) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16)) >>
4))) - 1) & ((((((0xff000000) >> 16)) >> 4))
)) ^ ((((((0xff000000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000) >>
16)))) - 1) & (((((0xff000000) >> 16))))) ^ (((((0xff000000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff000000) >> 16))) >> 2)) - 1) & ((((
((0xff000000) >> 16))) >> 2))) ^ ((((((0xff000000
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff000000) >> 16))))) - 1) &
((((((0xff000000) >> 16)))))) ^ ((((((0xff000000) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xff000000))) - 1) & (((0xff000000)))) ^ (((0xff000000)
)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000)
) >> 8)) - 1) & ((((0xff000000)) >> 8))) ^ ((
((0xff000000)) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff000000)) >> 8) >> 4)) - 1) & ((
(((0xff000000)) >> 8) >> 4))) ^ (((((0xff000000))
>> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xff000000)) >> 8) >> 4) >>
2))) ^ ((((((0xff000000)) >> 8) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8) >> 4))) - 1) & ((((((0xff000000)) >>
8) >> 4)))) ^ ((((((0xff000000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
)) >> 8))) - 1) & (((((0xff000000)) >> 8)))) ^
(((((0xff000000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xff000000)) >> 8)) >> 2)) - 1
) & ((((((0xff000000)) >> 8)) >> 2))) ^ (((((
(0xff000000)) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000)) >> 8)))) -
1) & ((((((0xff000000)) >> 8))))) ^ ((((((0xff000000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff000000)))) - 1) & ((((0xff000000))))) ^ ((((
0xff000000)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff000000))) >> 4)) - 1) & (((((0xff000000))) >>
4))) ^ (((((0xff000000))) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff000000))) >> 4) >>
2)) - 1) & ((((((0xff000000))) >> 4) >> 2)))
^ ((((((0xff000000))) >> 4) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000))) >>
4))) - 1) & ((((((0xff000000))) >> 4)))) ^ ((((((0xff000000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff000000))))) - 1) & (((((0xff000000)))))) ^ (
((((0xff000000))))))) >> (2)) != 0) ? 2 + ((((u_long)((
((((((((0xff000000)))) >> 2)) - 1) & ((((((0xff000000
)))) >> 2))) ^ ((((((0xff000000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000)))))) -
1) & ((((((0xff000000))))))) ^ ((((((0xff000000)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
2102 LSHIFT(bssid[3], ATW_BSSID0_BSSIDB3_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xAC)), (((
(bssid[0]) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | ((bssid[1]) << ((((u_long)(
(((((0xff00)) - 1) & ((0xff00))) ^ ((0xff00)))) >> (
16)) != 0) ? 16 + ((((u_long)(((((((0xff00) >> 16)) - 1
) & (((0xff00) >> 16))) ^ (((0xff00) >> 16)))
) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff00) >>
16) >> 8)) - 1) & ((((0xff00) >> 16) >>
8))) ^ ((((0xff00) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xff00) >> 16) >>
8) >> 4)) - 1) & (((((0xff00) >> 16) >>
8) >> 4))) ^ (((((0xff00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xff00) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00) >> 16) >> 8))) - 1
) & (((((0xff00) >> 16) >> 8)))) ^ (((((0xff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff00) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xff00) >> 16) >> 8)) >>
2))) ^ ((((((0xff00) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)
>> 16) >> 8)))) - 1) & ((((((0xff00) >>
16) >> 8))))) ^ ((((((0xff00) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff00
) >> 16))) - 1) & ((((0xff00) >> 16)))) ^ (((
(0xff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff00) >> 16)) >> 4)) - 1) & (((((
0xff00) >> 16)) >> 4))) ^ (((((0xff00) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff00) >> 16)) >> 4) >> 2))) ^ ((((
((0xff00) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00) >> 16
)) >> 4))) - 1) & ((((((0xff00) >> 16)) >>
4)))) ^ ((((((0xff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00) >> 16
)))) - 1) & (((((0xff00) >> 16))))) ^ (((((0xff00) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00
) >> 16))) >> 2)) - 1) & ((((((0xff00) >>
16))) >> 2))) ^ ((((((0xff00) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
) >> 16))))) - 1) & ((((((0xff00) >> 16))))))
^ ((((((0xff00) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xff00))) - 1) & (((0xff00))))
^ (((0xff00))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00)) >> 8)) - 1) & ((((0xff00)) >> 8)))
^ ((((0xff00)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xff00)) >> 8) >> 4)) - 1) & (
((((0xff00)) >> 8) >> 4))) ^ (((((0xff00)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff00)) >> 8) >> 4) >> 2))) ^ (((((
(0xff00)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8) >>
4))) - 1) & ((((((0xff00)) >> 8) >> 4)))) ^ (
(((((0xff00)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff00)) >> 8))) - 1) &
(((((0xff00)) >> 8)))) ^ (((((0xff00)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00)) >>
8)) >> 2)) - 1) & ((((((0xff00)) >> 8)) >>
2))) ^ ((((((0xff00)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)) >> 8
)))) - 1) & ((((((0xff00)) >> 8))))) ^ ((((((0xff00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00)))) - 1) & ((((0xff00))))) ^ ((((0xff00))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00))) >>
4)) - 1) & (((((0xff00))) >> 4))) ^ (((((0xff00)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff00))) >> 4) >> 2)) - 1) & ((((((0xff00)
)) >> 4) >> 2))) ^ ((((((0xff00))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00
))) >> 4))) - 1) & ((((((0xff00))) >> 4)))) ^
((((((0xff00))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff00))))) - 1) & (((((0xff00)))
))) ^ (((((0xff00))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00)))) >> 2)) - 1) & ((((((0xff00)))
) >> 2))) ^ ((((((0xff00)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00)))))) - 1) &
((((((0xff00))))))) ^ ((((((0xff00)))))))) >> (1)) != 0
) ? 1 : 0)))))) | ((bssid[2]) << ((((u_long)((((((0xff0000
)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xff0000) >> 16)) - 1) &
(((0xff0000) >> 16))) ^ (((0xff0000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xff0000) >> 16) >>
8)) - 1) & ((((0xff0000) >> 16) >> 8))) ^ ((
((0xff0000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff0000) >> 16) >> 8) >>
4)) - 1) & (((((0xff0000) >> 16) >> 8) >>
4))) ^ (((((0xff0000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff0000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff0000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff0000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xff0000) >> 16) >> 8))) -
1) & (((((0xff0000) >> 16) >> 8)))) ^ (((((0xff0000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000) >> 16) >> 8)) >>
2)) - 1) & ((((((0xff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xff0000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16) >> 8)))) - 1) & ((((((0xff0000) >>
16) >> 8))))) ^ ((((((0xff0000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
) >> 16))) - 1) & ((((0xff0000) >> 16)))) ^ (
(((0xff0000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff0000) >> 16)) >> 4)) - 1) & (((
((0xff0000) >> 16)) >> 4))) ^ (((((0xff0000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff0000) >> 16)) >> 4) >> 2))) ^ ((
((((0xff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000) >>
16)) >> 4))) - 1) & ((((((0xff0000) >> 16)) >>
4)))) ^ ((((((0xff0000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >>
16)))) - 1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff0000) >> 16))) >> 2)) - 1) & ((((((
0xff0000) >> 16))) >> 2))) ^ ((((((0xff0000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff0000) >> 16))))) - 1) & ((((((0xff0000
) >> 16)))))) ^ ((((((0xff0000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) &
(((0xff0000)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000
)) >> 8))) ^ ((((0xff0000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xff0000)) >> 8) >>
4)) - 1) & (((((0xff0000)) >> 8) >> 4))) ^ (
((((0xff0000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff0000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xff0000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)) >> 8) >> 4))) - 1) & ((((((0xff0000)) >>
8) >> 4)))) ^ ((((((0xff0000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
)) >> 8))) - 1) & (((((0xff0000)) >> 8)))) ^ (
((((0xff0000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xff0000)) >> 8)) >> 2)) - 1) &
((((((0xff0000)) >> 8)) >> 2))) ^ ((((((0xff0000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff0000)) >> 8)))) - 1) & ((
((((0xff0000)) >> 8))))) ^ ((((((0xff0000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff0000
)))) - 1) & ((((0xff0000))))) ^ ((((0xff0000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000))) >> 4)
) - 1) & (((((0xff0000))) >> 4))) ^ (((((0xff0000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000))) >> 4) >> 2)) - 1) & ((((((0xff0000
))) >> 4) >> 2))) ^ ((((((0xff0000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000))) >> 4))) - 1) & ((((((0xff0000)))
>> 4)))) ^ ((((((0xff0000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000))))) - 1) &
(((((0xff0000)))))) ^ (((((0xff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff0000)))) >> 2)) - 1) &
((((((0xff0000)))) >> 2))) ^ ((((((0xff0000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
)))))) - 1) & ((((((0xff0000))))))) ^ ((((((0xff0000)))))
))) >> (1)) != 0) ? 1 : 0)))))) | ((bssid[3]) << (
(((u_long)((((((0xff000000)) - 1) & ((0xff000000))) ^ ((0xff000000
)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff000000
) >> 16)) - 1) & (((0xff000000) >> 16))) ^ ((
(0xff000000) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000) >> 16) >> 8)) - 1) & (((
(0xff000000) >> 16) >> 8))) ^ ((((0xff000000) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xff000000) >> 16) >> 8) >> 4)) - 1) &
(((((0xff000000) >> 16) >> 8) >> 4))) ^ ((
(((0xff000000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff000000) >> 16) >> 8) >> 4) >> 2))
)) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8) >> 4))) - 1) & ((((((0xff000000
) >> 16) >> 8) >> 4)))) ^ ((((((0xff000000)
>> 16) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000) >> 16) >>
8))) - 1) & (((((0xff000000) >> 16) >> 8))))
^ (((((0xff000000) >> 16) >> 8))))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16) >>
8)) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8)) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000) >> 16) >> 8)))) - 1) & (
(((((0xff000000) >> 16) >> 8))))) ^ ((((((0xff000000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xff000000) >> 16))) - 1) & (
(((0xff000000) >> 16)))) ^ ((((0xff000000) >> 16)
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000
) >> 16)) >> 4)) - 1) & (((((0xff000000) >>
16)) >> 4))) ^ (((((0xff000000) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16)) >> 4) >> 2)) - 1) & ((((((0xff000000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff000000)
>> 16)) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16)) >>
4))) - 1) & ((((((0xff000000) >> 16)) >> 4))
)) ^ ((((((0xff000000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000) >>
16)))) - 1) & (((((0xff000000) >> 16))))) ^ (((((0xff000000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xff000000) >> 16))) >> 2)) - 1) & ((((
((0xff000000) >> 16))) >> 2))) ^ ((((((0xff000000
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xff000000) >> 16))))) - 1) &
((((((0xff000000) >> 16)))))) ^ ((((((0xff000000) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xff000000))) - 1) & (((0xff000000)))) ^ (((0xff000000)
)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000)
) >> 8)) - 1) & ((((0xff000000)) >> 8))) ^ ((
((0xff000000)) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xff000000)) >> 8) >> 4)) - 1) & ((
(((0xff000000)) >> 8) >> 4))) ^ (((((0xff000000))
>> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xff000000)) >> 8) >> 4) >>
2))) ^ ((((((0xff000000)) >> 8) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8) >> 4))) - 1) & ((((((0xff000000)) >>
8) >> 4)))) ^ ((((((0xff000000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
)) >> 8))) - 1) & (((((0xff000000)) >> 8)))) ^
(((((0xff000000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xff000000)) >> 8)) >> 2)) - 1
) & ((((((0xff000000)) >> 8)) >> 2))) ^ (((((
(0xff000000)) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000)) >> 8)))) -
1) & ((((((0xff000000)) >> 8))))) ^ ((((((0xff000000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff000000)))) - 1) & ((((0xff000000))))) ^ ((((
0xff000000)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xff000000))) >> 4)) - 1) & (((((0xff000000))) >>
4))) ^ (((((0xff000000))) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xff000000))) >> 4) >>
2)) - 1) & ((((((0xff000000))) >> 4) >> 2)))
^ ((((((0xff000000))) >> 4) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000))) >>
4))) - 1) & ((((((0xff000000))) >> 4)))) ^ ((((((0xff000000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff000000))))) - 1) & (((((0xff000000)))))) ^ (
((((0xff000000))))))) >> (2)) != 0) ? 2 + ((((u_long)((
((((((((0xff000000)))) >> 2)) - 1) & ((((((0xff000000
)))) >> 2))) ^ ((((((0xff000000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000)))))) -
1) & ((((((0xff000000))))))) ^ ((((((0xff000000)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
;
2103
2104 ATW_WRITE(sc, ATW_ABDA1,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xA8)), (((
(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xA8)))) &
~(0xff0000|0xff000000)) | ((bssid[4]) << ((((u_long)((
((((0xff0000)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff0000) >> 16))
- 1) & (((0xff0000) >> 16))) ^ (((0xff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff0000
) >> 16) >> 8)) - 1) & ((((0xff0000) >>
16) >> 8))) ^ ((((0xff0000) >> 16) >> 8)))
) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000) >>
16) >> 8) >> 4)) - 1) & (((((0xff0000) >>
16) >> 8) >> 4))) ^ (((((0xff0000) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff0000) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff0000) >> 16) >> 8) >> 4))) - 1
) & ((((((0xff0000) >> 16) >> 8) >> 4))
)) ^ ((((((0xff0000) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
) >> 16) >> 8))) - 1) & (((((0xff0000) >>
16) >> 8)))) ^ (((((0xff0000) >> 16) >> 8)
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16) >> 8)) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff0000) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16) >> 8))))
- 1) & ((((((0xff0000) >> 16) >> 8))))) ^ ((
((((0xff0000) >> 16) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000) >> 16))) - 1
) & ((((0xff0000) >> 16)))) ^ ((((0xff0000) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000
) >> 16)) >> 4)) - 1) & (((((0xff0000) >>
16)) >> 4))) ^ (((((0xff0000) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16)) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff0000) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16)) >> 4)))
- 1) & ((((((0xff0000) >> 16)) >> 4)))) ^ ((
((((0xff0000) >> 16)) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >> 16)))) -
1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000
) >> 16))) >> 2)) - 1) & ((((((0xff0000) >>
16))) >> 2))) ^ ((((((0xff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16))))) - 1) & ((((((0xff0000) >> 16))))
)) ^ ((((((0xff0000) >> 16))))))) >> (1)) != 0) ?
1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) & (((0xff0000
)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 + ((((u_long)
((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000)) >>
8))) ^ ((((0xff0000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000)) >> 8) >> 4)) - 1
) & (((((0xff0000)) >> 8) >> 4))) ^ (((((0xff0000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff0000)) >> 8) >> 4) >> 2)) - 1
) & ((((((0xff0000)) >> 8) >> 4) >> 2))
) ^ ((((((0xff0000)) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000)) >>
8) >> 4))) - 1) & ((((((0xff0000)) >> 8) >>
4)))) ^ ((((((0xff0000)) >> 8) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000)) >>
8))) - 1) & (((((0xff0000)) >> 8)))) ^ (((((0xff0000
)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000)) >> 8)) >> 2)) - 1) & ((((((0xff0000
)) >> 8)) >> 2))) ^ ((((((0xff0000)) >> 8))
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000)) >> 8)))) - 1) & ((((((0xff0000)) >>
8))))) ^ ((((((0xff0000)) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000)))) - 1) & (((
(0xff0000))))) ^ ((((0xff0000)))))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xff0000))) >> 4)) - 1) & ((((
(0xff0000))) >> 4))) ^ (((((0xff0000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000))) >> 4
) >> 2)) - 1) & ((((((0xff0000))) >> 4) >>
2))) ^ ((((((0xff0000))) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000))) >>
4))) - 1) & ((((((0xff0000))) >> 4)))) ^ ((((((0xff0000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff0000))))) - 1) & (((((0xff0000)))))) ^ ((((
(0xff0000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000)))) >> 2)) - 1) & ((((((0xff0000)))) >>
2))) ^ ((((((0xff0000)))) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff0000)))))) - 1) & ((
((((0xff0000))))))) ^ ((((((0xff0000)))))))) >> (1)) !=
0) ? 1 : 0)))))) | ((bssid[5]) << ((((u_long)((((((0xff000000
)) - 1) & ((0xff000000))) ^ ((0xff000000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xff000000) >> 16)) -
1) & (((0xff000000) >> 16))) ^ (((0xff000000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000
) >> 16) >> 8)) - 1) & ((((0xff000000) >>
16) >> 8))) ^ ((((0xff000000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)
>> 16) >> 8) >> 4)) - 1) & (((((0xff000000
) >> 16) >> 8) >> 4))) ^ (((((0xff000000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xff000000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8) >> 4))) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4)))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff000000) >> 16) >> 8))) - 1) & ((
(((0xff000000) >> 16) >> 8)))) ^ (((((0xff000000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xff000000) >> 16) >> 8)) >>
2))) ^ ((((((0xff000000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8)))) - 1) & ((((((0xff000000) >>
16) >> 8))))) ^ ((((((0xff000000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff000000) >> 16))) - 1) & ((((0xff000000) >>
16)))) ^ ((((0xff000000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff000000) >> 16)) >>
4)) - 1) & (((((0xff000000) >> 16)) >> 4))) ^
(((((0xff000000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16)) >>
4) >> 2))) ^ ((((((0xff000000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000) >> 16)) >> 4))) - 1) & ((
((((0xff000000) >> 16)) >> 4)))) ^ ((((((0xff000000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xff000000) >> 16)))) - 1) &
(((((0xff000000) >> 16))))) ^ (((((0xff000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16))) >> 2)) - 1) & ((((((0xff000000) >>
16))) >> 2))) ^ ((((((0xff000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16))))) - 1) & ((((((0xff000000) >> 16))
)))) ^ ((((((0xff000000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xff000000))) - 1) & ((
(0xff000000)))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff000000)) >> 8)) - 1) & ((((
0xff000000)) >> 8))) ^ ((((0xff000000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8
) >> 4)) - 1) & (((((0xff000000)) >> 8) >>
4))) ^ (((((0xff000000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xff000000)) >>
8) >> 4) >> 2))) ^ ((((((0xff000000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000)) >> 8) >> 4))) - 1
) & ((((((0xff000000)) >> 8) >> 4)))) ^ (((((
(0xff000000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000)) >> 8))) -
1) & (((((0xff000000)) >> 8)))) ^ (((((0xff000000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff000000)) >> 8)) >> 2)) - 1) & ((((((0xff000000
)) >> 8)) >> 2))) ^ ((((((0xff000000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000)) >> 8)))) - 1) & ((((((0xff000000
)) >> 8))))) ^ ((((((0xff000000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1
) & ((((0xff000000))))) ^ ((((0xff000000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000))) >> 4)
) - 1) & (((((0xff000000))) >> 4))) ^ (((((0xff000000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff000000))) >> 4) >> 2)) - 1) & ((((((
0xff000000))) >> 4) >> 2))) ^ ((((((0xff000000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xff000000))) >> 4))) - 1) & (((
(((0xff000000))) >> 4)))) ^ ((((((0xff000000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
))))) - 1) & (((((0xff000000)))))) ^ (((((0xff000000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)
))) >> 2)) - 1) & ((((((0xff000000)))) >> 2))
) ^ ((((((0xff000000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000)))))) - 1) & ((
((((0xff000000))))))) ^ ((((((0xff000000)))))))) >> (1)
) != 0) ? 1 : 0))))))))))
2105 (ATW_READ(sc, ATW_ABDA1) &(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xA8)), (((
(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xA8)))) &
~(0xff0000|0xff000000)) | ((bssid[4]) << ((((u_long)((
((((0xff0000)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff0000) >> 16))
- 1) & (((0xff0000) >> 16))) ^ (((0xff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff0000
) >> 16) >> 8)) - 1) & ((((0xff0000) >>
16) >> 8))) ^ ((((0xff0000) >> 16) >> 8)))
) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000) >>
16) >> 8) >> 4)) - 1) & (((((0xff0000) >>
16) >> 8) >> 4))) ^ (((((0xff0000) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff0000) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff0000) >> 16) >> 8) >> 4))) - 1
) & ((((((0xff0000) >> 16) >> 8) >> 4))
)) ^ ((((((0xff0000) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
) >> 16) >> 8))) - 1) & (((((0xff0000) >>
16) >> 8)))) ^ (((((0xff0000) >> 16) >> 8)
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16) >> 8)) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff0000) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16) >> 8))))
- 1) & ((((((0xff0000) >> 16) >> 8))))) ^ ((
((((0xff0000) >> 16) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000) >> 16))) - 1
) & ((((0xff0000) >> 16)))) ^ ((((0xff0000) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000
) >> 16)) >> 4)) - 1) & (((((0xff0000) >>
16)) >> 4))) ^ (((((0xff0000) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16)) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff0000) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16)) >> 4)))
- 1) & ((((((0xff0000) >> 16)) >> 4)))) ^ ((
((((0xff0000) >> 16)) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >> 16)))) -
1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000
) >> 16))) >> 2)) - 1) & ((((((0xff0000) >>
16))) >> 2))) ^ ((((((0xff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16))))) - 1) & ((((((0xff0000) >> 16))))
)) ^ ((((((0xff0000) >> 16))))))) >> (1)) != 0) ?
1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) & (((0xff0000
)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 + ((((u_long)
((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000)) >>
8))) ^ ((((0xff0000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000)) >> 8) >> 4)) - 1
) & (((((0xff0000)) >> 8) >> 4))) ^ (((((0xff0000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff0000)) >> 8) >> 4) >> 2)) - 1
) & ((((((0xff0000)) >> 8) >> 4) >> 2))
) ^ ((((((0xff0000)) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000)) >>
8) >> 4))) - 1) & ((((((0xff0000)) >> 8) >>
4)))) ^ ((((((0xff0000)) >> 8) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000)) >>
8))) - 1) & (((((0xff0000)) >> 8)))) ^ (((((0xff0000
)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000)) >> 8)) >> 2)) - 1) & ((((((0xff0000
)) >> 8)) >> 2))) ^ ((((((0xff0000)) >> 8))
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000)) >> 8)))) - 1) & ((((((0xff0000)) >>
8))))) ^ ((((((0xff0000)) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000)))) - 1) & (((
(0xff0000))))) ^ ((((0xff0000)))))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xff0000))) >> 4)) - 1) & ((((
(0xff0000))) >> 4))) ^ (((((0xff0000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000))) >> 4
) >> 2)) - 1) & ((((((0xff0000))) >> 4) >>
2))) ^ ((((((0xff0000))) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000))) >>
4))) - 1) & ((((((0xff0000))) >> 4)))) ^ ((((((0xff0000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff0000))))) - 1) & (((((0xff0000)))))) ^ ((((
(0xff0000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000)))) >> 2)) - 1) & ((((((0xff0000)))) >>
2))) ^ ((((((0xff0000)))) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff0000)))))) - 1) & ((
((((0xff0000))))))) ^ ((((((0xff0000)))))))) >> (1)) !=
0) ? 1 : 0)))))) | ((bssid[5]) << ((((u_long)((((((0xff000000
)) - 1) & ((0xff000000))) ^ ((0xff000000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xff000000) >> 16)) -
1) & (((0xff000000) >> 16))) ^ (((0xff000000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000
) >> 16) >> 8)) - 1) & ((((0xff000000) >>
16) >> 8))) ^ ((((0xff000000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)
>> 16) >> 8) >> 4)) - 1) & (((((0xff000000
) >> 16) >> 8) >> 4))) ^ (((((0xff000000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xff000000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8) >> 4))) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4)))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff000000) >> 16) >> 8))) - 1) & ((
(((0xff000000) >> 16) >> 8)))) ^ (((((0xff000000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xff000000) >> 16) >> 8)) >>
2))) ^ ((((((0xff000000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8)))) - 1) & ((((((0xff000000) >>
16) >> 8))))) ^ ((((((0xff000000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff000000) >> 16))) - 1) & ((((0xff000000) >>
16)))) ^ ((((0xff000000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff000000) >> 16)) >>
4)) - 1) & (((((0xff000000) >> 16)) >> 4))) ^
(((((0xff000000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16)) >>
4) >> 2))) ^ ((((((0xff000000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000) >> 16)) >> 4))) - 1) & ((
((((0xff000000) >> 16)) >> 4)))) ^ ((((((0xff000000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xff000000) >> 16)))) - 1) &
(((((0xff000000) >> 16))))) ^ (((((0xff000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16))) >> 2)) - 1) & ((((((0xff000000) >>
16))) >> 2))) ^ ((((((0xff000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16))))) - 1) & ((((((0xff000000) >> 16))
)))) ^ ((((((0xff000000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xff000000))) - 1) & ((
(0xff000000)))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff000000)) >> 8)) - 1) & ((((
0xff000000)) >> 8))) ^ ((((0xff000000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8
) >> 4)) - 1) & (((((0xff000000)) >> 8) >>
4))) ^ (((((0xff000000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xff000000)) >>
8) >> 4) >> 2))) ^ ((((((0xff000000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000)) >> 8) >> 4))) - 1
) & ((((((0xff000000)) >> 8) >> 4)))) ^ (((((
(0xff000000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000)) >> 8))) -
1) & (((((0xff000000)) >> 8)))) ^ (((((0xff000000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff000000)) >> 8)) >> 2)) - 1) & ((((((0xff000000
)) >> 8)) >> 2))) ^ ((((((0xff000000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000)) >> 8)))) - 1) & ((((((0xff000000
)) >> 8))))) ^ ((((((0xff000000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1
) & ((((0xff000000))))) ^ ((((0xff000000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000))) >> 4)
) - 1) & (((((0xff000000))) >> 4))) ^ (((((0xff000000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff000000))) >> 4) >> 2)) - 1) & ((((((
0xff000000))) >> 4) >> 2))) ^ ((((((0xff000000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xff000000))) >> 4))) - 1) & (((
(((0xff000000))) >> 4)))) ^ ((((((0xff000000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
))))) - 1) & (((((0xff000000)))))) ^ (((((0xff000000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)
))) >> 2)) - 1) & ((((((0xff000000)))) >> 2))
) ^ ((((((0xff000000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000)))))) - 1) & ((
((((0xff000000))))))) ^ ((((((0xff000000)))))))) >> (1)
) != 0) ? 1 : 0))))))))))
2106 ~(ATW_ABDA1_BSSIDB4_MASK|ATW_ABDA1_BSSIDB5_MASK)) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xA8)), (((
(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xA8)))) &
~(0xff0000|0xff000000)) | ((bssid[4]) << ((((u_long)((
((((0xff0000)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff0000) >> 16))
- 1) & (((0xff0000) >> 16))) ^ (((0xff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff0000
) >> 16) >> 8)) - 1) & ((((0xff0000) >>
16) >> 8))) ^ ((((0xff0000) >> 16) >> 8)))
) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000) >>
16) >> 8) >> 4)) - 1) & (((((0xff0000) >>
16) >> 8) >> 4))) ^ (((((0xff0000) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff0000) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff0000) >> 16) >> 8) >> 4))) - 1
) & ((((((0xff0000) >> 16) >> 8) >> 4))
)) ^ ((((((0xff0000) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
) >> 16) >> 8))) - 1) & (((((0xff0000) >>
16) >> 8)))) ^ (((((0xff0000) >> 16) >> 8)
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16) >> 8)) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff0000) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16) >> 8))))
- 1) & ((((((0xff0000) >> 16) >> 8))))) ^ ((
((((0xff0000) >> 16) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000) >> 16))) - 1
) & ((((0xff0000) >> 16)))) ^ ((((0xff0000) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000
) >> 16)) >> 4)) - 1) & (((((0xff0000) >>
16)) >> 4))) ^ (((((0xff0000) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16)) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff0000) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16)) >> 4)))
- 1) & ((((((0xff0000) >> 16)) >> 4)))) ^ ((
((((0xff0000) >> 16)) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >> 16)))) -
1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000
) >> 16))) >> 2)) - 1) & ((((((0xff0000) >>
16))) >> 2))) ^ ((((((0xff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16))))) - 1) & ((((((0xff0000) >> 16))))
)) ^ ((((((0xff0000) >> 16))))))) >> (1)) != 0) ?
1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) & (((0xff0000
)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 + ((((u_long)
((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000)) >>
8))) ^ ((((0xff0000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000)) >> 8) >> 4)) - 1
) & (((((0xff0000)) >> 8) >> 4))) ^ (((((0xff0000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff0000)) >> 8) >> 4) >> 2)) - 1
) & ((((((0xff0000)) >> 8) >> 4) >> 2))
) ^ ((((((0xff0000)) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000)) >>
8) >> 4))) - 1) & ((((((0xff0000)) >> 8) >>
4)))) ^ ((((((0xff0000)) >> 8) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000)) >>
8))) - 1) & (((((0xff0000)) >> 8)))) ^ (((((0xff0000
)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000)) >> 8)) >> 2)) - 1) & ((((((0xff0000
)) >> 8)) >> 2))) ^ ((((((0xff0000)) >> 8))
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000)) >> 8)))) - 1) & ((((((0xff0000)) >>
8))))) ^ ((((((0xff0000)) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000)))) - 1) & (((
(0xff0000))))) ^ ((((0xff0000)))))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xff0000))) >> 4)) - 1) & ((((
(0xff0000))) >> 4))) ^ (((((0xff0000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000))) >> 4
) >> 2)) - 1) & ((((((0xff0000))) >> 4) >>
2))) ^ ((((((0xff0000))) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000))) >>
4))) - 1) & ((((((0xff0000))) >> 4)))) ^ ((((((0xff0000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff0000))))) - 1) & (((((0xff0000)))))) ^ ((((
(0xff0000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000)))) >> 2)) - 1) & ((((((0xff0000)))) >>
2))) ^ ((((((0xff0000)))) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff0000)))))) - 1) & ((
((((0xff0000))))))) ^ ((((((0xff0000)))))))) >> (1)) !=
0) ? 1 : 0)))))) | ((bssid[5]) << ((((u_long)((((((0xff000000
)) - 1) & ((0xff000000))) ^ ((0xff000000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xff000000) >> 16)) -
1) & (((0xff000000) >> 16))) ^ (((0xff000000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000
) >> 16) >> 8)) - 1) & ((((0xff000000) >>
16) >> 8))) ^ ((((0xff000000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)
>> 16) >> 8) >> 4)) - 1) & (((((0xff000000
) >> 16) >> 8) >> 4))) ^ (((((0xff000000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xff000000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8) >> 4))) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4)))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff000000) >> 16) >> 8))) - 1) & ((
(((0xff000000) >> 16) >> 8)))) ^ (((((0xff000000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xff000000) >> 16) >> 8)) >>
2))) ^ ((((((0xff000000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8)))) - 1) & ((((((0xff000000) >>
16) >> 8))))) ^ ((((((0xff000000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff000000) >> 16))) - 1) & ((((0xff000000) >>
16)))) ^ ((((0xff000000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff000000) >> 16)) >>
4)) - 1) & (((((0xff000000) >> 16)) >> 4))) ^
(((((0xff000000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16)) >>
4) >> 2))) ^ ((((((0xff000000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000) >> 16)) >> 4))) - 1) & ((
((((0xff000000) >> 16)) >> 4)))) ^ ((((((0xff000000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xff000000) >> 16)))) - 1) &
(((((0xff000000) >> 16))))) ^ (((((0xff000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16))) >> 2)) - 1) & ((((((0xff000000) >>
16))) >> 2))) ^ ((((((0xff000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16))))) - 1) & ((((((0xff000000) >> 16))
)))) ^ ((((((0xff000000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xff000000))) - 1) & ((
(0xff000000)))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff000000)) >> 8)) - 1) & ((((
0xff000000)) >> 8))) ^ ((((0xff000000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8
) >> 4)) - 1) & (((((0xff000000)) >> 8) >>
4))) ^ (((((0xff000000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xff000000)) >>
8) >> 4) >> 2))) ^ ((((((0xff000000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000)) >> 8) >> 4))) - 1
) & ((((((0xff000000)) >> 8) >> 4)))) ^ (((((
(0xff000000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000)) >> 8))) -
1) & (((((0xff000000)) >> 8)))) ^ (((((0xff000000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff000000)) >> 8)) >> 2)) - 1) & ((((((0xff000000
)) >> 8)) >> 2))) ^ ((((((0xff000000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000)) >> 8)))) - 1) & ((((((0xff000000
)) >> 8))))) ^ ((((((0xff000000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1
) & ((((0xff000000))))) ^ ((((0xff000000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000))) >> 4)
) - 1) & (((((0xff000000))) >> 4))) ^ (((((0xff000000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff000000))) >> 4) >> 2)) - 1) & ((((((
0xff000000))) >> 4) >> 2))) ^ ((((((0xff000000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xff000000))) >> 4))) - 1) & (((
(((0xff000000))) >> 4)))) ^ ((((((0xff000000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
))))) - 1) & (((((0xff000000)))))) ^ (((((0xff000000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)
))) >> 2)) - 1) & ((((((0xff000000)))) >> 2))
) ^ ((((((0xff000000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000)))))) - 1) & ((
((((0xff000000))))))) ^ ((((((0xff000000)))))))) >> (1)
) != 0) ? 1 : 0))))))))))
2107 LSHIFT(bssid[4], ATW_ABDA1_BSSIDB4_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xA8)), (((
(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xA8)))) &
~(0xff0000|0xff000000)) | ((bssid[4]) << ((((u_long)((
((((0xff0000)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff0000) >> 16))
- 1) & (((0xff0000) >> 16))) ^ (((0xff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff0000
) >> 16) >> 8)) - 1) & ((((0xff0000) >>
16) >> 8))) ^ ((((0xff0000) >> 16) >> 8)))
) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000) >>
16) >> 8) >> 4)) - 1) & (((((0xff0000) >>
16) >> 8) >> 4))) ^ (((((0xff0000) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff0000) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff0000) >> 16) >> 8) >> 4))) - 1
) & ((((((0xff0000) >> 16) >> 8) >> 4))
)) ^ ((((((0xff0000) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
) >> 16) >> 8))) - 1) & (((((0xff0000) >>
16) >> 8)))) ^ (((((0xff0000) >> 16) >> 8)
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16) >> 8)) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff0000) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16) >> 8))))
- 1) & ((((((0xff0000) >> 16) >> 8))))) ^ ((
((((0xff0000) >> 16) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000) >> 16))) - 1
) & ((((0xff0000) >> 16)))) ^ ((((0xff0000) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000
) >> 16)) >> 4)) - 1) & (((((0xff0000) >>
16)) >> 4))) ^ (((((0xff0000) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16)) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff0000) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16)) >> 4)))
- 1) & ((((((0xff0000) >> 16)) >> 4)))) ^ ((
((((0xff0000) >> 16)) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >> 16)))) -
1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000
) >> 16))) >> 2)) - 1) & ((((((0xff0000) >>
16))) >> 2))) ^ ((((((0xff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16))))) - 1) & ((((((0xff0000) >> 16))))
)) ^ ((((((0xff0000) >> 16))))))) >> (1)) != 0) ?
1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) & (((0xff0000
)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 + ((((u_long)
((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000)) >>
8))) ^ ((((0xff0000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000)) >> 8) >> 4)) - 1
) & (((((0xff0000)) >> 8) >> 4))) ^ (((((0xff0000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff0000)) >> 8) >> 4) >> 2)) - 1
) & ((((((0xff0000)) >> 8) >> 4) >> 2))
) ^ ((((((0xff0000)) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000)) >>
8) >> 4))) - 1) & ((((((0xff0000)) >> 8) >>
4)))) ^ ((((((0xff0000)) >> 8) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000)) >>
8))) - 1) & (((((0xff0000)) >> 8)))) ^ (((((0xff0000
)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000)) >> 8)) >> 2)) - 1) & ((((((0xff0000
)) >> 8)) >> 2))) ^ ((((((0xff0000)) >> 8))
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000)) >> 8)))) - 1) & ((((((0xff0000)) >>
8))))) ^ ((((((0xff0000)) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000)))) - 1) & (((
(0xff0000))))) ^ ((((0xff0000)))))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xff0000))) >> 4)) - 1) & ((((
(0xff0000))) >> 4))) ^ (((((0xff0000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000))) >> 4
) >> 2)) - 1) & ((((((0xff0000))) >> 4) >>
2))) ^ ((((((0xff0000))) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000))) >>
4))) - 1) & ((((((0xff0000))) >> 4)))) ^ ((((((0xff0000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff0000))))) - 1) & (((((0xff0000)))))) ^ ((((
(0xff0000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000)))) >> 2)) - 1) & ((((((0xff0000)))) >>
2))) ^ ((((((0xff0000)))) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff0000)))))) - 1) & ((
((((0xff0000))))))) ^ ((((((0xff0000)))))))) >> (1)) !=
0) ? 1 : 0)))))) | ((bssid[5]) << ((((u_long)((((((0xff000000
)) - 1) & ((0xff000000))) ^ ((0xff000000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xff000000) >> 16)) -
1) & (((0xff000000) >> 16))) ^ (((0xff000000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000
) >> 16) >> 8)) - 1) & ((((0xff000000) >>
16) >> 8))) ^ ((((0xff000000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)
>> 16) >> 8) >> 4)) - 1) & (((((0xff000000
) >> 16) >> 8) >> 4))) ^ (((((0xff000000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xff000000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8) >> 4))) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4)))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff000000) >> 16) >> 8))) - 1) & ((
(((0xff000000) >> 16) >> 8)))) ^ (((((0xff000000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xff000000) >> 16) >> 8)) >>
2))) ^ ((((((0xff000000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8)))) - 1) & ((((((0xff000000) >>
16) >> 8))))) ^ ((((((0xff000000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff000000) >> 16))) - 1) & ((((0xff000000) >>
16)))) ^ ((((0xff000000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff000000) >> 16)) >>
4)) - 1) & (((((0xff000000) >> 16)) >> 4))) ^
(((((0xff000000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16)) >>
4) >> 2))) ^ ((((((0xff000000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000) >> 16)) >> 4))) - 1) & ((
((((0xff000000) >> 16)) >> 4)))) ^ ((((((0xff000000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xff000000) >> 16)))) - 1) &
(((((0xff000000) >> 16))))) ^ (((((0xff000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16))) >> 2)) - 1) & ((((((0xff000000) >>
16))) >> 2))) ^ ((((((0xff000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16))))) - 1) & ((((((0xff000000) >> 16))
)))) ^ ((((((0xff000000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xff000000))) - 1) & ((
(0xff000000)))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff000000)) >> 8)) - 1) & ((((
0xff000000)) >> 8))) ^ ((((0xff000000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8
) >> 4)) - 1) & (((((0xff000000)) >> 8) >>
4))) ^ (((((0xff000000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xff000000)) >>
8) >> 4) >> 2))) ^ ((((((0xff000000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000)) >> 8) >> 4))) - 1
) & ((((((0xff000000)) >> 8) >> 4)))) ^ (((((
(0xff000000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000)) >> 8))) -
1) & (((((0xff000000)) >> 8)))) ^ (((((0xff000000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff000000)) >> 8)) >> 2)) - 1) & ((((((0xff000000
)) >> 8)) >> 2))) ^ ((((((0xff000000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000)) >> 8)))) - 1) & ((((((0xff000000
)) >> 8))))) ^ ((((((0xff000000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1
) & ((((0xff000000))))) ^ ((((0xff000000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000))) >> 4)
) - 1) & (((((0xff000000))) >> 4))) ^ (((((0xff000000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff000000))) >> 4) >> 2)) - 1) & ((((((
0xff000000))) >> 4) >> 2))) ^ ((((((0xff000000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xff000000))) >> 4))) - 1) & (((
(((0xff000000))) >> 4)))) ^ ((((((0xff000000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
))))) - 1) & (((((0xff000000)))))) ^ (((((0xff000000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)
))) >> 2)) - 1) & ((((((0xff000000)))) >> 2))
) ^ ((((((0xff000000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000)))))) - 1) & ((
((((0xff000000))))))) ^ ((((((0xff000000)))))))) >> (1)
) != 0) ? 1 : 0))))))))))
2108 LSHIFT(bssid[5], ATW_ABDA1_BSSIDB5_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xA8)), (((
(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xA8)))) &
~(0xff0000|0xff000000)) | ((bssid[4]) << ((((u_long)((
((((0xff0000)) - 1) & ((0xff0000))) ^ ((0xff0000)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xff0000) >> 16))
- 1) & (((0xff0000) >> 16))) ^ (((0xff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff0000
) >> 16) >> 8)) - 1) & ((((0xff0000) >>
16) >> 8))) ^ ((((0xff0000) >> 16) >> 8)))
) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000) >>
16) >> 8) >> 4)) - 1) & (((((0xff0000) >>
16) >> 8) >> 4))) ^ (((((0xff0000) >> 16) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff0000) >> 16) >> 8) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff0000) >> 16) >> 8) >> 4))) - 1
) & ((((((0xff0000) >> 16) >> 8) >> 4))
)) ^ ((((((0xff0000) >> 16) >> 8) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000
) >> 16) >> 8))) - 1) & (((((0xff0000) >>
16) >> 8)))) ^ (((((0xff0000) >> 16) >> 8)
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16) >> 8)) >> 2)) - 1) & ((((((0xff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff0000) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16) >> 8))))
- 1) & ((((((0xff0000) >> 16) >> 8))))) ^ ((
((((0xff0000) >> 16) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000) >> 16))) - 1
) & ((((0xff0000) >> 16)))) ^ ((((0xff0000) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff0000
) >> 16)) >> 4)) - 1) & (((((0xff0000) >>
16)) >> 4))) ^ (((((0xff0000) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000)
>> 16)) >> 4) >> 2)) - 1) & ((((((0xff0000
) >> 16)) >> 4) >> 2))) ^ ((((((0xff0000) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0xff0000) >> 16)) >> 4)))
- 1) & ((((((0xff0000) >> 16)) >> 4)))) ^ ((
((((0xff0000) >> 16)) >> 4))))) >> (1)) != 0
) ? 1 : 0)) : ((((u_long)(((((((((0xff0000) >> 16)))) -
1) & (((((0xff0000) >> 16))))) ^ (((((0xff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000
) >> 16))) >> 2)) - 1) & ((((((0xff0000) >>
16))) >> 2))) ^ ((((((0xff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000
) >> 16))))) - 1) & ((((((0xff0000) >> 16))))
)) ^ ((((((0xff0000) >> 16))))))) >> (1)) != 0) ?
1 : 0)))) : ((((u_long)(((((((0xff0000))) - 1) & (((0xff0000
)))) ^ (((0xff0000))))) >> (8)) != 0) ? 8 + ((((u_long)
((((((((0xff0000)) >> 8)) - 1) & ((((0xff0000)) >>
8))) ^ ((((0xff0000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff0000)) >> 8) >> 4)) - 1
) & (((((0xff0000)) >> 8) >> 4))) ^ (((((0xff0000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff0000)) >> 8) >> 4) >> 2)) - 1
) & ((((((0xff0000)) >> 8) >> 4) >> 2))
) ^ ((((((0xff0000)) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000)) >>
8) >> 4))) - 1) & ((((((0xff0000)) >> 8) >>
4)))) ^ ((((((0xff0000)) >> 8) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff0000)) >>
8))) - 1) & (((((0xff0000)) >> 8)))) ^ (((((0xff0000
)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff0000)) >> 8)) >> 2)) - 1) & ((((((0xff0000
)) >> 8)) >> 2))) ^ ((((((0xff0000)) >> 8))
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xff0000)) >> 8)))) - 1) & ((((((0xff0000)) >>
8))))) ^ ((((((0xff0000)) >> 8)))))) >> (1)) != 0
) ? 1 : 0))) : ((((u_long)((((((((0xff0000)))) - 1) & (((
(0xff0000))))) ^ ((((0xff0000)))))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xff0000))) >> 4)) - 1) & ((((
(0xff0000))) >> 4))) ^ (((((0xff0000))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff0000))) >> 4
) >> 2)) - 1) & ((((((0xff0000))) >> 4) >>
2))) ^ ((((((0xff0000))) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff0000))) >>
4))) - 1) & ((((((0xff0000))) >> 4)))) ^ ((((((0xff0000
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff0000))))) - 1) & (((((0xff0000)))))) ^ ((((
(0xff0000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff0000)))) >> 2)) - 1) & ((((((0xff0000)))) >>
2))) ^ ((((((0xff0000)))) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff0000)))))) - 1) & ((
((((0xff0000))))))) ^ ((((((0xff0000)))))))) >> (1)) !=
0) ? 1 : 0)))))) | ((bssid[5]) << ((((u_long)((((((0xff000000
)) - 1) & ((0xff000000))) ^ ((0xff000000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xff000000) >> 16)) -
1) & (((0xff000000) >> 16))) ^ (((0xff000000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xff000000
) >> 16) >> 8)) - 1) & ((((0xff000000) >>
16) >> 8))) ^ ((((0xff000000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)
>> 16) >> 8) >> 4)) - 1) & (((((0xff000000
) >> 16) >> 8) >> 4))) ^ (((((0xff000000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xff000000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff000000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8) >> 4))) - 1) & ((((((0xff000000) >> 16) >>
8) >> 4)))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff000000) >> 16) >> 8))) - 1) & ((
(((0xff000000) >> 16) >> 8)))) ^ (((((0xff000000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff000000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xff000000) >> 16) >> 8)) >>
2))) ^ ((((((0xff000000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16) >> 8)))) - 1) & ((((((0xff000000) >>
16) >> 8))))) ^ ((((((0xff000000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff000000) >> 16))) - 1) & ((((0xff000000) >>
16)))) ^ ((((0xff000000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff000000) >> 16)) >>
4)) - 1) & (((((0xff000000) >> 16)) >> 4))) ^
(((((0xff000000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xff000000) >> 16)) >>
4) >> 2))) ^ ((((((0xff000000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000) >> 16)) >> 4))) - 1) & ((
((((0xff000000) >> 16)) >> 4)))) ^ ((((((0xff000000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xff000000) >> 16)))) - 1) &
(((((0xff000000) >> 16))))) ^ (((((0xff000000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16))) >> 2)) - 1) & ((((((0xff000000) >>
16))) >> 2))) ^ ((((((0xff000000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
) >> 16))))) - 1) & ((((((0xff000000) >> 16))
)))) ^ ((((((0xff000000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xff000000))) - 1) & ((
(0xff000000)))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xff000000)) >> 8)) - 1) & ((((
0xff000000)) >> 8))) ^ ((((0xff000000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8
) >> 4)) - 1) & (((((0xff000000)) >> 8) >>
4))) ^ (((((0xff000000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xff000000)) >>
8) >> 4) >> 2))) ^ ((((((0xff000000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000)) >> 8) >> 4))) - 1
) & ((((((0xff000000)) >> 8) >> 4)))) ^ (((((
(0xff000000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xff000000)) >> 8))) -
1) & (((((0xff000000)) >> 8)))) ^ (((((0xff000000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xff000000)) >> 8)) >> 2)) - 1) & ((((((0xff000000
)) >> 8)) >> 2))) ^ ((((((0xff000000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xff000000)) >> 8)))) - 1) & ((((((0xff000000
)) >> 8))))) ^ ((((((0xff000000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1
) & ((((0xff000000))))) ^ ((((0xff000000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xff000000))) >> 4)
) - 1) & (((((0xff000000))) >> 4))) ^ (((((0xff000000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff000000))) >> 4) >> 2)) - 1) & ((((((
0xff000000))) >> 4) >> 2))) ^ ((((((0xff000000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xff000000))) >> 4))) - 1) & (((
(((0xff000000))) >> 4)))) ^ ((((((0xff000000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
))))) - 1) & (((((0xff000000)))))) ^ (((((0xff000000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000)
))) >> 2)) - 1) & ((((((0xff000000)))) >> 2))
) ^ ((((((0xff000000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff000000)))))) - 1) & ((
((((0xff000000))))))) ^ ((((((0xff000000)))))))) >> (1)
) != 0) ? 1 : 0))))))))))
;
2109
2110 DPRINTF(sc, ("%s: BSSID %s -> ", sc->sc_dev.dv_xname,
2111 ether_sprintf(sc->sc_bssid)));
2112 DPRINTF(sc, ("%s\n", ether_sprintf(bssid)));
2113
2114 memcpy(sc->sc_bssid, bssid, sizeof(sc->sc_bssid))__builtin_memcpy((sc->sc_bssid), (bssid), (sizeof(sc->sc_bssid
)))
;
2115}
2116
2117/* Write buflen bytes from buf to SRAM starting at the SRAM's ofs'th
2118 * 16-bit word.
2119 */
2120void
2121atw_write_sram(struct atw_softc *sc, u_int ofs, u_int8_t *buf, u_int buflen)
2122{
2123 u_int i;
2124 u_int8_t *ptr;
2125
2126 memcpy(&sc->sc_sram[ofs], buf, buflen)__builtin_memcpy((&sc->sc_sram[ofs]), (buf), (buflen));
2127
2128 KASSERT(ofs % 2 == 0 && buflen % 2 == 0)((ofs % 2 == 0 && buflen % 2 == 0) ? (void)0 : __assert
("diagnostic ", "/usr/src/sys/dev/ic/atw.c", 2128, "ofs % 2 == 0 && buflen % 2 == 0"
))
;
2129
2130 KASSERT(buflen + ofs <= sc->sc_sramlen)((buflen + ofs <= sc->sc_sramlen) ? (void)0 : __assert(
"diagnostic ", "/usr/src/sys/dev/ic/atw.c", 2130, "buflen + ofs <= sc->sc_sramlen"
))
;
2131
2132 ptr = &sc->sc_sram[ofs];
2133
2134 for (i = 0; i < buflen; i += 2) {
2135 ATW_WRITE(sc, ATW_WEPCTL, ATW_WEPCTL_WR |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xF0)), (((
1<<28) | (((ofs + i) / 2) << ((((u_long)((((((0x1ff
)) - 1) & ((0x1ff))) ^ ((0x1ff)))) >> (16)) != 0) ?
16 + ((((u_long)(((((((0x1ff) >> 16)) - 1) & (((0x1ff
) >> 16))) ^ (((0x1ff) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0x1ff) >> 16) >> 8))
- 1) & ((((0x1ff) >> 16) >> 8))) ^ ((((0x1ff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x1ff) >> 16) >> 8) >> 4)) - 1) &
(((((0x1ff) >> 16) >> 8) >> 4))) ^ (((((0x1ff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x1ff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0x1ff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0x1ff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x1ff) >> 16) >> 8) >>
4))) - 1) & ((((((0x1ff) >> 16) >> 8) >>
4)))) ^ ((((((0x1ff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1ff) >>
16) >> 8))) - 1) & (((((0x1ff) >> 16) >>
8)))) ^ (((((0x1ff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0x1ff) >> 16) >>
8)) >> 2)) - 1) & ((((((0x1ff) >> 16) >>
8)) >> 2))) ^ ((((((0x1ff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1ff
) >> 16) >> 8)))) - 1) & ((((((0x1ff) >>
16) >> 8))))) ^ ((((((0x1ff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1ff
) >> 16))) - 1) & ((((0x1ff) >> 16)))) ^ ((((
0x1ff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0x1ff) >> 16)) >> 4)) - 1) & (((((0x1ff
) >> 16)) >> 4))) ^ (((((0x1ff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff) >>
16)) >> 4) >> 2)) - 1) & ((((((0x1ff) >>
16)) >> 4) >> 2))) ^ ((((((0x1ff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x1ff) >> 16)) >> 4))) - 1) & (((((
(0x1ff) >> 16)) >> 4)))) ^ ((((((0x1ff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x1ff) >> 16)))) - 1) & (((((0x1ff) >>
16))))) ^ (((((0x1ff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0x1ff) >> 16))) >> 2)) -
1) & ((((((0x1ff) >> 16))) >> 2))) ^ ((((((0x1ff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x1ff) >> 16))))) - 1) & ((((
((0x1ff) >> 16)))))) ^ ((((((0x1ff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x1ff))) - 1) &
(((0x1ff)))) ^ (((0x1ff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x1ff)) >> 8)) - 1) & ((((0x1ff)) >>
8))) ^ ((((0x1ff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0x1ff)) >> 8) >> 4)) - 1) &
(((((0x1ff)) >> 8) >> 4))) ^ (((((0x1ff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x1ff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0x1ff)) >> 8) >> 4) >> 2))) ^ ((((((0x1ff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x1ff)) >> 8) >>
4))) - 1) & ((((((0x1ff)) >> 8) >> 4)))) ^ (
(((((0x1ff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x1ff)) >> 8))) - 1) &
(((((0x1ff)) >> 8)))) ^ (((((0x1ff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff)) >> 8)) >>
2)) - 1) & ((((((0x1ff)) >> 8)) >> 2))) ^ ((
((((0x1ff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x1ff)) >> 8)))) - 1) &
((((((0x1ff)) >> 8))))) ^ ((((((0x1ff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1ff)
))) - 1) & ((((0x1ff))))) ^ ((((0x1ff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0x1ff))) >> 4)) - 1) &
(((((0x1ff))) >> 4))) ^ (((((0x1ff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff))) >> 4) >>
2)) - 1) & ((((((0x1ff))) >> 4) >> 2))) ^ ((
((((0x1ff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x1ff))) >> 4))) - 1) &
((((((0x1ff))) >> 4)))) ^ ((((((0x1ff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1ff)
)))) - 1) & (((((0x1ff)))))) ^ (((((0x1ff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff)))) >> 2))
- 1) & ((((((0x1ff)))) >> 2))) ^ ((((((0x1ff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1ff
)))))) - 1) & ((((((0x1ff))))))) ^ ((((((0x1ff)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
2136 LSHIFT((ofs + i) / 2, ATW_WEPCTL_TBLADD_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xF0)), (((
1<<28) | (((ofs + i) / 2) << ((((u_long)((((((0x1ff
)) - 1) & ((0x1ff))) ^ ((0x1ff)))) >> (16)) != 0) ?
16 + ((((u_long)(((((((0x1ff) >> 16)) - 1) & (((0x1ff
) >> 16))) ^ (((0x1ff) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0x1ff) >> 16) >> 8))
- 1) & ((((0x1ff) >> 16) >> 8))) ^ ((((0x1ff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x1ff) >> 16) >> 8) >> 4)) - 1) &
(((((0x1ff) >> 16) >> 8) >> 4))) ^ (((((0x1ff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x1ff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0x1ff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0x1ff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x1ff) >> 16) >> 8) >>
4))) - 1) & ((((((0x1ff) >> 16) >> 8) >>
4)))) ^ ((((((0x1ff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1ff) >>
16) >> 8))) - 1) & (((((0x1ff) >> 16) >>
8)))) ^ (((((0x1ff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0x1ff) >> 16) >>
8)) >> 2)) - 1) & ((((((0x1ff) >> 16) >>
8)) >> 2))) ^ ((((((0x1ff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1ff
) >> 16) >> 8)))) - 1) & ((((((0x1ff) >>
16) >> 8))))) ^ ((((((0x1ff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1ff
) >> 16))) - 1) & ((((0x1ff) >> 16)))) ^ ((((
0x1ff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0x1ff) >> 16)) >> 4)) - 1) & (((((0x1ff
) >> 16)) >> 4))) ^ (((((0x1ff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff) >>
16)) >> 4) >> 2)) - 1) & ((((((0x1ff) >>
16)) >> 4) >> 2))) ^ ((((((0x1ff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x1ff) >> 16)) >> 4))) - 1) & (((((
(0x1ff) >> 16)) >> 4)))) ^ ((((((0x1ff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x1ff) >> 16)))) - 1) & (((((0x1ff) >>
16))))) ^ (((((0x1ff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0x1ff) >> 16))) >> 2)) -
1) & ((((((0x1ff) >> 16))) >> 2))) ^ ((((((0x1ff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x1ff) >> 16))))) - 1) & ((((
((0x1ff) >> 16)))))) ^ ((((((0x1ff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x1ff))) - 1) &
(((0x1ff)))) ^ (((0x1ff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x1ff)) >> 8)) - 1) & ((((0x1ff)) >>
8))) ^ ((((0x1ff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0x1ff)) >> 8) >> 4)) - 1) &
(((((0x1ff)) >> 8) >> 4))) ^ (((((0x1ff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x1ff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0x1ff)) >> 8) >> 4) >> 2))) ^ ((((((0x1ff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x1ff)) >> 8) >>
4))) - 1) & ((((((0x1ff)) >> 8) >> 4)))) ^ (
(((((0x1ff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x1ff)) >> 8))) - 1) &
(((((0x1ff)) >> 8)))) ^ (((((0x1ff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff)) >> 8)) >>
2)) - 1) & ((((((0x1ff)) >> 8)) >> 2))) ^ ((
((((0x1ff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x1ff)) >> 8)))) - 1) &
((((((0x1ff)) >> 8))))) ^ ((((((0x1ff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1ff)
))) - 1) & ((((0x1ff))))) ^ ((((0x1ff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0x1ff))) >> 4)) - 1) &
(((((0x1ff))) >> 4))) ^ (((((0x1ff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff))) >> 4) >>
2)) - 1) & ((((((0x1ff))) >> 4) >> 2))) ^ ((
((((0x1ff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x1ff))) >> 4))) - 1) &
((((((0x1ff))) >> 4)))) ^ ((((((0x1ff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1ff)
)))) - 1) & (((((0x1ff)))))) ^ (((((0x1ff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x1ff)))) >> 2))
- 1) & ((((((0x1ff)))) >> 2))) ^ ((((((0x1ff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1ff
)))))) - 1) & ((((((0x1ff))))))) ^ ((((((0x1ff)))))))) >>
(1)) != 0) ? 1 : 0))))))))))
;
2137 DELAY(atw_writewep_delay)(*delay_func)(atw_writewep_delay);
2138
2139 ATW_WRITE(sc, ATW_WESK,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xF4)), (((
((ptr[i + 1] << 8) | ptr[i]) << ((((u_long)((((((
0xffff)) - 1) & ((0xffff))) ^ ((0xffff)))) >> (16))
!= 0) ? 16 + ((((u_long)(((((((0xffff) >> 16)) - 1) &
(((0xffff) >> 16))) ^ (((0xffff) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff) >> 16) >>
8)) - 1) & ((((0xffff) >> 16) >> 8))) ^ ((((
0xffff) >> 16) >> 8)))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xffff) >> 16) >> 8) >>
4)) - 1) & (((((0xffff) >> 16) >> 8) >>
4))) ^ (((((0xffff) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8) >> 4) >> 2))) ^ ((((((0xffff) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xffff) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff) >> 16) >>
8) >> 4)))) ^ ((((((0xffff) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16) >> 8))) - 1) & (((((0xffff) >>
16) >> 8)))) ^ (((((0xffff) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8)) >> 2))) ^ ((((((0xffff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16) >> 8)))) - 1) & (((
(((0xffff) >> 16) >> 8))))) ^ ((((((0xffff) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff) >> 16))) - 1) & ((((0xffff) >>
16)))) ^ ((((0xffff) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff) >> 16)) >> 4)) - 1
) & (((((0xffff) >> 16)) >> 4))) ^ (((((0xffff
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xffff) >> 16)) >> 4) >>
2))) ^ ((((((0xffff) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16)) >> 4))) - 1) & ((((((0xffff) >>
16)) >> 4)))) ^ ((((((0xffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16)))) - 1) & (((((0xffff) >> 16))))) ^ (
((((0xffff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff) >> 16))) >> 2)) - 1) & (((
(((0xffff) >> 16))) >> 2))) ^ ((((((0xffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16))))) - 1) & ((((((0xffff) >>
16)))))) ^ ((((((0xffff) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff
)))) ^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8
))) ^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) &
(((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
2140 LSHIFT((ptr[i + 1] << 8) | ptr[i], ATW_WESK_DATA_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xF4)), (((
((ptr[i + 1] << 8) | ptr[i]) << ((((u_long)((((((
0xffff)) - 1) & ((0xffff))) ^ ((0xffff)))) >> (16))
!= 0) ? 16 + ((((u_long)(((((((0xffff) >> 16)) - 1) &
(((0xffff) >> 16))) ^ (((0xffff) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff) >> 16) >>
8)) - 1) & ((((0xffff) >> 16) >> 8))) ^ ((((
0xffff) >> 16) >> 8)))) >> (4)) != 0) ? 4 +
((((u_long)(((((((((0xffff) >> 16) >> 8) >>
4)) - 1) & (((((0xffff) >> 16) >> 8) >>
4))) ^ (((((0xffff) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8) >> 4) >> 2))) ^ ((((((0xffff) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xffff) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff) >> 16) >>
8) >> 4)))) ^ ((((((0xffff) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16) >> 8))) - 1) & (((((0xffff) >>
16) >> 8)))) ^ (((((0xffff) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8)) >> 2))) ^ ((((((0xffff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16) >> 8)))) - 1) & (((
(((0xffff) >> 16) >> 8))))) ^ ((((((0xffff) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff) >> 16))) - 1) & ((((0xffff) >>
16)))) ^ ((((0xffff) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff) >> 16)) >> 4)) - 1
) & (((((0xffff) >> 16)) >> 4))) ^ (((((0xffff
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xffff) >> 16)) >> 4) >>
2))) ^ ((((((0xffff) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16)) >> 4))) - 1) & ((((((0xffff) >>
16)) >> 4)))) ^ ((((((0xffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16)))) - 1) & (((((0xffff) >> 16))))) ^ (
((((0xffff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff) >> 16))) >> 2)) - 1) & (((
(((0xffff) >> 16))) >> 2))) ^ ((((((0xffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16))))) - 1) & ((((((0xffff) >>
16)))))) ^ ((((((0xffff) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff
)))) ^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8
))) ^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) &
(((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
;
2141 DELAY(atw_writewep_delay)(*delay_func)(atw_writewep_delay);
2142 }
2143 ATW_WRITE(sc, ATW_WEPCTL, sc->sc_wepctl)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xF0)), ((sc
->sc_wepctl))))
; /* restore WEP condition */
2144
2145 if (sc->sc_ifsc_ic.ic_ac.ac_if.if_flags & IFF_DEBUG0x4) {
2146 int n_octets = 0;
2147 printf("%s: wrote %d bytes at 0x%x wepctl 0x%08x\n",
2148 sc->sc_dev.dv_xname, buflen, ofs, sc->sc_wepctl);
2149 for (i = 0; i < buflen; i++) {
2150 printf(" %02x", ptr[i]);
2151 if (++n_octets % 24 == 0)
2152 printf("\n");
2153 }
2154 if (n_octets % 24 != 0)
2155 printf("\n");
2156 }
2157}
2158
2159/* Write WEP keys from the ieee80211com to the ADM8211's SRAM. */
2160void
2161atw_write_wep(struct atw_softc *sc)
2162{
2163 struct ieee80211com *ic = &sc->sc_ic;
2164#if 0
2165 u_int32_t reg;
2166 int i;
2167#endif
2168 /* SRAM shared-key record format: key0 flags key1 ... key12 */
2169 u_int8_t buf[IEEE80211_WEP_NKID4]
2170 [1 /* key[0] */ + 1 /* flags */ + 12 /* key[1 .. 12] */];
2171
2172 sc->sc_wepctl = 0;
2173 ATW_WRITE(sc, ATW_WEPCTL, sc->sc_wepctl)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xF0)), ((sc
->sc_wepctl))))
;
2174
2175 if ((ic->ic_flags & IEEE80211_F_WEPON0x00000100) == 0)
2176 return;
2177
2178 memset(&buf[0][0], 0, sizeof(buf))__builtin_memset((&buf[0][0]), (0), (sizeof(buf)));
2179
2180#if 0
2181 for (i = 0; i < IEEE80211_WEP_NKID4; i++) {
2182 if (ic->ic_nw_keys[i].k_len > 5) {
2183 buf[i][1] = ATW_WEP_ENABLED(1<<7) | ATW_WEP_104BIT(1<<6);
2184 } else if (ic->ic_nw_keys[i].k_len != 0) {
2185 buf[i][1] = ATW_WEP_ENABLED(1<<7);
2186 } else {
2187 buf[i][1] = 0;
2188 continue;
2189 }
2190 buf[i][0] = ic->ic_nw_keys[i].k_key[0];
2191 memcpy(&buf[i][2], &ic->ic_nw_keys[i].k_key[1],__builtin_memcpy((&buf[i][2]), (&ic->ic_nw_keys[i]
.k_key[1]), (ic->ic_nw_keys[i].k_len - 1))
2192 ic->ic_nw_keys[i].k_len - 1)__builtin_memcpy((&buf[i][2]), (&ic->ic_nw_keys[i]
.k_key[1]), (ic->ic_nw_keys[i].k_len - 1))
;
2193 }
2194
2195 reg = ATW_READ(sc, ATW_MACTEST)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xFC))));
2196 reg |= ATW_MACTEST_MMI_USETXCLK(1<<11) | ATW_MACTEST_FORCE_KEYID(1<<22);
2197 reg &= ~ATW_MACTEST_KEYID_MASK0x300000;
2198 reg |= LSHIFT(ic->ic_wep_txkey, ATW_MACTEST_KEYID_MASK)((ic->ic_def_txkey) << ((((u_long)((((((0x300000)) -
1) & ((0x300000))) ^ ((0x300000)))) >> (16)) != 0)
? 16 + ((((u_long)(((((((0x300000) >> 16)) - 1) & (
((0x300000) >> 16))) ^ (((0x300000) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0x300000) >> 16) >>
8)) - 1) & ((((0x300000) >> 16) >> 8))) ^ ((
((0x300000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x300000) >> 16) >> 8) >>
4)) - 1) & (((((0x300000) >> 16) >> 8) >>
4))) ^ (((((0x300000) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x300000) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0x300000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x300000) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x300000
) >> 16) >> 8) >> 4))) - 1) & ((((((0x300000
) >> 16) >> 8) >> 4)))) ^ ((((((0x300000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x300000) >> 16) >> 8))) -
1) & (((((0x300000) >> 16) >> 8)))) ^ (((((0x300000
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x300000) >> 16) >> 8)) >>
2)) - 1) & ((((((0x300000) >> 16) >> 8)) >>
2))) ^ ((((((0x300000) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x300000
) >> 16) >> 8)))) - 1) & ((((((0x300000) >>
16) >> 8))))) ^ ((((((0x300000) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x300000
) >> 16))) - 1) & ((((0x300000) >> 16)))) ^ (
(((0x300000) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x300000) >> 16)) >> 4)) - 1) & (((
((0x300000) >> 16)) >> 4))) ^ (((((0x300000) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0x300000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x300000) >> 16)) >> 4) >> 2))) ^ ((
((((0x300000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x300000) >>
16)) >> 4))) - 1) & ((((((0x300000) >> 16)) >>
4)))) ^ ((((((0x300000) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x300000) >>
16)))) - 1) & (((((0x300000) >> 16))))) ^ (((((0x300000
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x300000) >> 16))) >> 2)) - 1) & ((((((
0x300000) >> 16))) >> 2))) ^ ((((((0x300000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x300000) >> 16))))) - 1) & ((((((0x300000
) >> 16)))))) ^ ((((((0x300000) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x300000))) - 1) &
(((0x300000)))) ^ (((0x300000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0x300000)) >> 8)) - 1) & ((((0x300000
)) >> 8))) ^ ((((0x300000)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0x300000)) >> 8) >>
4)) - 1) & (((((0x300000)) >> 8) >> 4))) ^ (
((((0x300000)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x300000)) >> 8) >> 4
) >> 2)) - 1) & ((((((0x300000)) >> 8) >>
4) >> 2))) ^ ((((((0x300000)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x300000
)) >> 8) >> 4))) - 1) & ((((((0x300000)) >>
8) >> 4)))) ^ ((((((0x300000)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x300000
)) >> 8))) - 1) & (((((0x300000)) >> 8)))) ^ (
((((0x300000)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0x300000)) >> 8)) >> 2)) - 1) &
((((((0x300000)) >> 8)) >> 2))) ^ ((((((0x300000
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0x300000)) >> 8)))) - 1) & ((
((((0x300000)) >> 8))))) ^ ((((((0x300000)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x300000
)))) - 1) & ((((0x300000))))) ^ ((((0x300000)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0x300000))) >> 4)
) - 1) & (((((0x300000))) >> 4))) ^ (((((0x300000))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x300000))) >> 4) >> 2)) - 1) & ((((((0x300000
))) >> 4) >> 2))) ^ ((((((0x300000))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x300000))) >> 4))) - 1) & ((((((0x300000)))
>> 4)))) ^ ((((((0x300000))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x300000))))) - 1) &
(((((0x300000)))))) ^ (((((0x300000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x300000)))) >> 2)) - 1) &
((((((0x300000)))) >> 2))) ^ ((((((0x300000)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x300000
)))))) - 1) & ((((((0x300000))))))) ^ ((((((0x300000)))))
))) >> (1)) != 0) ? 1 : 0))))))
;
2199 ATW_WRITE(sc, ATW_MACTEST, reg)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xFC)), ((reg
))))
;
2200
2201 sc->sc_wepctl = ATW_WEPCTL_WEPENABLE(1<<31);
2202
2203 switch (sc->sc_rev) {
2204 case ATW_REVISION_AB:
2205 case ATW_REVISION_AF:
2206 /* Bypass WEP on Rx. */
2207 sc->sc_wepctl |= ATW_WEPCTL_WEPRXBYP(1<<25);
2208 break;
2209 default:
2210 break;
2211 }
2212#endif
2213
2214 atw_write_sram(sc, ATW_SRAM_ADDR_SHARED_KEY(0x160 * 2), (u_int8_t*)&buf[0][0],
2215 sizeof(buf));
2216}
2217
2218void
2219atw_change_ibss(struct atw_softc *sc)
2220{
2221 atw_predict_beacon(sc);
2222 atw_write_bssid(sc);
2223 atw_start_beacon(sc, 1);
2224}
2225
2226#ifndef IEEE80211_STA_ONLY
2227void
2228atw_recv_mgmt(struct ieee80211com *ic, struct mbuf *m,
2229 struct ieee80211_node *ni, struct ieee80211_rxinfo *rxi, int subtype)
2230{
2231 struct atw_softc *sc = (struct atw_softc*)ic->ic_softcic_ac.ac_if.if_softc;
2232
2233 /* The ADM8211A answers probe requests. */
2234 if (subtype == IEEE80211_FC0_SUBTYPE_PROBE_REQ0x40 &&
2235 sc->sc_rev < ATW_REVISION_BA)
2236 return;
2237
2238 (*sc->sc_recv_mgmt)(ic, m, ni, rxi, subtype);
2239
2240 switch (subtype) {
2241 case IEEE80211_FC0_SUBTYPE_PROBE_RESP0x50:
2242 case IEEE80211_FC0_SUBTYPE_BEACON0x80:
2243 if (ic->ic_opmode != IEEE80211_M_IBSS ||
2244 ic->ic_state != IEEE80211_S_RUN)
2245 break;
2246 if (ieee80211_ibss_merge(ic, ni, atw_get_tsft(sc)) == ENETRESET52)
2247 atw_change_ibss(sc);
2248 break;
2249 default:
2250 break;
2251 }
2252 return;
2253}
2254#endif
2255
2256/* Write the SSID in the ieee80211com to the SRAM on the ADM8211.
2257 * In ad hoc mode, the SSID is written to the beacons sent by the
2258 * ADM8211. In both ad hoc and infrastructure mode, beacons received
2259 * with matching SSID affect ATW_INTR_LINKON/ATW_INTR_LINKOFF
2260 * indications.
2261 */
2262void
2263atw_write_ssid(struct atw_softc *sc)
2264{
2265 struct ieee80211com *ic = &sc->sc_ic;
2266 /* 34 bytes are reserved in ADM8211 SRAM for the SSID, but
2267 * it only expects the element length, not its ID.
2268 */
2269 u_int8_t buf[roundup(1 /* length */ + IEEE80211_NWID_LEN, 2)((((1 + 32)+((2)-1))/(2))*(2))];
2270
2271 memset(buf, 0, sizeof(buf))__builtin_memset((buf), (0), (sizeof(buf)));
2272 buf[0] = ic->ic_bss->ni_esslen;
2273 memcpy(&buf[1], ic->ic_bss->ni_essid, ic->ic_bss->ni_esslen)__builtin_memcpy((&buf[1]), (ic->ic_bss->ni_essid),
(ic->ic_bss->ni_esslen))
;
2274
2275 atw_write_sram(sc, ATW_SRAM_ADDR_SSID(0x180 * 2), buf,
2276 roundup(1 + ic->ic_bss->ni_esslen, 2)((((1 + ic->ic_bss->ni_esslen)+((2)-1))/(2))*(2)));
2277}
2278
2279/* Write the supported rates in the ieee80211com to the SRAM of the ADM8211.
2280 * In ad hoc mode, the supported rates are written to beacons sent by the
2281 * ADM8211.
2282 */
2283void
2284atw_write_sup_rates(struct atw_softc *sc)
2285{
2286 struct ieee80211com *ic = &sc->sc_ic;
2287 /*
2288 * There is not enough space in the ADM8211 SRAM for the
2289 * full IEEE80211_RATE_MAXSIZE
2290 */
2291 u_int8_t buf[12];
2292 u_int8_t nrates;
2293
2294 memset(buf, 0, sizeof(buf))__builtin_memset((buf), (0), (sizeof(buf)));
2295 if (ic->ic_bss->ni_rates.rs_nrates > sizeof(buf) - 1)
2296 nrates = sizeof(buf) - 1;
2297 else
2298 nrates = ic->ic_bss->ni_rates.rs_nrates;
2299 buf[0] = nrates;
2300 memcpy(&buf[1], ic->ic_bss->ni_rates.rs_rates, nrates)__builtin_memcpy((&buf[1]), (ic->ic_bss->ni_rates.rs_rates
), (nrates))
;
2301
2302 /* XXX deal with rev BA bug linux driver talks of? */
2303
2304 atw_write_sram(sc, ATW_SRAM_ADDR_SUPRATES(0x191 * 2), buf, sizeof(buf));
2305}
2306
2307/* Start/stop sending beacons. */
2308void
2309atw_start_beacon(struct atw_softc *sc, int start)
2310{
2311 struct ieee80211com *ic = &sc->sc_ic;
2312#ifndef IEEE80211_STA_ONLY
2313 uint16_t chan;
2314 uint32_t bpli;
2315#endif
2316 uint32_t bcnt, cap0, cap1, capinfo;
2317 size_t len;
2318
2319 if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000) == 0)
2320 return;
2321
2322 /* start beacons */
2323 len = sizeof(struct ieee80211_frame) +
2324 8 /* timestamp */ + 2 /* beacon interval */ +
2325 2 /* capability info */ +
2326 2 + ic->ic_bss->ni_esslen /* SSID element */ +
2327 2 + ic->ic_bss->ni_rates.rs_nrates /* rates element */ +
2328 3 /* DS parameters */ +
2329 IEEE80211_CRC_LEN4;
2330
2331 bcnt = ATW_READ(sc, ATW_BCNT)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xB8)))) & ~ATW_BCNT_BCNT_MASK0xff;
2332 cap0 = ATW_READ(sc, ATW_CAP0)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xCC)))) & ~ATW_CAP0_CHN_MASK0xf;
2333 cap1 = ATW_READ(sc, ATW_CAP1)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xD0)))) & ~ATW_CAP1_CAPI_MASK0xffff0000;
2334
2335 ATW_WRITE(sc, ATW_BCNT, bcnt)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xB8)), ((bcnt
))))
;
2336 ATW_WRITE(sc, ATW_CAP1, cap1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xD0)), ((cap1
))))
;
2337
2338 if (!start)
2339 return;
2340
2341 /* TBD use ni_capinfo */
2342
2343 capinfo = 0;
2344 if (sc->sc_flags & ATWF_SHORT_PREAMBLE0x00000080)
2345 capinfo |= IEEE80211_CAPINFO_SHORT_PREAMBLE0x0020;
2346 if (ic->ic_flags & IEEE80211_F_WEPON0x00000100)
2347 capinfo |= IEEE80211_CAPINFO_PRIVACY0x0010;
2348
2349#ifndef IEEE80211_STA_ONLY
2350 switch (ic->ic_opmode) {
2351 case IEEE80211_M_IBSS:
2352 len += 4; /* IBSS parameters */
2353 capinfo |= IEEE80211_CAPINFO_IBSS0x0002;
2354 break;
2355 default:
2356 return;
2357 }
2358
2359 /* set listen interval
2360 * XXX do software units agree w/ hardware?
2361 */
2362 bpli = LSHIFT(ic->ic_bss->ni_intval, ATW_BPLI_BP_MASK)((ic->ic_bss->ni_intval) << ((((u_long)((((((0xffff0000
)) - 1) & ((0xffff0000))) ^ ((0xffff0000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xffff0000) >> 16)) -
1) & (((0xffff0000) >> 16))) ^ (((0xffff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xffff0000
) >> 16) >> 8)) - 1) & ((((0xffff0000) >>
16) >> 8))) ^ ((((0xffff0000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)
>> 16) >> 8) >> 4)) - 1) & (((((0xffff0000
) >> 16) >> 8) >> 4))) ^ (((((0xffff0000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4)))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xffff0000) >> 16) >> 8))) - 1) & ((
(((0xffff0000) >> 16) >> 8)))) ^ (((((0xffff0000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff0000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xffff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xffff0000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)))) - 1) & ((((((0xffff0000) >>
16) >> 8))))) ^ ((((((0xffff0000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xffff0000) >> 16))) - 1) & ((((0xffff0000) >>
16)))) ^ ((((0xffff0000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xffff0000) >> 16)) >>
4)) - 1) & (((((0xffff0000) >> 16)) >> 4))) ^
(((((0xffff0000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16)) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000) >> 16)) >> 4))) - 1) & ((
((((0xffff0000) >> 16)) >> 4)))) ^ ((((((0xffff0000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xffff0000) >> 16)))) - 1) &
(((((0xffff0000) >> 16))))) ^ (((((0xffff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16))) >> 2)) - 1) & ((((((0xffff0000) >>
16))) >> 2))) ^ ((((((0xffff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16))))) - 1) & ((((((0xffff0000) >> 16))
)))) ^ ((((((0xffff0000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xffff0000))) - 1) & ((
(0xffff0000)))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff0000)) >> 8)) - 1) & ((((
0xffff0000)) >> 8))) ^ ((((0xffff0000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8
) >> 4)) - 1) & (((((0xffff0000)) >> 8) >>
4))) ^ (((((0xffff0000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xffff0000)) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000)) >> 8) >> 4))) - 1
) & ((((((0xffff0000)) >> 8) >> 4)))) ^ (((((
(0xffff0000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff0000)) >> 8))) -
1) & (((((0xffff0000)) >> 8)))) ^ (((((0xffff0000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xffff0000)) >> 8)) >> 2)) - 1) & ((((((0xffff0000
)) >> 8)) >> 2))) ^ ((((((0xffff0000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xffff0000)) >> 8)))) - 1) & ((((((0xffff0000
)) >> 8))))) ^ ((((((0xffff0000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1
) & ((((0xffff0000))))) ^ ((((0xffff0000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000))) >> 4)
) - 1) & (((((0xffff0000))) >> 4))) ^ (((((0xffff0000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff0000))) >> 4) >> 2)) - 1) & ((((((
0xffff0000))) >> 4) >> 2))) ^ ((((((0xffff0000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xffff0000))) >> 4))) - 1) & (((
(((0xffff0000))) >> 4)))) ^ ((((((0xffff0000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
))))) - 1) & (((((0xffff0000)))))) ^ (((((0xffff0000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)
))) >> 2)) - 1) & ((((((0xffff0000)))) >> 2))
) ^ ((((((0xffff0000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000)))))) - 1) & ((
((((0xffff0000))))))) ^ ((((((0xffff0000)))))))) >> (1)
) != 0) ? 1 : 0))))))
|
2363 LSHIFT(ic->ic_lintval / ic->ic_bss->ni_intval, ATW_BPLI_LI_MASK)((ic->ic_lintval / ic->ic_bss->ni_intval) << (
(((u_long)((((((0xffff)) - 1) & ((0xffff))) ^ ((0xffff)))
) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xffff) >>
16)) - 1) & (((0xffff) >> 16))) ^ (((0xffff) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xffff) >>
16) >> 8)) - 1) & ((((0xffff) >> 16) >>
8))) ^ ((((0xffff) >> 16) >> 8)))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xffff) >> 16) >>
8) >> 4)) - 1) & (((((0xffff) >> 16) >>
8) >> 4))) ^ (((((0xffff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)
>> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff) >> 16) >> 8) >> 4) >> 2
))) ^ ((((((0xffff) >> 16) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
) >> 16) >> 8) >> 4))) - 1) & ((((((0xffff
) >> 16) >> 8) >> 4)))) ^ ((((((0xffff) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff) >> 16) >> 8))) - 1
) & (((((0xffff) >> 16) >> 8)))) ^ (((((0xffff
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16) >> 8)) >> 2
)) - 1) & ((((((0xffff) >> 16) >> 8)) >>
2))) ^ ((((((0xffff) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16) >> 8)))) - 1) & ((((((0xffff) >>
16) >> 8))))) ^ ((((((0xffff) >> 16) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff
) >> 16))) - 1) & ((((0xffff) >> 16)))) ^ (((
(0xffff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xffff) >> 16)) >> 4)) - 1) & (((((
0xffff) >> 16)) >> 4))) ^ (((((0xffff) >> 16
)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xffff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff) >> 16)) >> 4) >> 2))) ^ ((((
((0xffff) >> 16)) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff) >> 16
)) >> 4))) - 1) & ((((((0xffff) >> 16)) >>
4)))) ^ ((((((0xffff) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff) >> 16
)))) - 1) & (((((0xffff) >> 16))))) ^ (((((0xffff) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff
) >> 16))) >> 2)) - 1) & ((((((0xffff) >>
16))) >> 2))) ^ ((((((0xffff) >> 16))) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
) >> 16))))) - 1) & ((((((0xffff) >> 16))))))
^ ((((((0xffff) >> 16))))))) >> (1)) != 0) ? 1 :
0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff))))
^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8)))
^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + ((((
u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) & (
((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
2364
2365 chan = ieee80211_chan2ieee(ic, ic->ic_bss->ni_chan);
2366
2367 bcnt |= LSHIFT(len, ATW_BCNT_BCNT_MASK)((len) << ((((u_long)((((((0xff)) - 1) & ((0xff))) ^
((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff
) >> 16)) - 1) & (((0xff) >> 16))) ^ (((0xff)
>> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(((((((
(0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
2368 cap0 |= LSHIFT(chan, ATW_CAP0_CHN_MASK)((chan) << ((((u_long)((((((0xf)) - 1) & ((0xf))) ^
((0xf)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xf)
>> 16)) - 1) & (((0xf) >> 16))) ^ (((0xf) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xf) >>
16) >> 8)) - 1) & ((((0xf) >> 16) >> 8
))) ^ ((((0xf) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xf) >> 16) >> 8) >>
4)) - 1) & (((((0xf) >> 16) >> 8) >> 4
))) ^ (((((0xf) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xf) >> 16
) >> 8) >> 4) >> 2))) ^ ((((((0xf) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xf) >> 16) >> 8
) >> 4))) - 1) & ((((((0xf) >> 16) >> 8
) >> 4)))) ^ ((((((0xf) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf
) >> 16) >> 8))) - 1) & (((((0xf) >> 16
) >> 8)))) ^ (((((0xf) >> 16) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xf) >> 16) >>
8)) >> 2)) - 1) & ((((((0xf) >> 16) >>
8)) >> 2))) ^ ((((((0xf) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf
) >> 16) >> 8)))) - 1) & ((((((0xf) >> 16
) >> 8))))) ^ ((((((0xf) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf) >> 16)
)) - 1) & ((((0xf) >> 16)))) ^ ((((0xf) >> 16
))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf) >>
16)) >> 4)) - 1) & (((((0xf) >> 16)) >>
4))) ^ (((((0xf) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xf) >> 16)) >> 4)
>> 2)) - 1) & ((((((0xf) >> 16)) >> 4)
>> 2))) ^ ((((((0xf) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf
) >> 16)) >> 4))) - 1) & ((((((0xf) >> 16
)) >> 4)))) ^ ((((((0xf) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf) >> 16)
))) - 1) & (((((0xf) >> 16))))) ^ (((((0xf) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf)
>> 16))) >> 2)) - 1) & ((((((0xf) >> 16
))) >> 2))) ^ ((((((0xf) >> 16))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf) >> 16)
)))) - 1) & ((((((0xf) >> 16)))))) ^ ((((((0xf) >>
16))))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((
((0xf))) - 1) & (((0xf)))) ^ (((0xf))))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xf)) >> 8)) - 1) & ((
((0xf)) >> 8))) ^ ((((0xf)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xf)) >> 8) >> 4
)) - 1) & (((((0xf)) >> 8) >> 4))) ^ (((((0xf
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf)) >> 8) >> 4) >> 2)) - 1) &
((((((0xf)) >> 8) >> 4) >> 2))) ^ ((((((0xf
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xf)) >> 8) >> 4
))) - 1) & ((((((0xf)) >> 8) >> 4)))) ^ (((((
(0xf)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0
)) : ((((u_long)(((((((((0xf)) >> 8))) - 1) & (((((
0xf)) >> 8)))) ^ (((((0xf)) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xf)) >> 8)) >>
2)) - 1) & ((((((0xf)) >> 8)) >> 2))) ^ ((((
((0xf)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xf)) >> 8)))) - 1) & ((
((((0xf)) >> 8))))) ^ ((((((0xf)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xf)))) - 1) &
((((0xf))))) ^ ((((0xf)))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf))) >> 4)) - 1) & (((((0xf))) >>
4))) ^ (((((0xf))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xf))) >> 4) >> 2)) - 1) &
((((((0xf))) >> 4) >> 2))) ^ ((((((0xf))) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xf))) >> 4))) - 1) & ((((((0xf))) >>
4)))) ^ ((((((0xf))) >> 4))))) >> (1)) != 0) ? 1
: 0)) : ((((u_long)(((((((((0xf))))) - 1) & (((((0xf))))
)) ^ (((((0xf))))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xf)))) >> 2)) - 1) & ((((((0xf)))) >>
2))) ^ ((((((0xf)))) >> 2)))) >> (1)) != 0) ? 1 :
0) : ((((u_long)((((((((((0xf)))))) - 1) & ((((((0xf))))
))) ^ ((((((0xf)))))))) >> (1)) != 0) ? 1 : 0))))))
;
2369 cap1 |= LSHIFT(capinfo, ATW_CAP1_CAPI_MASK)((capinfo) << ((((u_long)((((((0xffff0000)) - 1) & (
(0xffff0000))) ^ ((0xffff0000)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0xffff0000) >> 16)) - 1) & (((0xffff0000
) >> 16))) ^ (((0xffff0000) >> 16)))) >> (8
)) != 0) ? 8 + ((((u_long)((((((((0xffff0000) >> 16) >>
8)) - 1) & ((((0xffff0000) >> 16) >> 8))) ^ (
(((0xffff0000) >> 16) >> 8)))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xffff0000) >> 16) >>
8) >> 4)) - 1) & (((((0xffff0000) >> 16) >>
8) >> 4))) ^ (((((0xffff0000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff0000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff0000) >> 16) >> 8) >>
4)))) ^ ((((((0xffff0000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16) >> 8))) - 1) & (((((0xffff0000) >>
16) >> 8)))) ^ (((((0xffff0000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xffff0000
) >> 16) >> 8)) >> 2))) ^ ((((((0xffff0000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8)))) - 1) & ((((((0xffff0000) >> 16) >> 8))
))) ^ ((((((0xffff0000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000) >>
16))) - 1) & ((((0xffff0000) >> 16)))) ^ ((((0xffff0000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xffff0000) >> 16)) >> 4)) - 1) & (((((0xffff0000
) >> 16)) >> 4))) ^ (((((0xffff0000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff0000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff0000) >> 16)) >> 4) >> 2))) ^ (
(((((0xffff0000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >>
16)) >> 4))) - 1) & ((((((0xffff0000) >> 16)
) >> 4)))) ^ ((((((0xffff0000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
) >> 16)))) - 1) & (((((0xffff0000) >> 16))))
) ^ (((((0xffff0000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xffff0000) >> 16))) >> 2
)) - 1) & ((((((0xffff0000) >> 16))) >> 2))) ^
((((((0xffff0000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16
))))) - 1) & ((((((0xffff0000) >> 16)))))) ^ ((((((
0xffff0000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xffff0000))) - 1) & (((0xffff0000)
))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xffff0000)) >> 8)) - 1) & ((((0xffff0000)
) >> 8))) ^ ((((0xffff0000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8) >>
4)) - 1) & (((((0xffff0000)) >> 8) >> 4))) ^
(((((0xffff0000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000)) >> 8) >>
4) >> 2))) ^ ((((((0xffff0000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000)) >> 8) >> 4))) - 1) & (((
(((0xffff0000)) >> 8) >> 4)))) ^ ((((((0xffff0000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xffff0000)) >> 8))) - 1) & ((
(((0xffff0000)) >> 8)))) ^ (((((0xffff0000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
)) >> 8)) >> 2)) - 1) & ((((((0xffff0000)) >>
8)) >> 2))) ^ ((((((0xffff0000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
)) >> 8)))) - 1) & ((((((0xffff0000)) >> 8)))
)) ^ ((((((0xffff0000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1) & ((((
0xffff0000))))) ^ ((((0xffff0000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff0000))) >> 4)) - 1) & (
((((0xffff0000))) >> 4))) ^ (((((0xffff0000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
))) >> 4) >> 2)) - 1) & ((((((0xffff0000))) >>
4) >> 2))) ^ ((((((0xffff0000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
))) >> 4))) - 1) & ((((((0xffff0000))) >> 4))
)) ^ ((((((0xffff0000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xffff0000))))) - 1) & (((
((0xffff0000)))))) ^ (((((0xffff0000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff0000)))) >> 2)) - 1)
& ((((((0xffff0000)))) >> 2))) ^ ((((((0xffff0000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xffff0000)))))) - 1) & ((((((0xffff0000)))))))
^ ((((((0xffff0000)))))))) >> (1)) != 0) ? 1 : 0))))))
;
2370
2371 ATW_WRITE(sc, ATW_BCNT, bcnt)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xB8)), ((bcnt
))))
;
2372 ATW_WRITE(sc, ATW_BPLI, bpli)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC8)), ((bpli
))))
;
2373 ATW_WRITE(sc, ATW_CAP0, cap0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xCC)), ((cap0
))))
;
2374 ATW_WRITE(sc, ATW_CAP1, cap1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xD0)), ((cap1
))))
;
2375
2376 DPRINTF(sc, ("%s: atw_start_beacon reg[ATW_BCNT] = %08x\n",
2377 sc->sc_dev.dv_xname, bcnt));
2378 DPRINTF(sc, ("%s: atw_start_beacon reg[ATW_CAP1] = %08x\n",
2379 sc->sc_dev.dv_xname, cap1));
2380#endif
2381}
2382
2383/* Return the 32 lsb of the last TSFT divisible by ival. */
2384static __inline uint32_t
2385atw_last_even_tsft(uint32_t tsfth, uint32_t tsftl, uint32_t ival)
2386{
2387 /* Following the reference driver's lead, I compute
2388 *
2389 * (uint32_t)((((uint64_t)tsfth << 32) | tsftl) % ival)
2390 *
2391 * without using 64-bit arithmetic, using the following
2392 * relationship:
2393 *
2394 * (0x100000000 * H + L) % m
2395 * = ((0x100000000 % m) * H + L) % m
2396 * = (((0xffffffff + 1) % m) * H + L) % m
2397 * = ((0xffffffff % m + 1 % m) * H + L) % m
2398 * = ((0xffffffff % m + 1) * H + L) % m
2399 */
2400 return ((0xFFFFFFFF % ival + 1) * tsfth + tsftl) % ival;
2401}
2402
2403uint64_t
2404atw_get_tsft(struct atw_softc *sc)
2405{
2406 int i;
2407 uint32_t tsfth, tsftl;
2408 for (i = 0; i < 2; i++) {
2409 tsfth = ATW_READ(sc, ATW_TSFTH)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xBC))));
2410 tsftl = ATW_READ(sc, ATW_TSFTL)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xEC))));
2411 if (ATW_READ(sc, ATW_TSFTH)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0xBC)))) == tsfth)
2412 break;
2413 }
2414 return ((uint64_t)tsfth << 32) | tsftl;
2415}
2416
2417/* If we've created an IBSS, write the TSF time in the ADM8211 to
2418 * the ieee80211com.
2419 *
2420 * Predict the next target beacon transmission time (TBTT) and
2421 * write it to the ADM8211.
2422 */
2423void
2424atw_predict_beacon(struct atw_softc *sc)
2425{
2426#define TBTTOFS 20 /* TU */
2427
2428 struct ieee80211com *ic = &sc->sc_ic;
2429 uint64_t tsft;
2430 uint32_t ival, past_even, tbtt, tsfth, tsftl;
2431 union {
2432 uint64_t word;
2433 uint8_t tstamp[8];
2434 } u;
2435
2436#ifndef IEEE80211_STA_ONLY
2437 if ((ic->ic_opmode == IEEE80211_M_IBSS) &&
2438 (ic->ic_flags & IEEE80211_F_SIBSS0x00000002)) {
2439 tsft = atw_get_tsft(sc);
2440 u.word = htole64(tsft)((__uint64_t)(tsft));
2441 (void)memcpy(&ic->ic_bss->ni_tstamp[0], &u.tstamp[0],__builtin_memcpy((&ic->ic_bss->ni_tstamp[0]), (&
u.tstamp[0]), (sizeof(ic->ic_bss->ni_tstamp)))
2442 sizeof(ic->ic_bss->ni_tstamp))__builtin_memcpy((&ic->ic_bss->ni_tstamp[0]), (&
u.tstamp[0]), (sizeof(ic->ic_bss->ni_tstamp)))
;
2443 } else
2444#endif
2445 {
2446 (void)memcpy(&u, &ic->ic_bss->ni_tstamp[0], sizeof(u))__builtin_memcpy((&u), (&ic->ic_bss->ni_tstamp[
0]), (sizeof(u)))
;
2447 tsft = letoh64(u.word)((__uint64_t)(u.word));
2448 }
2449
2450 ival = ic->ic_bss->ni_intval * IEEE80211_DUR_TU1024;
2451
2452 tsftl = tsft & 0xFFFFFFFF;
2453 tsfth = tsft >> 32;
2454
2455 /* We sent/received the last beacon `past' microseconds
2456 * after the interval divided the TSF timer.
2457 */
2458 past_even = tsftl - atw_last_even_tsft(tsfth, tsftl, ival);
2459
2460 /* Skip ten beacons so that the TBTT cannot pass before
2461 * we've programmed it. Ten is an arbitrary number.
2462 */
2463 tbtt = past_even + ival * 10;
2464
2465 ATW_WRITE(sc, ATW_TOFS1,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xE0)), (((
(1) << ((((u_long)((((((0xff000000)) - 1) & ((0xff000000
))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff000000) >> 16)) - 1) & (((0xff000000) >>
16))) ^ (((0xff000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff000000) >> 16) >> 8))
- 1) & ((((0xff000000) >> 16) >> 8))) ^ ((((
0xff000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((TBTTOFS) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | (((((tbtt - TBTTOFS * 1024) &
(0x3fffc00)) >> ((((u_long)((((((0x3fffc00)) - 1) &
((0x3fffc00))) ^ ((0x3fffc00)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0x3fffc00) >> 16)) - 1) & (((0x3fffc00
) >> 16))) ^ (((0x3fffc00) >> 16)))) >> (8)
) != 0) ? 8 + ((((u_long)((((((((0x3fffc00) >> 16) >>
8)) - 1) & ((((0x3fffc00) >> 16) >> 8))) ^ (
(((0x3fffc00) >> 16) >> 8)))) >> (4)) != 0)
? 4 + ((((u_long)(((((((((0x3fffc00) >> 16) >> 8
) >> 4)) - 1) & (((((0x3fffc00) >> 16) >>
8) >> 4))) ^ (((((0x3fffc00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0x3fffc00) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00) >> 16) >> 8) >> 4))) - 1)
& ((((((0x3fffc00) >> 16) >> 8) >> 4))
)) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00
) >> 16) >> 8))) - 1) & (((((0x3fffc00) >>
16) >> 8)))) ^ (((((0x3fffc00) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x3fffc00
) >> 16) >> 8)) >> 2))) ^ ((((((0x3fffc00) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16) >> 8)))
) - 1) & ((((((0x3fffc00) >> 16) >> 8))))) ^ (
(((((0x3fffc00) >> 16) >> 8)))))) >> (1)) !=
0) ? 1 : 0))) : ((((u_long)((((((((0x3fffc00) >> 16)))
- 1) & ((((0x3fffc00) >> 16)))) ^ ((((0x3fffc00) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
) >> 16)) >> 4)) - 1) & (((((0x3fffc00) >>
16)) >> 4))) ^ (((((0x3fffc00) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16)) >> 4) >> 2)) - 1) & ((((((0x3fffc00
) >> 16)) >> 4) >> 2))) ^ ((((((0x3fffc00) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16)) >> 4))
) - 1) & ((((((0x3fffc00) >> 16)) >> 4)))) ^ (
(((((0x3fffc00) >> 16)) >> 4))))) >> (1)) !=
0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00) >> 16)))
) - 1) & (((((0x3fffc00) >> 16))))) ^ (((((0x3fffc00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3fffc00) >> 16))) >> 2)) - 1) & (((((
(0x3fffc00) >> 16))) >> 2))) ^ ((((((0x3fffc00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3fffc00) >> 16))))) - 1) & ((((((0x3fffc00
) >> 16)))))) ^ ((((((0x3fffc00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3fffc00))) - 1)
& (((0x3fffc00)))) ^ (((0x3fffc00))))) >> (8)) != 0
) ? 8 + ((((u_long)((((((((0x3fffc00)) >> 8)) - 1) &
((((0x3fffc00)) >> 8))) ^ ((((0x3fffc00)) >> 8))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00)) >>
8) >> 4)) - 1) & (((((0x3fffc00)) >> 8) >>
4))) ^ (((((0x3fffc00)) >> 8) >> 4)))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8) >>
4) >> 2)) - 1) & ((((((0x3fffc00)) >> 8) >>
4) >> 2))) ^ ((((((0x3fffc00)) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00)) >> 8) >> 4))) - 1) & (((((
(0x3fffc00)) >> 8) >> 4)))) ^ ((((((0x3fffc00)) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x3fffc00)) >> 8))) - 1) & (((((0x3fffc00
)) >> 8)))) ^ (((((0x3fffc00)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8
)) >> 2)) - 1) & ((((((0x3fffc00)) >> 8)) >>
2))) ^ ((((((0x3fffc00)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)) >>
8)))) - 1) & ((((((0x3fffc00)) >> 8))))) ^ ((((((0x3fffc00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3fffc00)))) - 1) & ((((0x3fffc00))))) ^ ((((0x3fffc00
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
))) >> 4)) - 1) & (((((0x3fffc00))) >> 4))) ^
(((((0x3fffc00))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x3fffc00))) >> 4) >> 2)) - 1
) & ((((((0x3fffc00))) >> 4) >> 2))) ^ ((((((
0x3fffc00))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x3fffc00))) >> 4))) - 1
) & ((((((0x3fffc00))) >> 4)))) ^ ((((((0x3fffc00))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x3fffc00))))) - 1) & (((((0x3fffc00)))))) ^ (((
((0x3fffc00))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x3fffc00)))) >> 2)) - 1) & ((((((0x3fffc00)))
) >> 2))) ^ ((((((0x3fffc00)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)))))) -
1) & ((((((0x3fffc00))))))) ^ ((((((0x3fffc00)))))))) >>
(1)) != 0) ? 1 : 0))))))) << ((((u_long)((((((0xffff00
)) - 1) & ((0xffff00))) ^ ((0xffff00)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xffff00) >> 16)) - 1) &
(((0xffff00) >> 16))) ^ (((0xffff00) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff00) >> 16) >>
8)) - 1) & ((((0xffff00) >> 16) >> 8))) ^ ((
((0xffff00) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xffff00) >> 16) >> 8) >>
4)) - 1) & (((((0xffff00) >> 16) >> 8) >>
4))) ^ (((((0xffff00) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff00) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xffff00) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xffff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff00) >> 16) >> 8))) -
1) & (((((0xffff00) >> 16) >> 8)))) ^ (((((0xffff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00) >> 16) >> 8)) >>
2)) - 1) & ((((((0xffff00) >> 16) >> 8)) >>
2))) ^ ((((((0xffff00) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8)))) - 1) & ((((((0xffff00) >>
16) >> 8))))) ^ ((((((0xffff00) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
) >> 16))) - 1) & ((((0xffff00) >> 16)))) ^ (
(((0xffff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xffff00) >> 16)) >> 4)) - 1) & (((
((0xffff00) >> 16)) >> 4))) ^ (((((0xffff00) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xffff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff00) >> 16)) >> 4) >> 2))) ^ ((
((((0xffff00) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00) >>
16)) >> 4))) - 1) & ((((((0xffff00) >> 16)) >>
4)))) ^ ((((((0xffff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00) >>
16)))) - 1) & (((((0xffff00) >> 16))))) ^ (((((0xffff00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xffff00) >> 16))) >> 2)) - 1) & ((((((
0xffff00) >> 16))) >> 2))) ^ ((((((0xffff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff00) >> 16))))) - 1) & ((((((0xffff00
) >> 16)))))) ^ ((((((0xffff00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xffff00))) - 1) &
(((0xffff00)))) ^ (((0xffff00))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff00)) >> 8)) - 1) & ((((0xffff00
)) >> 8))) ^ ((((0xffff00)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xffff00)) >> 8) >>
4)) - 1) & (((((0xffff00)) >> 8) >> 4))) ^ (
((((0xffff00)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff00)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xffff00)) >> 8) >>
4) >> 2))) ^ ((((((0xffff00)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)) >> 8) >> 4))) - 1) & ((((((0xffff00)) >>
8) >> 4)))) ^ ((((((0xffff00)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00
)) >> 8))) - 1) & (((((0xffff00)) >> 8)))) ^ (
((((0xffff00)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00)) >> 8)) >> 2)) - 1) &
((((((0xffff00)) >> 8)) >> 2))) ^ ((((((0xffff00
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff00)) >> 8)))) - 1) & ((
((((0xffff00)) >> 8))))) ^ ((((((0xffff00)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
)))) - 1) & ((((0xffff00))))) ^ ((((0xffff00)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff00))) >> 4)
) - 1) & (((((0xffff00))) >> 4))) ^ (((((0xffff00))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff00))) >> 4) >> 2)) - 1) & ((((((0xffff00
))) >> 4) >> 2))) ^ ((((((0xffff00))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xffff00))) >> 4))) - 1) & ((((((0xffff00)))
>> 4)))) ^ ((((((0xffff00))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00))))) - 1) &
(((((0xffff00)))))) ^ (((((0xffff00))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff00)))) >> 2)) - 1) &
((((((0xffff00)))) >> 2))) ^ ((((((0xffff00)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)))))) - 1) & ((((((0xffff00))))))) ^ ((((((0xffff00)))))
))) >> (1)) != 0) ? 1 : 0))))))))))
2466 LSHIFT(1, ATW_TOFS1_TSFTOFSR_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xE0)), (((
(1) << ((((u_long)((((((0xff000000)) - 1) & ((0xff000000
))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff000000) >> 16)) - 1) & (((0xff000000) >>
16))) ^ (((0xff000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff000000) >> 16) >> 8))
- 1) & ((((0xff000000) >> 16) >> 8))) ^ ((((
0xff000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((TBTTOFS) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | (((((tbtt - TBTTOFS * 1024) &
(0x3fffc00)) >> ((((u_long)((((((0x3fffc00)) - 1) &
((0x3fffc00))) ^ ((0x3fffc00)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0x3fffc00) >> 16)) - 1) & (((0x3fffc00
) >> 16))) ^ (((0x3fffc00) >> 16)))) >> (8)
) != 0) ? 8 + ((((u_long)((((((((0x3fffc00) >> 16) >>
8)) - 1) & ((((0x3fffc00) >> 16) >> 8))) ^ (
(((0x3fffc00) >> 16) >> 8)))) >> (4)) != 0)
? 4 + ((((u_long)(((((((((0x3fffc00) >> 16) >> 8
) >> 4)) - 1) & (((((0x3fffc00) >> 16) >>
8) >> 4))) ^ (((((0x3fffc00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0x3fffc00) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00) >> 16) >> 8) >> 4))) - 1)
& ((((((0x3fffc00) >> 16) >> 8) >> 4))
)) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00
) >> 16) >> 8))) - 1) & (((((0x3fffc00) >>
16) >> 8)))) ^ (((((0x3fffc00) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x3fffc00
) >> 16) >> 8)) >> 2))) ^ ((((((0x3fffc00) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16) >> 8)))
) - 1) & ((((((0x3fffc00) >> 16) >> 8))))) ^ (
(((((0x3fffc00) >> 16) >> 8)))))) >> (1)) !=
0) ? 1 : 0))) : ((((u_long)((((((((0x3fffc00) >> 16)))
- 1) & ((((0x3fffc00) >> 16)))) ^ ((((0x3fffc00) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
) >> 16)) >> 4)) - 1) & (((((0x3fffc00) >>
16)) >> 4))) ^ (((((0x3fffc00) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16)) >> 4) >> 2)) - 1) & ((((((0x3fffc00
) >> 16)) >> 4) >> 2))) ^ ((((((0x3fffc00) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16)) >> 4))
) - 1) & ((((((0x3fffc00) >> 16)) >> 4)))) ^ (
(((((0x3fffc00) >> 16)) >> 4))))) >> (1)) !=
0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00) >> 16)))
) - 1) & (((((0x3fffc00) >> 16))))) ^ (((((0x3fffc00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3fffc00) >> 16))) >> 2)) - 1) & (((((
(0x3fffc00) >> 16))) >> 2))) ^ ((((((0x3fffc00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3fffc00) >> 16))))) - 1) & ((((((0x3fffc00
) >> 16)))))) ^ ((((((0x3fffc00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3fffc00))) - 1)
& (((0x3fffc00)))) ^ (((0x3fffc00))))) >> (8)) != 0
) ? 8 + ((((u_long)((((((((0x3fffc00)) >> 8)) - 1) &
((((0x3fffc00)) >> 8))) ^ ((((0x3fffc00)) >> 8))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00)) >>
8) >> 4)) - 1) & (((((0x3fffc00)) >> 8) >>
4))) ^ (((((0x3fffc00)) >> 8) >> 4)))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8) >>
4) >> 2)) - 1) & ((((((0x3fffc00)) >> 8) >>
4) >> 2))) ^ ((((((0x3fffc00)) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00)) >> 8) >> 4))) - 1) & (((((
(0x3fffc00)) >> 8) >> 4)))) ^ ((((((0x3fffc00)) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x3fffc00)) >> 8))) - 1) & (((((0x3fffc00
)) >> 8)))) ^ (((((0x3fffc00)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8
)) >> 2)) - 1) & ((((((0x3fffc00)) >> 8)) >>
2))) ^ ((((((0x3fffc00)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)) >>
8)))) - 1) & ((((((0x3fffc00)) >> 8))))) ^ ((((((0x3fffc00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3fffc00)))) - 1) & ((((0x3fffc00))))) ^ ((((0x3fffc00
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
))) >> 4)) - 1) & (((((0x3fffc00))) >> 4))) ^
(((((0x3fffc00))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x3fffc00))) >> 4) >> 2)) - 1
) & ((((((0x3fffc00))) >> 4) >> 2))) ^ ((((((
0x3fffc00))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x3fffc00))) >> 4))) - 1
) & ((((((0x3fffc00))) >> 4)))) ^ ((((((0x3fffc00))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x3fffc00))))) - 1) & (((((0x3fffc00)))))) ^ (((
((0x3fffc00))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x3fffc00)))) >> 2)) - 1) & ((((((0x3fffc00)))
) >> 2))) ^ ((((((0x3fffc00)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)))))) -
1) & ((((((0x3fffc00))))))) ^ ((((((0x3fffc00)))))))) >>
(1)) != 0) ? 1 : 0))))))) << ((((u_long)((((((0xffff00
)) - 1) & ((0xffff00))) ^ ((0xffff00)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xffff00) >> 16)) - 1) &
(((0xffff00) >> 16))) ^ (((0xffff00) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff00) >> 16) >>
8)) - 1) & ((((0xffff00) >> 16) >> 8))) ^ ((
((0xffff00) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xffff00) >> 16) >> 8) >>
4)) - 1) & (((((0xffff00) >> 16) >> 8) >>
4))) ^ (((((0xffff00) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff00) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xffff00) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xffff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff00) >> 16) >> 8))) -
1) & (((((0xffff00) >> 16) >> 8)))) ^ (((((0xffff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00) >> 16) >> 8)) >>
2)) - 1) & ((((((0xffff00) >> 16) >> 8)) >>
2))) ^ ((((((0xffff00) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8)))) - 1) & ((((((0xffff00) >>
16) >> 8))))) ^ ((((((0xffff00) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
) >> 16))) - 1) & ((((0xffff00) >> 16)))) ^ (
(((0xffff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xffff00) >> 16)) >> 4)) - 1) & (((
((0xffff00) >> 16)) >> 4))) ^ (((((0xffff00) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xffff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff00) >> 16)) >> 4) >> 2))) ^ ((
((((0xffff00) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00) >>
16)) >> 4))) - 1) & ((((((0xffff00) >> 16)) >>
4)))) ^ ((((((0xffff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00) >>
16)))) - 1) & (((((0xffff00) >> 16))))) ^ (((((0xffff00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xffff00) >> 16))) >> 2)) - 1) & ((((((
0xffff00) >> 16))) >> 2))) ^ ((((((0xffff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff00) >> 16))))) - 1) & ((((((0xffff00
) >> 16)))))) ^ ((((((0xffff00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xffff00))) - 1) &
(((0xffff00)))) ^ (((0xffff00))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff00)) >> 8)) - 1) & ((((0xffff00
)) >> 8))) ^ ((((0xffff00)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xffff00)) >> 8) >>
4)) - 1) & (((((0xffff00)) >> 8) >> 4))) ^ (
((((0xffff00)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff00)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xffff00)) >> 8) >>
4) >> 2))) ^ ((((((0xffff00)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)) >> 8) >> 4))) - 1) & ((((((0xffff00)) >>
8) >> 4)))) ^ ((((((0xffff00)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00
)) >> 8))) - 1) & (((((0xffff00)) >> 8)))) ^ (
((((0xffff00)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00)) >> 8)) >> 2)) - 1) &
((((((0xffff00)) >> 8)) >> 2))) ^ ((((((0xffff00
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff00)) >> 8)))) - 1) & ((
((((0xffff00)) >> 8))))) ^ ((((((0xffff00)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
)))) - 1) & ((((0xffff00))))) ^ ((((0xffff00)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff00))) >> 4)
) - 1) & (((((0xffff00))) >> 4))) ^ (((((0xffff00))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff00))) >> 4) >> 2)) - 1) & ((((((0xffff00
))) >> 4) >> 2))) ^ ((((((0xffff00))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xffff00))) >> 4))) - 1) & ((((((0xffff00)))
>> 4)))) ^ ((((((0xffff00))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00))))) - 1) &
(((((0xffff00)))))) ^ (((((0xffff00))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff00)))) >> 2)) - 1) &
((((((0xffff00)))) >> 2))) ^ ((((((0xffff00)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)))))) - 1) & ((((((0xffff00))))))) ^ ((((((0xffff00)))))
))) >> (1)) != 0) ? 1 : 0))))))))))
2467 LSHIFT(TBTTOFS, ATW_TOFS1_TBTTOFS_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xE0)), (((
(1) << ((((u_long)((((((0xff000000)) - 1) & ((0xff000000
))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff000000) >> 16)) - 1) & (((0xff000000) >>
16))) ^ (((0xff000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff000000) >> 16) >> 8))
- 1) & ((((0xff000000) >> 16) >> 8))) ^ ((((
0xff000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((TBTTOFS) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | (((((tbtt - TBTTOFS * 1024) &
(0x3fffc00)) >> ((((u_long)((((((0x3fffc00)) - 1) &
((0x3fffc00))) ^ ((0x3fffc00)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0x3fffc00) >> 16)) - 1) & (((0x3fffc00
) >> 16))) ^ (((0x3fffc00) >> 16)))) >> (8)
) != 0) ? 8 + ((((u_long)((((((((0x3fffc00) >> 16) >>
8)) - 1) & ((((0x3fffc00) >> 16) >> 8))) ^ (
(((0x3fffc00) >> 16) >> 8)))) >> (4)) != 0)
? 4 + ((((u_long)(((((((((0x3fffc00) >> 16) >> 8
) >> 4)) - 1) & (((((0x3fffc00) >> 16) >>
8) >> 4))) ^ (((((0x3fffc00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0x3fffc00) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00) >> 16) >> 8) >> 4))) - 1)
& ((((((0x3fffc00) >> 16) >> 8) >> 4))
)) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00
) >> 16) >> 8))) - 1) & (((((0x3fffc00) >>
16) >> 8)))) ^ (((((0x3fffc00) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x3fffc00
) >> 16) >> 8)) >> 2))) ^ ((((((0x3fffc00) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16) >> 8)))
) - 1) & ((((((0x3fffc00) >> 16) >> 8))))) ^ (
(((((0x3fffc00) >> 16) >> 8)))))) >> (1)) !=
0) ? 1 : 0))) : ((((u_long)((((((((0x3fffc00) >> 16)))
- 1) & ((((0x3fffc00) >> 16)))) ^ ((((0x3fffc00) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
) >> 16)) >> 4)) - 1) & (((((0x3fffc00) >>
16)) >> 4))) ^ (((((0x3fffc00) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16)) >> 4) >> 2)) - 1) & ((((((0x3fffc00
) >> 16)) >> 4) >> 2))) ^ ((((((0x3fffc00) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16)) >> 4))
) - 1) & ((((((0x3fffc00) >> 16)) >> 4)))) ^ (
(((((0x3fffc00) >> 16)) >> 4))))) >> (1)) !=
0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00) >> 16)))
) - 1) & (((((0x3fffc00) >> 16))))) ^ (((((0x3fffc00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3fffc00) >> 16))) >> 2)) - 1) & (((((
(0x3fffc00) >> 16))) >> 2))) ^ ((((((0x3fffc00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3fffc00) >> 16))))) - 1) & ((((((0x3fffc00
) >> 16)))))) ^ ((((((0x3fffc00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3fffc00))) - 1)
& (((0x3fffc00)))) ^ (((0x3fffc00))))) >> (8)) != 0
) ? 8 + ((((u_long)((((((((0x3fffc00)) >> 8)) - 1) &
((((0x3fffc00)) >> 8))) ^ ((((0x3fffc00)) >> 8))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00)) >>
8) >> 4)) - 1) & (((((0x3fffc00)) >> 8) >>
4))) ^ (((((0x3fffc00)) >> 8) >> 4)))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8) >>
4) >> 2)) - 1) & ((((((0x3fffc00)) >> 8) >>
4) >> 2))) ^ ((((((0x3fffc00)) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00)) >> 8) >> 4))) - 1) & (((((
(0x3fffc00)) >> 8) >> 4)))) ^ ((((((0x3fffc00)) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x3fffc00)) >> 8))) - 1) & (((((0x3fffc00
)) >> 8)))) ^ (((((0x3fffc00)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8
)) >> 2)) - 1) & ((((((0x3fffc00)) >> 8)) >>
2))) ^ ((((((0x3fffc00)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)) >>
8)))) - 1) & ((((((0x3fffc00)) >> 8))))) ^ ((((((0x3fffc00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3fffc00)))) - 1) & ((((0x3fffc00))))) ^ ((((0x3fffc00
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
))) >> 4)) - 1) & (((((0x3fffc00))) >> 4))) ^
(((((0x3fffc00))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x3fffc00))) >> 4) >> 2)) - 1
) & ((((((0x3fffc00))) >> 4) >> 2))) ^ ((((((
0x3fffc00))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x3fffc00))) >> 4))) - 1
) & ((((((0x3fffc00))) >> 4)))) ^ ((((((0x3fffc00))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x3fffc00))))) - 1) & (((((0x3fffc00)))))) ^ (((
((0x3fffc00))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x3fffc00)))) >> 2)) - 1) & ((((((0x3fffc00)))
) >> 2))) ^ ((((((0x3fffc00)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)))))) -
1) & ((((((0x3fffc00))))))) ^ ((((((0x3fffc00)))))))) >>
(1)) != 0) ? 1 : 0))))))) << ((((u_long)((((((0xffff00
)) - 1) & ((0xffff00))) ^ ((0xffff00)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xffff00) >> 16)) - 1) &
(((0xffff00) >> 16))) ^ (((0xffff00) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff00) >> 16) >>
8)) - 1) & ((((0xffff00) >> 16) >> 8))) ^ ((
((0xffff00) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xffff00) >> 16) >> 8) >>
4)) - 1) & (((((0xffff00) >> 16) >> 8) >>
4))) ^ (((((0xffff00) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff00) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xffff00) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xffff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff00) >> 16) >> 8))) -
1) & (((((0xffff00) >> 16) >> 8)))) ^ (((((0xffff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00) >> 16) >> 8)) >>
2)) - 1) & ((((((0xffff00) >> 16) >> 8)) >>
2))) ^ ((((((0xffff00) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8)))) - 1) & ((((((0xffff00) >>
16) >> 8))))) ^ ((((((0xffff00) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
) >> 16))) - 1) & ((((0xffff00) >> 16)))) ^ (
(((0xffff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xffff00) >> 16)) >> 4)) - 1) & (((
((0xffff00) >> 16)) >> 4))) ^ (((((0xffff00) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xffff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff00) >> 16)) >> 4) >> 2))) ^ ((
((((0xffff00) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00) >>
16)) >> 4))) - 1) & ((((((0xffff00) >> 16)) >>
4)))) ^ ((((((0xffff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00) >>
16)))) - 1) & (((((0xffff00) >> 16))))) ^ (((((0xffff00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xffff00) >> 16))) >> 2)) - 1) & ((((((
0xffff00) >> 16))) >> 2))) ^ ((((((0xffff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff00) >> 16))))) - 1) & ((((((0xffff00
) >> 16)))))) ^ ((((((0xffff00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xffff00))) - 1) &
(((0xffff00)))) ^ (((0xffff00))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff00)) >> 8)) - 1) & ((((0xffff00
)) >> 8))) ^ ((((0xffff00)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xffff00)) >> 8) >>
4)) - 1) & (((((0xffff00)) >> 8) >> 4))) ^ (
((((0xffff00)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff00)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xffff00)) >> 8) >>
4) >> 2))) ^ ((((((0xffff00)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)) >> 8) >> 4))) - 1) & ((((((0xffff00)) >>
8) >> 4)))) ^ ((((((0xffff00)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00
)) >> 8))) - 1) & (((((0xffff00)) >> 8)))) ^ (
((((0xffff00)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00)) >> 8)) >> 2)) - 1) &
((((((0xffff00)) >> 8)) >> 2))) ^ ((((((0xffff00
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff00)) >> 8)))) - 1) & ((
((((0xffff00)) >> 8))))) ^ ((((((0xffff00)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
)))) - 1) & ((((0xffff00))))) ^ ((((0xffff00)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff00))) >> 4)
) - 1) & (((((0xffff00))) >> 4))) ^ (((((0xffff00))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff00))) >> 4) >> 2)) - 1) & ((((((0xffff00
))) >> 4) >> 2))) ^ ((((((0xffff00))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xffff00))) >> 4))) - 1) & ((((((0xffff00)))
>> 4)))) ^ ((((((0xffff00))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00))))) - 1) &
(((((0xffff00)))))) ^ (((((0xffff00))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff00)))) >> 2)) - 1) &
((((((0xffff00)))) >> 2))) ^ ((((((0xffff00)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)))))) - 1) & ((((((0xffff00))))))) ^ ((((((0xffff00)))))
))) >> (1)) != 0) ? 1 : 0))))))))))
2468 LSHIFT(MASK_AND_RSHIFT(tbtt - TBTTOFS * IEEE80211_DUR_TU,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xE0)), (((
(1) << ((((u_long)((((((0xff000000)) - 1) & ((0xff000000
))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff000000) >> 16)) - 1) & (((0xff000000) >>
16))) ^ (((0xff000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff000000) >> 16) >> 8))
- 1) & ((((0xff000000) >> 16) >> 8))) ^ ((((
0xff000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((TBTTOFS) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | (((((tbtt - TBTTOFS * 1024) &
(0x3fffc00)) >> ((((u_long)((((((0x3fffc00)) - 1) &
((0x3fffc00))) ^ ((0x3fffc00)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0x3fffc00) >> 16)) - 1) & (((0x3fffc00
) >> 16))) ^ (((0x3fffc00) >> 16)))) >> (8)
) != 0) ? 8 + ((((u_long)((((((((0x3fffc00) >> 16) >>
8)) - 1) & ((((0x3fffc00) >> 16) >> 8))) ^ (
(((0x3fffc00) >> 16) >> 8)))) >> (4)) != 0)
? 4 + ((((u_long)(((((((((0x3fffc00) >> 16) >> 8
) >> 4)) - 1) & (((((0x3fffc00) >> 16) >>
8) >> 4))) ^ (((((0x3fffc00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0x3fffc00) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00) >> 16) >> 8) >> 4))) - 1)
& ((((((0x3fffc00) >> 16) >> 8) >> 4))
)) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00
) >> 16) >> 8))) - 1) & (((((0x3fffc00) >>
16) >> 8)))) ^ (((((0x3fffc00) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x3fffc00
) >> 16) >> 8)) >> 2))) ^ ((((((0x3fffc00) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16) >> 8)))
) - 1) & ((((((0x3fffc00) >> 16) >> 8))))) ^ (
(((((0x3fffc00) >> 16) >> 8)))))) >> (1)) !=
0) ? 1 : 0))) : ((((u_long)((((((((0x3fffc00) >> 16)))
- 1) & ((((0x3fffc00) >> 16)))) ^ ((((0x3fffc00) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
) >> 16)) >> 4)) - 1) & (((((0x3fffc00) >>
16)) >> 4))) ^ (((((0x3fffc00) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16)) >> 4) >> 2)) - 1) & ((((((0x3fffc00
) >> 16)) >> 4) >> 2))) ^ ((((((0x3fffc00) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16)) >> 4))
) - 1) & ((((((0x3fffc00) >> 16)) >> 4)))) ^ (
(((((0x3fffc00) >> 16)) >> 4))))) >> (1)) !=
0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00) >> 16)))
) - 1) & (((((0x3fffc00) >> 16))))) ^ (((((0x3fffc00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3fffc00) >> 16))) >> 2)) - 1) & (((((
(0x3fffc00) >> 16))) >> 2))) ^ ((((((0x3fffc00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3fffc00) >> 16))))) - 1) & ((((((0x3fffc00
) >> 16)))))) ^ ((((((0x3fffc00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3fffc00))) - 1)
& (((0x3fffc00)))) ^ (((0x3fffc00))))) >> (8)) != 0
) ? 8 + ((((u_long)((((((((0x3fffc00)) >> 8)) - 1) &
((((0x3fffc00)) >> 8))) ^ ((((0x3fffc00)) >> 8))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00)) >>
8) >> 4)) - 1) & (((((0x3fffc00)) >> 8) >>
4))) ^ (((((0x3fffc00)) >> 8) >> 4)))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8) >>
4) >> 2)) - 1) & ((((((0x3fffc00)) >> 8) >>
4) >> 2))) ^ ((((((0x3fffc00)) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00)) >> 8) >> 4))) - 1) & (((((
(0x3fffc00)) >> 8) >> 4)))) ^ ((((((0x3fffc00)) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x3fffc00)) >> 8))) - 1) & (((((0x3fffc00
)) >> 8)))) ^ (((((0x3fffc00)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8
)) >> 2)) - 1) & ((((((0x3fffc00)) >> 8)) >>
2))) ^ ((((((0x3fffc00)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)) >>
8)))) - 1) & ((((((0x3fffc00)) >> 8))))) ^ ((((((0x3fffc00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3fffc00)))) - 1) & ((((0x3fffc00))))) ^ ((((0x3fffc00
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
))) >> 4)) - 1) & (((((0x3fffc00))) >> 4))) ^
(((((0x3fffc00))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x3fffc00))) >> 4) >> 2)) - 1
) & ((((((0x3fffc00))) >> 4) >> 2))) ^ ((((((
0x3fffc00))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x3fffc00))) >> 4))) - 1
) & ((((((0x3fffc00))) >> 4)))) ^ ((((((0x3fffc00))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x3fffc00))))) - 1) & (((((0x3fffc00)))))) ^ (((
((0x3fffc00))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x3fffc00)))) >> 2)) - 1) & ((((((0x3fffc00)))
) >> 2))) ^ ((((((0x3fffc00)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)))))) -
1) & ((((((0x3fffc00))))))) ^ ((((((0x3fffc00)))))))) >>
(1)) != 0) ? 1 : 0))))))) << ((((u_long)((((((0xffff00
)) - 1) & ((0xffff00))) ^ ((0xffff00)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xffff00) >> 16)) - 1) &
(((0xffff00) >> 16))) ^ (((0xffff00) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff00) >> 16) >>
8)) - 1) & ((((0xffff00) >> 16) >> 8))) ^ ((
((0xffff00) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xffff00) >> 16) >> 8) >>
4)) - 1) & (((((0xffff00) >> 16) >> 8) >>
4))) ^ (((((0xffff00) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff00) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xffff00) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xffff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff00) >> 16) >> 8))) -
1) & (((((0xffff00) >> 16) >> 8)))) ^ (((((0xffff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00) >> 16) >> 8)) >>
2)) - 1) & ((((((0xffff00) >> 16) >> 8)) >>
2))) ^ ((((((0xffff00) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8)))) - 1) & ((((((0xffff00) >>
16) >> 8))))) ^ ((((((0xffff00) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
) >> 16))) - 1) & ((((0xffff00) >> 16)))) ^ (
(((0xffff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xffff00) >> 16)) >> 4)) - 1) & (((
((0xffff00) >> 16)) >> 4))) ^ (((((0xffff00) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xffff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff00) >> 16)) >> 4) >> 2))) ^ ((
((((0xffff00) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00) >>
16)) >> 4))) - 1) & ((((((0xffff00) >> 16)) >>
4)))) ^ ((((((0xffff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00) >>
16)))) - 1) & (((((0xffff00) >> 16))))) ^ (((((0xffff00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xffff00) >> 16))) >> 2)) - 1) & ((((((
0xffff00) >> 16))) >> 2))) ^ ((((((0xffff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff00) >> 16))))) - 1) & ((((((0xffff00
) >> 16)))))) ^ ((((((0xffff00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xffff00))) - 1) &
(((0xffff00)))) ^ (((0xffff00))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff00)) >> 8)) - 1) & ((((0xffff00
)) >> 8))) ^ ((((0xffff00)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xffff00)) >> 8) >>
4)) - 1) & (((((0xffff00)) >> 8) >> 4))) ^ (
((((0xffff00)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff00)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xffff00)) >> 8) >>
4) >> 2))) ^ ((((((0xffff00)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)) >> 8) >> 4))) - 1) & ((((((0xffff00)) >>
8) >> 4)))) ^ ((((((0xffff00)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00
)) >> 8))) - 1) & (((((0xffff00)) >> 8)))) ^ (
((((0xffff00)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00)) >> 8)) >> 2)) - 1) &
((((((0xffff00)) >> 8)) >> 2))) ^ ((((((0xffff00
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff00)) >> 8)))) - 1) & ((
((((0xffff00)) >> 8))))) ^ ((((((0xffff00)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
)))) - 1) & ((((0xffff00))))) ^ ((((0xffff00)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff00))) >> 4)
) - 1) & (((((0xffff00))) >> 4))) ^ (((((0xffff00))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff00))) >> 4) >> 2)) - 1) & ((((((0xffff00
))) >> 4) >> 2))) ^ ((((((0xffff00))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xffff00))) >> 4))) - 1) & ((((((0xffff00)))
>> 4)))) ^ ((((((0xffff00))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00))))) - 1) &
(((((0xffff00)))))) ^ (((((0xffff00))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff00)))) >> 2)) - 1) &
((((((0xffff00)))) >> 2))) ^ ((((((0xffff00)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)))))) - 1) & ((((((0xffff00))))))) ^ ((((((0xffff00)))))
))) >> (1)) != 0) ? 1 : 0))))))))))
2469 ATW_TBTTPRE_MASK), ATW_TOFS1_TBTTPRE_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xE0)), (((
(1) << ((((u_long)((((((0xff000000)) - 1) & ((0xff000000
))) ^ ((0xff000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xff000000) >> 16)) - 1) & (((0xff000000) >>
16))) ^ (((0xff000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff000000) >> 16) >> 8))
- 1) & ((((0xff000000) >> 16) >> 8))) ^ ((((
0xff000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xff000000) >> 16) >> 8)
>> 4)) - 1) & (((((0xff000000) >> 16) >>
8) >> 4))) ^ (((((0xff000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xff000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0xff000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xff000000) >> 16) >> 8) >>
4))) - 1) & ((((((0xff000000) >> 16) >> 8) >>
4)))) ^ ((((((0xff000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16) >> 8))) - 1) & (((((0xff000000) >>
16) >> 8)))) ^ (((((0xff000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0xff000000
) >> 16) >> 8)) >> 2))) ^ ((((((0xff000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16) >>
8)))) - 1) & ((((((0xff000000) >> 16) >> 8))
))) ^ ((((((0xff000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff000000) >>
16))) - 1) & ((((0xff000000) >> 16)))) ^ ((((0xff000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0xff000000) >> 16)) >> 4)) - 1) & (((((0xff000000
) >> 16)) >> 4))) ^ (((((0xff000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xff000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff000000) >> 16)) >> 4) >> 2))) ^ (
(((((0xff000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >>
16)) >> 4))) - 1) & ((((((0xff000000) >> 16)
) >> 4)))) ^ ((((((0xff000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff000000
) >> 16)))) - 1) & (((((0xff000000) >> 16))))
) ^ (((((0xff000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0xff000000) >> 16))) >> 2
)) - 1) & ((((((0xff000000) >> 16))) >> 2))) ^
((((((0xff000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000) >> 16
))))) - 1) & ((((((0xff000000) >> 16)))))) ^ ((((((
0xff000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0xff000000))) - 1) & (((0xff000000)
))) ^ (((0xff000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff000000)) >> 8)) - 1) & ((((0xff000000)
) >> 8))) ^ ((((0xff000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0xff000000)) >> 8) >>
4)) - 1) & (((((0xff000000)) >> 8) >> 4))) ^
(((((0xff000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xff000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0xff000000)) >> 8) >>
4) >> 2))) ^ ((((((0xff000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff000000)) >> 8) >> 4))) - 1) & (((
(((0xff000000)) >> 8) >> 4)))) ^ ((((((0xff000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff000000)) >> 8))) - 1) & ((
(((0xff000000)) >> 8)))) ^ (((((0xff000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
)) >> 8)) >> 2)) - 1) & ((((((0xff000000)) >>
8)) >> 2))) ^ ((((((0xff000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
)) >> 8)))) - 1) & ((((((0xff000000)) >> 8)))
)) ^ ((((((0xff000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0xff000000)))) - 1) & ((((
0xff000000))))) ^ ((((0xff000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff000000))) >> 4)) - 1) & (
((((0xff000000))) >> 4))) ^ (((((0xff000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff000000
))) >> 4) >> 2)) - 1) & ((((((0xff000000))) >>
4) >> 2))) ^ ((((((0xff000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff000000
))) >> 4))) - 1) & ((((((0xff000000))) >> 4))
)) ^ ((((((0xff000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff000000))))) - 1) & (((
((0xff000000)))))) ^ (((((0xff000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xff000000)))) >> 2)) - 1)
& ((((((0xff000000)))) >> 2))) ^ ((((((0xff000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xff000000)))))) - 1) & ((((((0xff000000)))))))
^ ((((((0xff000000)))))))) >> (1)) != 0) ? 1 : 0))))))
| ((TBTTOFS) << ((((u_long)((((((0xff)) - 1) & ((0xff
))) ^ ((0xff)))) >> (16)) != 0) ? 16 + ((((u_long)(((((
((0xff) >> 16)) - 1) & (((0xff) >> 16))) ^ ((
(0xff) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)(
(((((((0xff) >> 16) >> 8)) - 1) & ((((0xff) >>
16) >> 8))) ^ ((((0xff) >> 16) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xff) >> 16) >>
8) >> 4)) - 1) & (((((0xff) >> 16) >> 8
) >> 4))) ^ (((((0xff) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xff
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xff) >> 16) >> 8) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16
) >> 8) >> 4))) - 1) & ((((((0xff) >> 16
) >> 8) >> 4)))) ^ ((((((0xff) >> 16) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xff) >> 16) >> 8))) - 1) & (((((0xff
) >> 16) >> 8)))) ^ (((((0xff) >> 16) >>
8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xff) >>
16) >> 8)) >> 2))) ^ ((((((0xff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xff) >> 16) >> 8)))) - 1) & (((((
(0xff) >> 16) >> 8))))) ^ ((((((0xff) >> 16
) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff) >> 16))) - 1) & ((((0xff) >> 16
)))) ^ ((((0xff) >> 16))))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xff) >> 16)) >> 4)) - 1) &
(((((0xff) >> 16)) >> 4))) ^ (((((0xff) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff) >> 16)) >> 4) >> 2)) - 1) &
((((((0xff) >> 16)) >> 4) >> 2))) ^ ((((((
0xff) >> 16)) >> 4) >> 2)))) >> (1)) !=
0) ? 1 : 0) : ((((u_long)((((((((((0xff) >> 16)) >>
4))) - 1) & ((((((0xff) >> 16)) >> 4)))) ^ (
(((((0xff) >> 16)) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xff) >> 16)))) - 1) &
(((((0xff) >> 16))))) ^ (((((0xff) >> 16)))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff) >> 16))) >>
2)) - 1) & ((((((0xff) >> 16))) >> 2))) ^ ((
((((0xff) >> 16))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff) >> 16))))) - 1) &
((((((0xff) >> 16)))))) ^ ((((((0xff) >> 16)))))
)) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xff))
) - 1) & (((0xff)))) ^ (((0xff))))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0xff)) >> 8)) - 1) & ((((0xff
)) >> 8))) ^ ((((0xff)) >> 8)))) >> (4)) !=
0) ? 4 + ((((u_long)(((((((((0xff)) >> 8) >> 4))
- 1) & (((((0xff)) >> 8) >> 4))) ^ (((((0xff
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xff)) >> 8) >> 4) >> 2))) ^ ((((((0xff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xff)) >> 8) >> 4
))) - 1) & ((((((0xff)) >> 8) >> 4)))) ^ ((((
((0xff)) >> 8) >> 4))))) >> (1)) != 0) ? 1 :
0)) : ((((u_long)(((((((((0xff)) >> 8))) - 1) & ((
(((0xff)) >> 8)))) ^ (((((0xff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff)) >> 8)) >>
2)) - 1) & ((((((0xff)) >> 8)) >> 2))) ^ (((
(((0xff)) >> 8)) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff)) >> 8)))) - 1) &
((((((0xff)) >> 8))))) ^ ((((((0xff)) >> 8))))))
>> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xff))))
- 1) & ((((0xff))))) ^ ((((0xff)))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xff))) >> 4)) - 1) & (
((((0xff))) >> 4))) ^ (((((0xff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xff))) >> 4) >>
2)) - 1) & ((((((0xff))) >> 4) >> 2))) ^ (((
(((0xff))) >> 4) >> 2)))) >> (1)) != 0) ? 1
: 0) : ((((u_long)((((((((((0xff))) >> 4))) - 1) &
((((((0xff))) >> 4)))) ^ ((((((0xff))) >> 4)))))
>> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff))))
) - 1) & (((((0xff)))))) ^ (((((0xff))))))) >> (2))
!= 0) ? 2 + ((((u_long)((((((((((0xff)))) >> 2)) - 1) &
((((((0xff)))) >> 2))) ^ ((((((0xff)))) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff))))
)) - 1) & ((((((0xff))))))) ^ ((((((0xff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | (((((tbtt - TBTTOFS * 1024) &
(0x3fffc00)) >> ((((u_long)((((((0x3fffc00)) - 1) &
((0x3fffc00))) ^ ((0x3fffc00)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0x3fffc00) >> 16)) - 1) & (((0x3fffc00
) >> 16))) ^ (((0x3fffc00) >> 16)))) >> (8)
) != 0) ? 8 + ((((u_long)((((((((0x3fffc00) >> 16) >>
8)) - 1) & ((((0x3fffc00) >> 16) >> 8))) ^ (
(((0x3fffc00) >> 16) >> 8)))) >> (4)) != 0)
? 4 + ((((u_long)(((((((((0x3fffc00) >> 16) >> 8
) >> 4)) - 1) & (((((0x3fffc00) >> 16) >>
8) >> 4))) ^ (((((0x3fffc00) >> 16) >> 8) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8) >> 4) >> 2)) - 1) &
((((((0x3fffc00) >> 16) >> 8) >> 4) >>
2))) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00) >> 16) >> 8) >> 4))) - 1)
& ((((((0x3fffc00) >> 16) >> 8) >> 4))
)) ^ ((((((0x3fffc00) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00
) >> 16) >> 8))) - 1) & (((((0x3fffc00) >>
16) >> 8)))) ^ (((((0x3fffc00) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x3fffc00
) >> 16) >> 8)) >> 2))) ^ ((((((0x3fffc00) >>
16) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16) >> 8)))
) - 1) & ((((((0x3fffc00) >> 16) >> 8))))) ^ (
(((((0x3fffc00) >> 16) >> 8)))))) >> (1)) !=
0) ? 1 : 0))) : ((((u_long)((((((((0x3fffc00) >> 16)))
- 1) & ((((0x3fffc00) >> 16)))) ^ ((((0x3fffc00) >>
16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
) >> 16)) >> 4)) - 1) & (((((0x3fffc00) >>
16)) >> 4))) ^ (((((0x3fffc00) >> 16)) >> 4
)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00
) >> 16)) >> 4) >> 2)) - 1) & ((((((0x3fffc00
) >> 16)) >> 4) >> 2))) ^ ((((((0x3fffc00) >>
16)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0)
: ((((u_long)((((((((((0x3fffc00) >> 16)) >> 4))
) - 1) & ((((((0x3fffc00) >> 16)) >> 4)))) ^ (
(((((0x3fffc00) >> 16)) >> 4))))) >> (1)) !=
0) ? 1 : 0)) : ((((u_long)(((((((((0x3fffc00) >> 16)))
) - 1) & (((((0x3fffc00) >> 16))))) ^ (((((0x3fffc00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0x3fffc00) >> 16))) >> 2)) - 1) & (((((
(0x3fffc00) >> 16))) >> 2))) ^ ((((((0x3fffc00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0x3fffc00) >> 16))))) - 1) & ((((((0x3fffc00
) >> 16)))))) ^ ((((((0x3fffc00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0x3fffc00))) - 1)
& (((0x3fffc00)))) ^ (((0x3fffc00))))) >> (8)) != 0
) ? 8 + ((((u_long)((((((((0x3fffc00)) >> 8)) - 1) &
((((0x3fffc00)) >> 8))) ^ ((((0x3fffc00)) >> 8))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00)) >>
8) >> 4)) - 1) & (((((0x3fffc00)) >> 8) >>
4))) ^ (((((0x3fffc00)) >> 8) >> 4)))) >> (
2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8) >>
4) >> 2)) - 1) & ((((((0x3fffc00)) >> 8) >>
4) >> 2))) ^ ((((((0x3fffc00)) >> 8) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0x3fffc00)) >> 8) >> 4))) - 1) & (((((
(0x3fffc00)) >> 8) >> 4)))) ^ ((((((0x3fffc00)) >>
8) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0x3fffc00)) >> 8))) - 1) & (((((0x3fffc00
)) >> 8)))) ^ (((((0x3fffc00)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3fffc00)) >> 8
)) >> 2)) - 1) & ((((((0x3fffc00)) >> 8)) >>
2))) ^ ((((((0x3fffc00)) >> 8)) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)) >>
8)))) - 1) & ((((((0x3fffc00)) >> 8))))) ^ ((((((0x3fffc00
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3fffc00)))) - 1) & ((((0x3fffc00))))) ^ ((((0x3fffc00
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3fffc00
))) >> 4)) - 1) & (((((0x3fffc00))) >> 4))) ^
(((((0x3fffc00))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x3fffc00))) >> 4) >> 2)) - 1
) & ((((((0x3fffc00))) >> 4) >> 2))) ^ ((((((
0x3fffc00))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x3fffc00))) >> 4))) - 1
) & ((((((0x3fffc00))) >> 4)))) ^ ((((((0x3fffc00))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x3fffc00))))) - 1) & (((((0x3fffc00)))))) ^ (((
((0x3fffc00))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x3fffc00)))) >> 2)) - 1) & ((((((0x3fffc00)))
) >> 2))) ^ ((((((0x3fffc00)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3fffc00)))))) -
1) & ((((((0x3fffc00))))))) ^ ((((((0x3fffc00)))))))) >>
(1)) != 0) ? 1 : 0))))))) << ((((u_long)((((((0xffff00
)) - 1) & ((0xffff00))) ^ ((0xffff00)))) >> (16)) !=
0) ? 16 + ((((u_long)(((((((0xffff00) >> 16)) - 1) &
(((0xffff00) >> 16))) ^ (((0xffff00) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xffff00) >> 16) >>
8)) - 1) & ((((0xffff00) >> 16) >> 8))) ^ ((
((0xffff00) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0xffff00) >> 16) >> 8) >>
4)) - 1) & (((((0xffff00) >> 16) >> 8) >>
4))) ^ (((((0xffff00) >> 16) >> 8) >> 4)))
) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff00) >>
16) >> 8) >> 4) >> 2)) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0xffff00) >> 16) >> 8) >> 4) >> 2))))
>> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8) >> 4))) - 1) & ((((((0xffff00
) >> 16) >> 8) >> 4)))) ^ ((((((0xffff00) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff00) >> 16) >> 8))) -
1) & (((((0xffff00) >> 16) >> 8)))) ^ (((((0xffff00
) >> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00) >> 16) >> 8)) >>
2)) - 1) & ((((((0xffff00) >> 16) >> 8)) >>
2))) ^ ((((((0xffff00) >> 16) >> 8)) >> 2)
))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
) >> 16) >> 8)))) - 1) & ((((((0xffff00) >>
16) >> 8))))) ^ ((((((0xffff00) >> 16) >> 8
)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
) >> 16))) - 1) & ((((0xffff00) >> 16)))) ^ (
(((0xffff00) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xffff00) >> 16)) >> 4)) - 1) & (((
((0xffff00) >> 16)) >> 4))) ^ (((((0xffff00) >>
16)) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xffff00) >> 16)) >> 4) >> 2)) - 1) &
((((((0xffff00) >> 16)) >> 4) >> 2))) ^ ((
((((0xffff00) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00) >>
16)) >> 4))) - 1) & ((((((0xffff00) >> 16)) >>
4)))) ^ ((((((0xffff00) >> 16)) >> 4))))) >>
(1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00) >>
16)))) - 1) & (((((0xffff00) >> 16))))) ^ (((((0xffff00
) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((
((((((0xffff00) >> 16))) >> 2)) - 1) & ((((((
0xffff00) >> 16))) >> 2))) ^ ((((((0xffff00) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff00) >> 16))))) - 1) & ((((((0xffff00
) >> 16)))))) ^ ((((((0xffff00) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xffff00))) - 1) &
(((0xffff00)))) ^ (((0xffff00))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff00)) >> 8)) - 1) & ((((0xffff00
)) >> 8))) ^ ((((0xffff00)) >> 8)))) >> (4)
) != 0) ? 4 + ((((u_long)(((((((((0xffff00)) >> 8) >>
4)) - 1) & (((((0xffff00)) >> 8) >> 4))) ^ (
((((0xffff00)) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff00)) >> 8) >> 4
) >> 2)) - 1) & ((((((0xffff00)) >> 8) >>
4) >> 2))) ^ ((((((0xffff00)) >> 8) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)) >> 8) >> 4))) - 1) & ((((((0xffff00)) >>
8) >> 4)))) ^ ((((((0xffff00)) >> 8) >> 4)
)))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00
)) >> 8))) - 1) & (((((0xffff00)) >> 8)))) ^ (
((((0xffff00)) >> 8))))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff00)) >> 8)) >> 2)) - 1) &
((((((0xffff00)) >> 8)) >> 2))) ^ ((((((0xffff00
)) >> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff00)) >> 8)))) - 1) & ((
((((0xffff00)) >> 8))))) ^ ((((((0xffff00)) >> 8)
))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff00
)))) - 1) & ((((0xffff00))))) ^ ((((0xffff00)))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff00))) >> 4)
) - 1) & (((((0xffff00))) >> 4))) ^ (((((0xffff00))
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0xffff00))) >> 4) >> 2)) - 1) & ((((((0xffff00
))) >> 4) >> 2))) ^ ((((((0xffff00))) >> 4)
>> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(((
(((((((0xffff00))) >> 4))) - 1) & ((((((0xffff00)))
>> 4)))) ^ ((((((0xffff00))) >> 4))))) >> (
1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff00))))) - 1) &
(((((0xffff00)))))) ^ (((((0xffff00))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0xffff00)))) >> 2)) - 1) &
((((((0xffff00)))) >> 2))) ^ ((((((0xffff00)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff00
)))))) - 1) & ((((((0xffff00))))))) ^ ((((((0xffff00)))))
))) >> (1)) != 0) ? 1 : 0))))))))))
;
2470#undef TBTTOFS
2471}
2472
2473void
2474atw_next_scan(void *arg)
2475{
2476 struct atw_softc *sc = arg;
2477 struct ieee80211com *ic = &sc->sc_ic;
2478 struct ifnet *ifp = &ic->ic_ific_ac.ac_if;
2479 int s;
2480
2481 /* don't call atw_start w/o network interrupts blocked */
2482 s = splnet()splraise(0x7);
2483 if (ic->ic_state == IEEE80211_S_SCAN)
2484 ieee80211_next_scan(ifp);
2485 splx(s)spllower(s);
2486}
2487
2488/* Synchronize the hardware state with the software state. */
2489int
2490atw_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg)
2491{
2492 struct ifnet *ifp = &ic->ic_ific_ac.ac_if;
2493 struct atw_softc *sc = ifp->if_softc;
2494 enum ieee80211_state ostate = ic->ic_state;
2495 int error;
2496
2497 if (nstate == IEEE80211_S_INIT) {
2498 timeout_del(&sc->sc_scan_to);
2499 sc->sc_cur_chan = IEEE80211_CHAN_ANY0xffff;
2500 atw_start_beacon(sc, 0);
2501 return (*sc->sc_newstate)(ic, nstate, arg);
2502 }
2503
2504 if ((error = atw_tune(sc)) != 0)
2505 return error;
2506
2507 switch (nstate) {
2508 case IEEE80211_S_ASSOC:
2509 break;
2510 case IEEE80211_S_INIT:
2511 panic("%s: unexpected state IEEE80211_S_INIT", __func__);
2512 break;
2513 case IEEE80211_S_SCAN:
2514 timeout_add_msec(&sc->sc_scan_to, atw_dwelltime);
2515 break;
2516 case IEEE80211_S_RUN:
2517 if (ic->ic_opmode == IEEE80211_M_STA)
2518 break;
2519 /*FALLTHROUGH*/
2520 case IEEE80211_S_AUTH:
2521 atw_write_bssid(sc);
2522 atw_write_ssid(sc);
2523 atw_write_sup_rates(sc);
2524
2525 if (
2526#ifndef IEEE80211_STA_ONLY
2527 ic->ic_opmode == IEEE80211_M_AHDEMO ||
2528#endif
2529 ic->ic_opmode == IEEE80211_M_MONITOR)
2530 break;
2531
2532 /* set listen interval
2533 * XXX do software units agree w/ hardware?
2534 */
2535 ATW_WRITE(sc, ATW_BPLI,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC8)), (((
(ic->ic_bss->ni_intval) << ((((u_long)((((((0xffff0000
)) - 1) & ((0xffff0000))) ^ ((0xffff0000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xffff0000) >> 16)) -
1) & (((0xffff0000) >> 16))) ^ (((0xffff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xffff0000
) >> 16) >> 8)) - 1) & ((((0xffff0000) >>
16) >> 8))) ^ ((((0xffff0000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)
>> 16) >> 8) >> 4)) - 1) & (((((0xffff0000
) >> 16) >> 8) >> 4))) ^ (((((0xffff0000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4)))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xffff0000) >> 16) >> 8))) - 1) & ((
(((0xffff0000) >> 16) >> 8)))) ^ (((((0xffff0000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff0000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xffff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xffff0000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)))) - 1) & ((((((0xffff0000) >>
16) >> 8))))) ^ ((((((0xffff0000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xffff0000) >> 16))) - 1) & ((((0xffff0000) >>
16)))) ^ ((((0xffff0000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xffff0000) >> 16)) >>
4)) - 1) & (((((0xffff0000) >> 16)) >> 4))) ^
(((((0xffff0000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16)) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000) >> 16)) >> 4))) - 1) & ((
((((0xffff0000) >> 16)) >> 4)))) ^ ((((((0xffff0000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xffff0000) >> 16)))) - 1) &
(((((0xffff0000) >> 16))))) ^ (((((0xffff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16))) >> 2)) - 1) & ((((((0xffff0000) >>
16))) >> 2))) ^ ((((((0xffff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16))))) - 1) & ((((((0xffff0000) >> 16))
)))) ^ ((((((0xffff0000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xffff0000))) - 1) & ((
(0xffff0000)))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff0000)) >> 8)) - 1) & ((((
0xffff0000)) >> 8))) ^ ((((0xffff0000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8
) >> 4)) - 1) & (((((0xffff0000)) >> 8) >>
4))) ^ (((((0xffff0000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xffff0000)) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000)) >> 8) >> 4))) - 1
) & ((((((0xffff0000)) >> 8) >> 4)))) ^ (((((
(0xffff0000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff0000)) >> 8))) -
1) & (((((0xffff0000)) >> 8)))) ^ (((((0xffff0000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xffff0000)) >> 8)) >> 2)) - 1) & ((((((0xffff0000
)) >> 8)) >> 2))) ^ ((((((0xffff0000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xffff0000)) >> 8)))) - 1) & ((((((0xffff0000
)) >> 8))))) ^ ((((((0xffff0000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1
) & ((((0xffff0000))))) ^ ((((0xffff0000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000))) >> 4)
) - 1) & (((((0xffff0000))) >> 4))) ^ (((((0xffff0000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff0000))) >> 4) >> 2)) - 1) & ((((((
0xffff0000))) >> 4) >> 2))) ^ ((((((0xffff0000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xffff0000))) >> 4))) - 1) & (((
(((0xffff0000))) >> 4)))) ^ ((((((0xffff0000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
))))) - 1) & (((((0xffff0000)))))) ^ (((((0xffff0000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)
))) >> 2)) - 1) & ((((((0xffff0000)))) >> 2))
) ^ ((((((0xffff0000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000)))))) - 1) & ((
((((0xffff0000))))))) ^ ((((((0xffff0000)))))))) >> (1)
) != 0) ? 1 : 0)))))) | ((ic->ic_lintval / ic->ic_bss->
ni_intval) << ((((u_long)((((((0xffff)) - 1) & ((0xffff
))) ^ ((0xffff)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xffff) >> 16)) - 1) & (((0xffff) >> 16))
) ^ (((0xffff) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xffff) >> 16) >> 8)) - 1) & (
(((0xffff) >> 16) >> 8))) ^ ((((0xffff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xffff) >> 16) >> 8) >> 4)) - 1) & ((
(((0xffff) >> 16) >> 8) >> 4))) ^ (((((0xffff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff) >> 16) >> 8) >>
4)))) ^ ((((((0xffff) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16) >> 8))) - 1) & (((((0xffff) >>
16) >> 8)))) ^ (((((0xffff) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8)) >> 2))) ^ ((((((0xffff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16) >> 8)))) - 1) & (((
(((0xffff) >> 16) >> 8))))) ^ ((((((0xffff) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff) >> 16))) - 1) & ((((0xffff) >>
16)))) ^ ((((0xffff) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff) >> 16)) >> 4)) - 1
) & (((((0xffff) >> 16)) >> 4))) ^ (((((0xffff
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xffff) >> 16)) >> 4) >>
2))) ^ ((((((0xffff) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16)) >> 4))) - 1) & ((((((0xffff) >>
16)) >> 4)))) ^ ((((((0xffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16)))) - 1) & (((((0xffff) >> 16))))) ^ (
((((0xffff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff) >> 16))) >> 2)) - 1) & (((
(((0xffff) >> 16))) >> 2))) ^ ((((((0xffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16))))) - 1) & ((((((0xffff) >>
16)))))) ^ ((((((0xffff) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff
)))) ^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8
))) ^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) &
(((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
2536 LSHIFT(ic->ic_bss->ni_intval, ATW_BPLI_BP_MASK) |(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC8)), (((
(ic->ic_bss->ni_intval) << ((((u_long)((((((0xffff0000
)) - 1) & ((0xffff0000))) ^ ((0xffff0000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xffff0000) >> 16)) -
1) & (((0xffff0000) >> 16))) ^ (((0xffff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xffff0000
) >> 16) >> 8)) - 1) & ((((0xffff0000) >>
16) >> 8))) ^ ((((0xffff0000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)
>> 16) >> 8) >> 4)) - 1) & (((((0xffff0000
) >> 16) >> 8) >> 4))) ^ (((((0xffff0000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4)))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xffff0000) >> 16) >> 8))) - 1) & ((
(((0xffff0000) >> 16) >> 8)))) ^ (((((0xffff0000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff0000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xffff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xffff0000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)))) - 1) & ((((((0xffff0000) >>
16) >> 8))))) ^ ((((((0xffff0000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xffff0000) >> 16))) - 1) & ((((0xffff0000) >>
16)))) ^ ((((0xffff0000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xffff0000) >> 16)) >>
4)) - 1) & (((((0xffff0000) >> 16)) >> 4))) ^
(((((0xffff0000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16)) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000) >> 16)) >> 4))) - 1) & ((
((((0xffff0000) >> 16)) >> 4)))) ^ ((((((0xffff0000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xffff0000) >> 16)))) - 1) &
(((((0xffff0000) >> 16))))) ^ (((((0xffff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16))) >> 2)) - 1) & ((((((0xffff0000) >>
16))) >> 2))) ^ ((((((0xffff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16))))) - 1) & ((((((0xffff0000) >> 16))
)))) ^ ((((((0xffff0000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xffff0000))) - 1) & ((
(0xffff0000)))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff0000)) >> 8)) - 1) & ((((
0xffff0000)) >> 8))) ^ ((((0xffff0000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8
) >> 4)) - 1) & (((((0xffff0000)) >> 8) >>
4))) ^ (((((0xffff0000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xffff0000)) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000)) >> 8) >> 4))) - 1
) & ((((((0xffff0000)) >> 8) >> 4)))) ^ (((((
(0xffff0000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff0000)) >> 8))) -
1) & (((((0xffff0000)) >> 8)))) ^ (((((0xffff0000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xffff0000)) >> 8)) >> 2)) - 1) & ((((((0xffff0000
)) >> 8)) >> 2))) ^ ((((((0xffff0000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xffff0000)) >> 8)))) - 1) & ((((((0xffff0000
)) >> 8))))) ^ ((((((0xffff0000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1
) & ((((0xffff0000))))) ^ ((((0xffff0000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000))) >> 4)
) - 1) & (((((0xffff0000))) >> 4))) ^ (((((0xffff0000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff0000))) >> 4) >> 2)) - 1) & ((((((
0xffff0000))) >> 4) >> 2))) ^ ((((((0xffff0000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xffff0000))) >> 4))) - 1) & (((
(((0xffff0000))) >> 4)))) ^ ((((((0xffff0000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
))))) - 1) & (((((0xffff0000)))))) ^ (((((0xffff0000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)
))) >> 2)) - 1) & ((((((0xffff0000)))) >> 2))
) ^ ((((((0xffff0000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000)))))) - 1) & ((
((((0xffff0000))))))) ^ ((((((0xffff0000)))))))) >> (1)
) != 0) ? 1 : 0)))))) | ((ic->ic_lintval / ic->ic_bss->
ni_intval) << ((((u_long)((((((0xffff)) - 1) & ((0xffff
))) ^ ((0xffff)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xffff) >> 16)) - 1) & (((0xffff) >> 16))
) ^ (((0xffff) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xffff) >> 16) >> 8)) - 1) & (
(((0xffff) >> 16) >> 8))) ^ ((((0xffff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xffff) >> 16) >> 8) >> 4)) - 1) & ((
(((0xffff) >> 16) >> 8) >> 4))) ^ (((((0xffff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff) >> 16) >> 8) >>
4)))) ^ ((((((0xffff) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16) >> 8))) - 1) & (((((0xffff) >>
16) >> 8)))) ^ (((((0xffff) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8)) >> 2))) ^ ((((((0xffff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16) >> 8)))) - 1) & (((
(((0xffff) >> 16) >> 8))))) ^ ((((((0xffff) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff) >> 16))) - 1) & ((((0xffff) >>
16)))) ^ ((((0xffff) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff) >> 16)) >> 4)) - 1
) & (((((0xffff) >> 16)) >> 4))) ^ (((((0xffff
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xffff) >> 16)) >> 4) >>
2))) ^ ((((((0xffff) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16)) >> 4))) - 1) & ((((((0xffff) >>
16)) >> 4)))) ^ ((((((0xffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16)))) - 1) & (((((0xffff) >> 16))))) ^ (
((((0xffff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff) >> 16))) >> 2)) - 1) & (((
(((0xffff) >> 16))) >> 2))) ^ ((((((0xffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16))))) - 1) & ((((((0xffff) >>
16)))))) ^ ((((((0xffff) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff
)))) ^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8
))) ^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) &
(((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
2537 LSHIFT(ic->ic_lintval / ic->ic_bss->ni_intval,(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC8)), (((
(ic->ic_bss->ni_intval) << ((((u_long)((((((0xffff0000
)) - 1) & ((0xffff0000))) ^ ((0xffff0000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xffff0000) >> 16)) -
1) & (((0xffff0000) >> 16))) ^ (((0xffff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xffff0000
) >> 16) >> 8)) - 1) & ((((0xffff0000) >>
16) >> 8))) ^ ((((0xffff0000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)
>> 16) >> 8) >> 4)) - 1) & (((((0xffff0000
) >> 16) >> 8) >> 4))) ^ (((((0xffff0000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4)))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xffff0000) >> 16) >> 8))) - 1) & ((
(((0xffff0000) >> 16) >> 8)))) ^ (((((0xffff0000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff0000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xffff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xffff0000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)))) - 1) & ((((((0xffff0000) >>
16) >> 8))))) ^ ((((((0xffff0000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xffff0000) >> 16))) - 1) & ((((0xffff0000) >>
16)))) ^ ((((0xffff0000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xffff0000) >> 16)) >>
4)) - 1) & (((((0xffff0000) >> 16)) >> 4))) ^
(((((0xffff0000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16)) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000) >> 16)) >> 4))) - 1) & ((
((((0xffff0000) >> 16)) >> 4)))) ^ ((((((0xffff0000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xffff0000) >> 16)))) - 1) &
(((((0xffff0000) >> 16))))) ^ (((((0xffff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16))) >> 2)) - 1) & ((((((0xffff0000) >>
16))) >> 2))) ^ ((((((0xffff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16))))) - 1) & ((((((0xffff0000) >> 16))
)))) ^ ((((((0xffff0000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xffff0000))) - 1) & ((
(0xffff0000)))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff0000)) >> 8)) - 1) & ((((
0xffff0000)) >> 8))) ^ ((((0xffff0000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8
) >> 4)) - 1) & (((((0xffff0000)) >> 8) >>
4))) ^ (((((0xffff0000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xffff0000)) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000)) >> 8) >> 4))) - 1
) & ((((((0xffff0000)) >> 8) >> 4)))) ^ (((((
(0xffff0000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff0000)) >> 8))) -
1) & (((((0xffff0000)) >> 8)))) ^ (((((0xffff0000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xffff0000)) >> 8)) >> 2)) - 1) & ((((((0xffff0000
)) >> 8)) >> 2))) ^ ((((((0xffff0000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xffff0000)) >> 8)))) - 1) & ((((((0xffff0000
)) >> 8))))) ^ ((((((0xffff0000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1
) & ((((0xffff0000))))) ^ ((((0xffff0000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000))) >> 4)
) - 1) & (((((0xffff0000))) >> 4))) ^ (((((0xffff0000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff0000))) >> 4) >> 2)) - 1) & ((((((
0xffff0000))) >> 4) >> 2))) ^ ((((((0xffff0000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xffff0000))) >> 4))) - 1) & (((
(((0xffff0000))) >> 4)))) ^ ((((((0xffff0000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
))))) - 1) & (((((0xffff0000)))))) ^ (((((0xffff0000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)
))) >> 2)) - 1) & ((((((0xffff0000)))) >> 2))
) ^ ((((((0xffff0000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000)))))) - 1) & ((
((((0xffff0000))))))) ^ ((((((0xffff0000)))))))) >> (1)
) != 0) ? 1 : 0)))))) | ((ic->ic_lintval / ic->ic_bss->
ni_intval) << ((((u_long)((((((0xffff)) - 1) & ((0xffff
))) ^ ((0xffff)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xffff) >> 16)) - 1) & (((0xffff) >> 16))
) ^ (((0xffff) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xffff) >> 16) >> 8)) - 1) & (
(((0xffff) >> 16) >> 8))) ^ ((((0xffff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xffff) >> 16) >> 8) >> 4)) - 1) & ((
(((0xffff) >> 16) >> 8) >> 4))) ^ (((((0xffff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff) >> 16) >> 8) >>
4)))) ^ ((((((0xffff) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16) >> 8))) - 1) & (((((0xffff) >>
16) >> 8)))) ^ (((((0xffff) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8)) >> 2))) ^ ((((((0xffff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16) >> 8)))) - 1) & (((
(((0xffff) >> 16) >> 8))))) ^ ((((((0xffff) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff) >> 16))) - 1) & ((((0xffff) >>
16)))) ^ ((((0xffff) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff) >> 16)) >> 4)) - 1
) & (((((0xffff) >> 16)) >> 4))) ^ (((((0xffff
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xffff) >> 16)) >> 4) >>
2))) ^ ((((((0xffff) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16)) >> 4))) - 1) & ((((((0xffff) >>
16)) >> 4)))) ^ ((((((0xffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16)))) - 1) & (((((0xffff) >> 16))))) ^ (
((((0xffff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff) >> 16))) >> 2)) - 1) & (((
(((0xffff) >> 16))) >> 2))) ^ ((((((0xffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16))))) - 1) & ((((((0xffff) >>
16)))))) ^ ((((((0xffff) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff
)))) ^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8
))) ^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) &
(((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
2538 ATW_BPLI_LI_MASK))(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0xC8)), (((
(ic->ic_bss->ni_intval) << ((((u_long)((((((0xffff0000
)) - 1) & ((0xffff0000))) ^ ((0xffff0000)))) >> (16
)) != 0) ? 16 + ((((u_long)(((((((0xffff0000) >> 16)) -
1) & (((0xffff0000) >> 16))) ^ (((0xffff0000) >>
16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((((0xffff0000
) >> 16) >> 8)) - 1) & ((((0xffff0000) >>
16) >> 8))) ^ ((((0xffff0000) >> 16) >> 8)
))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)
>> 16) >> 8) >> 4)) - 1) & (((((0xffff0000
) >> 16) >> 8) >> 4))) ^ (((((0xffff0000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xffff0000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000) >> 16
) >> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000) >> 16) >>
8) >> 4))) - 1) & ((((((0xffff0000) >> 16) >>
8) >> 4)))) ^ ((((((0xffff0000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xffff0000) >> 16) >> 8))) - 1) & ((
(((0xffff0000) >> 16) >> 8)))) ^ (((((0xffff0000)
>> 16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff0000) >> 16) >> 8)) >> 2))
- 1) & ((((((0xffff0000) >> 16) >> 8)) >>
2))) ^ ((((((0xffff0000) >> 16) >> 8)) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16) >> 8)))) - 1) & ((((((0xffff0000) >>
16) >> 8))))) ^ ((((((0xffff0000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xffff0000) >> 16))) - 1) & ((((0xffff0000) >>
16)))) ^ ((((0xffff0000) >> 16))))) >> (4)) != 0
) ? 4 + ((((u_long)(((((((((0xffff0000) >> 16)) >>
4)) - 1) & (((((0xffff0000) >> 16)) >> 4))) ^
(((((0xffff0000) >> 16)) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0xffff0000) >> 16)) >>
4) >> 2)) - 1) & ((((((0xffff0000) >> 16)) >>
4) >> 2))) ^ ((((((0xffff0000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xffff0000) >> 16)) >> 4))) - 1) & ((
((((0xffff0000) >> 16)) >> 4)))) ^ ((((((0xffff0000
) >> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0))
: ((((u_long)(((((((((0xffff0000) >> 16)))) - 1) &
(((((0xffff0000) >> 16))))) ^ (((((0xffff0000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000
) >> 16))) >> 2)) - 1) & ((((((0xffff0000) >>
16))) >> 2))) ^ ((((((0xffff0000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff0000
) >> 16))))) - 1) & ((((((0xffff0000) >> 16))
)))) ^ ((((((0xffff0000) >> 16))))))) >> (1)) != 0
) ? 1 : 0)))) : ((((u_long)(((((((0xffff0000))) - 1) & ((
(0xffff0000)))) ^ (((0xffff0000))))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xffff0000)) >> 8)) - 1) & ((((
0xffff0000)) >> 8))) ^ ((((0xffff0000)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000)) >> 8
) >> 4)) - 1) & (((((0xffff0000)) >> 8) >>
4))) ^ (((((0xffff0000)) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)) >> 8
) >> 4) >> 2)) - 1) & ((((((0xffff0000)) >>
8) >> 4) >> 2))) ^ ((((((0xffff0000)) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xffff0000)) >> 8) >> 4))) - 1
) & ((((((0xffff0000)) >> 8) >> 4)))) ^ (((((
(0xffff0000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff0000)) >> 8))) -
1) & (((((0xffff0000)) >> 8)))) ^ (((((0xffff0000)
) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)((((((
((((0xffff0000)) >> 8)) >> 2)) - 1) & ((((((0xffff0000
)) >> 8)) >> 2))) ^ ((((((0xffff0000)) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0xffff0000)) >> 8)))) - 1) & ((((((0xffff0000
)) >> 8))))) ^ ((((((0xffff0000)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xffff0000)))) - 1
) & ((((0xffff0000))))) ^ ((((0xffff0000)))))) >> (
4)) != 0) ? 4 + ((((u_long)(((((((((0xffff0000))) >> 4)
) - 1) & (((((0xffff0000))) >> 4))) ^ (((((0xffff0000
))) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff0000))) >> 4) >> 2)) - 1) & ((((((
0xffff0000))) >> 4) >> 2))) ^ ((((((0xffff0000)))
>> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((
((u_long)((((((((((0xffff0000))) >> 4))) - 1) & (((
(((0xffff0000))) >> 4)))) ^ ((((((0xffff0000))) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff0000
))))) - 1) & (((((0xffff0000)))))) ^ (((((0xffff0000)))))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff0000)
))) >> 2)) - 1) & ((((((0xffff0000)))) >> 2))
) ^ ((((((0xffff0000)))) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xffff0000)))))) - 1) & ((
((((0xffff0000))))))) ^ ((((((0xffff0000)))))))) >> (1)
) != 0) ? 1 : 0)))))) | ((ic->ic_lintval / ic->ic_bss->
ni_intval) << ((((u_long)((((((0xffff)) - 1) & ((0xffff
))) ^ ((0xffff)))) >> (16)) != 0) ? 16 + ((((u_long)(((
((((0xffff) >> 16)) - 1) & (((0xffff) >> 16))
) ^ (((0xffff) >> 16)))) >> (8)) != 0) ? 8 + ((((
u_long)((((((((0xffff) >> 16) >> 8)) - 1) & (
(((0xffff) >> 16) >> 8))) ^ ((((0xffff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xffff) >> 16) >> 8) >> 4)) - 1) & ((
(((0xffff) >> 16) >> 8) >> 4))) ^ (((((0xffff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xffff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xffff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xffff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xffff) >> 16) >> 8) >>
4))) - 1) & ((((((0xffff) >> 16) >> 8) >>
4)))) ^ ((((((0xffff) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16) >> 8))) - 1) & (((((0xffff) >>
16) >> 8)))) ^ (((((0xffff) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xffff) >>
16) >> 8)) >> 2))) ^ ((((((0xffff) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16) >> 8)))) - 1) & (((
(((0xffff) >> 16) >> 8))))) ^ ((((((0xffff) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff) >> 16))) - 1) & ((((0xffff) >>
16)))) ^ ((((0xffff) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xffff) >> 16)) >> 4)) - 1
) & (((((0xffff) >> 16)) >> 4))) ^ (((((0xffff
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xffff) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xffff) >> 16)) >> 4) >>
2))) ^ ((((((0xffff) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)
>> 16)) >> 4))) - 1) & ((((((0xffff) >>
16)) >> 4)))) ^ ((((((0xffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xffff
) >> 16)))) - 1) & (((((0xffff) >> 16))))) ^ (
((((0xffff) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff) >> 16))) >> 2)) - 1) & (((
(((0xffff) >> 16))) >> 2))) ^ ((((((0xffff) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xffff) >> 16))))) - 1) & ((((((0xffff) >>
16)))))) ^ ((((((0xffff) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xffff))) - 1) & (((0xffff
)))) ^ (((0xffff))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xffff)) >> 8)) - 1) & ((((0xffff)) >> 8
))) ^ ((((0xffff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xffff)) >> 8) >> 4)) - 1) &
(((((0xffff)) >> 8) >> 4))) ^ (((((0xffff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xffff)) >> 8) >> 4) >> 2)) - 1) &
((((((0xffff)) >> 8) >> 4) >> 2))) ^ (((((
(0xffff)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8) >>
4))) - 1) & ((((((0xffff)) >> 8) >> 4)))) ^ (
(((((0xffff)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xffff)) >> 8))) - 1) &
(((((0xffff)) >> 8)))) ^ (((((0xffff)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xffff)) >>
8)) >> 2)) - 1) & ((((((0xffff)) >> 8)) >>
2))) ^ ((((((0xffff)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)) >> 8
)))) - 1) & ((((((0xffff)) >> 8))))) ^ ((((((0xffff
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xffff)))) - 1) & ((((0xffff))))) ^ ((((0xffff))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xffff))) >>
4)) - 1) & (((((0xffff))) >> 4))) ^ (((((0xffff)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xffff))) >> 4) >> 2)) - 1) & ((((((0xffff)
)) >> 4) >> 2))) ^ ((((((0xffff))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff
))) >> 4))) - 1) & ((((((0xffff))) >> 4)))) ^
((((((0xffff))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xffff))))) - 1) & (((((0xffff)))
))) ^ (((((0xffff))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xffff)))) >> 2)) - 1) & ((((((0xffff)))
) >> 2))) ^ ((((((0xffff)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xffff)))))) - 1) &
((((((0xffff))))))) ^ ((((((0xffff)))))))) >> (1)) != 0
) ? 1 : 0))))))))))
;
2539
2540 DPRINTF(sc, ("%s: reg[ATW_BPLI] = %08x\n",
2541 sc->sc_dev.dv_xname, ATW_READ(sc, ATW_BPLI)));
2542
2543 atw_predict_beacon(sc);
2544 break;
2545 }
2546
2547 if (nstate != IEEE80211_S_SCAN)
2548 timeout_del(&sc->sc_scan_to);
2549
2550#ifndef IEEE80211_STA_ONLY
2551 if (nstate == IEEE80211_S_RUN &&
2552 ic->ic_opmode == IEEE80211_M_IBSS)
2553 atw_start_beacon(sc, 1);
2554 else
2555#endif
2556 atw_start_beacon(sc, 0);
2557
2558 error = (*sc->sc_newstate)(ic, nstate, arg);
2559
2560 if (ostate == IEEE80211_S_INIT && nstate == IEEE80211_S_SCAN)
2561 atw_write_bssid(sc);
2562
2563 return error;
2564}
2565
2566/*
2567 * atw_add_rxbuf:
2568 *
2569 * Add a receive buffer to the indicated descriptor.
2570 */
2571int
2572atw_add_rxbuf(struct atw_softc *sc, int idx)
2573{
2574 struct atw_rxsoft *rxs = &sc->sc_rxsoft[idx];
2575 struct mbuf *m;
2576 int error;
2577
2578 MGETHDR(m, M_DONTWAIT, MT_DATA)m = m_gethdr((0x0002), (1));
2579 if (m == NULL((void *)0))
2580 return (ENOBUFS55);
2581
2582 MCLGET(m, M_DONTWAIT)(void) m_clget((m), (0x0002), (1 << 11));
2583 if ((m->m_flagsm_hdr.mh_flags & M_EXT0x0001) == 0) {
2584 m_freem(m);
2585 return (ENOBUFS55);
2586 }
2587
2588 if (rxs->rxs_mbuf != NULL((void *)0))
2589 bus_dmamap_unload(sc->sc_dmat, rxs->rxs_dmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (rxs
->rxs_dmamap))
;
2590
2591 rxs->rxs_mbuf = m;
2592
2593 error = bus_dmamap_load(sc->sc_dmat, rxs->rxs_dmamap,(*(sc->sc_dmat)->_dmamap_load)((sc->sc_dmat), (rxs->
rxs_dmamap), (m->M_dat.MH.MH_dat.MH_ext.ext_buf), (m->M_dat
.MH.MH_dat.MH_ext.ext_size), (((void *)0)), (0x0200|0x0001))
2594 m->m_ext.ext_buf, m->m_ext.ext_size, NULL,(*(sc->sc_dmat)->_dmamap_load)((sc->sc_dmat), (rxs->
rxs_dmamap), (m->M_dat.MH.MH_dat.MH_ext.ext_buf), (m->M_dat
.MH.MH_dat.MH_ext.ext_size), (((void *)0)), (0x0200|0x0001))
2595 BUS_DMA_READ|BUS_DMA_NOWAIT)(*(sc->sc_dmat)->_dmamap_load)((sc->sc_dmat), (rxs->
rxs_dmamap), (m->M_dat.MH.MH_dat.MH_ext.ext_buf), (m->M_dat
.MH.MH_dat.MH_ext.ext_size), (((void *)0)), (0x0200|0x0001))
;
2596 if (error) {
2597 printf("%s: can't load rx DMA map %d, error = %d\n",
2598 sc->sc_dev.dv_xname, idx, error);
2599 panic("atw_add_rxbuf"); /* XXX */
2600 }
2601
2602 bus_dmamap_sync(sc->sc_dmat, rxs->rxs_dmamap, 0,(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (rxs->
rxs_dmamap), (0), (rxs->rxs_dmamap->dm_mapsize), (0x01)
)
2603 rxs->rxs_dmamap->dm_mapsize, BUS_DMASYNC_PREREAD)(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (rxs->
rxs_dmamap), (0), (rxs->rxs_dmamap->dm_mapsize), (0x01)
)
;
2604
2605 ATW_INIT_RXDESC(sc, idx)do { struct atw_rxsoft *__rxs = &sc->sc_rxsoft[(idx)];
struct atw_rxdesc *__rxd = &sc->sc_control_data->acd_rxdescs
[(idx)]; struct mbuf *__m = __rxs->rxs_mbuf; __rxd->ar_buf1
= ((__uint32_t)(__rxs->rxs_dmamap->dm_segs[0].ds_addr)
); __rxd->ar_buf2 = ((__uint32_t)((((sc))->sc_cddmamap->
dm_segs[0].ds_addr + __builtin_offsetof(struct atw_control_data
, acd_rxdescs[(((((idx) + 1) & (64 - 1))))])))); __rxd->
ar_ctl = ((__uint32_t)(((((__m->M_dat.MH.MH_dat.MH_ext.ext_size
- 1) & ~0x3U)) << ((((u_long)((((((0xfff)) - 1) &
((0xfff))) ^ ((0xfff)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xfff) >> 16)) - 1) & (((0xfff) >> 16
))) ^ (((0xfff) >> 16)))) >> (8)) != 0) ? 8 + (((
(u_long)((((((((0xfff) >> 16) >> 8)) - 1) & (
(((0xfff) >> 16) >> 8))) ^ ((((0xfff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xfff) >> 16) >> 8) >> 4)) - 1) & (((
((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff)
>> 16) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | 0 | ((idx) == (64 - 1) ? (1<<
25) : 0))); __rxd->ar_stat = ((__uint32_t)((1<<31)))
; (*(((sc))->sc_dmat)->_dmamap_sync)((((sc))->sc_dmat
), (((sc))->sc_cddmamap), (__builtin_offsetof(struct atw_control_data
, acd_rxdescs[(((idx)))])), (sizeof(struct atw_rxdesc)), ((0x01
|0x04))); } while (0)
;
2606
2607 return (0);
2608}
2609
2610/*
2611 * Release any queued transmit buffers.
2612 */
2613void
2614atw_txdrain(struct atw_softc *sc)
2615{
2616 struct atw_txsoft *txs;
2617
2618 while ((txs = SIMPLEQ_FIRST(&sc->sc_txdirtyq)((&sc->sc_txdirtyq)->sqh_first)) != NULL((void *)0)) {
2619 SIMPLEQ_REMOVE_HEAD(&sc->sc_txdirtyq, txs_q)do { if (((&sc->sc_txdirtyq)->sqh_first = (&sc->
sc_txdirtyq)->sqh_first->txs_q.sqe_next) == ((void *)0)
) (&sc->sc_txdirtyq)->sqh_last = &(&sc->
sc_txdirtyq)->sqh_first; } while (0)
;
2620 if (txs->txs_mbuf != NULL((void *)0)) {
2621 bus_dmamap_unload(sc->sc_dmat, txs->txs_dmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (txs
->txs_dmamap))
;
2622 m_freem(txs->txs_mbuf);
2623 txs->txs_mbuf = NULL((void *)0);
2624 }
2625 SIMPLEQ_INSERT_TAIL(&sc->sc_txfreeq, txs, txs_q)do { (txs)->txs_q.sqe_next = ((void *)0); *(&sc->sc_txfreeq
)->sqh_last = (txs); (&sc->sc_txfreeq)->sqh_last
= &(txs)->txs_q.sqe_next; } while (0)
;
2626 }
2627 sc->sc_tx_timer = 0;
2628}
2629
2630/*
2631 * atw_stop: [ ifnet interface function ]
2632 *
2633 * Stop transmission on the interface.
2634 */
2635void
2636atw_stop(struct ifnet *ifp, int disable)
2637{
2638 struct atw_softc *sc = ifp->if_softc;
2639 struct ieee80211com *ic = &sc->sc_ic;
2640
2641 ieee80211_new_state(ic, IEEE80211_S_INIT, -1)(((ic)->ic_newstate)((ic), (IEEE80211_S_INIT), (-1)));
2642
2643 /*
2644 * Mark the interface down and cancel the watchdog timer.
2645 */
2646 ifp->if_flags &= ~IFF_RUNNING0x40;
2647 ifq_clr_oactive(&ifp->if_snd);
2648 ifp->if_timer = 0;
2649
2650 /* Disable interrupts. */
2651 ATW_WRITE(sc, ATW_IER, 0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x38)), ((0
))))
;
2652
2653 /* Stop the transmit and receive processes. */
2654 sc->sc_opmode = 0;
2655 ATW_WRITE(sc, ATW_NAR, 0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x30)), ((0
))))
;
2656 DELAY(20 * 1000)(*delay_func)(20 * 1000);
2657 ATW_WRITE(sc, ATW_TDBD, 0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x20)), ((0
))))
;
2658 ATW_WRITE(sc, ATW_TDBP, 0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x24)), ((0
))))
;
2659 ATW_WRITE(sc, ATW_RDB, 0)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x18)), ((0
))))
;
2660
2661 atw_txdrain(sc);
2662
2663 if (disable) {
2664 atw_rxdrain(sc);
2665 atw_disable(sc);
2666 }
2667
2668 if (!disable)
2669 atw_reset(sc);
2670}
2671
2672/*
2673 * atw_rxdrain:
2674 *
2675 * Drain the receive queue.
2676 */
2677void
2678atw_rxdrain(struct atw_softc *sc)
2679{
2680 struct atw_rxsoft *rxs;
2681 int i;
2682
2683 for (i = 0; i < ATW_NRXDESC64; i++) {
2684 rxs = &sc->sc_rxsoft[i];
2685 if (rxs->rxs_mbuf == NULL((void *)0))
2686 continue;
2687 bus_dmamap_unload(sc->sc_dmat, rxs->rxs_dmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (rxs
->rxs_dmamap))
;
2688 m_freem(rxs->rxs_mbuf);
2689 rxs->rxs_mbuf = NULL((void *)0);
2690 }
2691}
2692
2693/*
2694 * atw_detach:
2695 *
2696 * Detach an ADM8211 interface.
2697 */
2698int
2699atw_detach(struct atw_softc *sc)
2700{
2701 struct ifnet *ifp = &sc->sc_ic.ic_ific_ac.ac_if;
2702 struct atw_rxsoft *rxs;
2703 struct atw_txsoft *txs;
2704 int i;
2705
2706 /*
2707 * Succeed now if there isn't any work to do.
2708 */
2709 if ((sc->sc_flags & ATWF_ATTACHED0x00000800) == 0)
2710 return (0);
2711
2712 timeout_del(&sc->sc_scan_to);
2713
2714 ieee80211_ifdetach(ifp);
2715 if_detach(ifp);
2716
2717 for (i = 0; i < ATW_NRXDESC64; i++) {
2718 rxs = &sc->sc_rxsoft[i];
2719 if (rxs->rxs_mbuf != NULL((void *)0)) {
2720 bus_dmamap_unload(sc->sc_dmat, rxs->rxs_dmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (rxs
->rxs_dmamap))
;
2721 m_freem(rxs->rxs_mbuf);
2722 rxs->rxs_mbuf = NULL((void *)0);
2723 }
2724 bus_dmamap_destroy(sc->sc_dmat, rxs->rxs_dmamap)(*(sc->sc_dmat)->_dmamap_destroy)((sc->sc_dmat), (rxs
->rxs_dmamap))
;
2725 }
2726 for (i = 0; i < ATW_TXQUEUELEN64; i++) {
2727 txs = &sc->sc_txsoft[i];
2728 if (txs->txs_mbuf != NULL((void *)0)) {
2729 bus_dmamap_unload(sc->sc_dmat, txs->txs_dmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (txs
->txs_dmamap))
;
2730 m_freem(txs->txs_mbuf);
2731 txs->txs_mbuf = NULL((void *)0);
2732 }
2733 bus_dmamap_destroy(sc->sc_dmat, txs->txs_dmamap)(*(sc->sc_dmat)->_dmamap_destroy)((sc->sc_dmat), (txs
->txs_dmamap))
;
2734 }
2735 bus_dmamap_unload(sc->sc_dmat, sc->sc_cddmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (sc->
sc_cddmamap))
;
2736 bus_dmamap_destroy(sc->sc_dmat, sc->sc_cddmamap)(*(sc->sc_dmat)->_dmamap_destroy)((sc->sc_dmat), (sc
->sc_cddmamap))
;
2737 bus_dmamem_unmap(sc->sc_dmat, (caddr_t)sc->sc_control_data,(*(sc->sc_dmat)->_dmamem_unmap)((sc->sc_dmat), ((caddr_t
)sc->sc_control_data), (sizeof(struct atw_control_data)))
2738 sizeof(struct atw_control_data))(*(sc->sc_dmat)->_dmamem_unmap)((sc->sc_dmat), ((caddr_t
)sc->sc_control_data), (sizeof(struct atw_control_data)))
;
2739 bus_dmamem_free(sc->sc_dmat, &sc->sc_cdseg, sc->sc_cdnseg)(*(sc->sc_dmat)->_dmamem_free)((sc->sc_dmat), (&
sc->sc_cdseg), (sc->sc_cdnseg))
;
2740
2741 if (sc->sc_srom)
2742 free(sc->sc_srom, M_DEVBUF2, sc->sc_sromsz);
2743
2744 return (0);
2745}
2746
2747int
2748atw_intr(void *arg)
2749{
2750 struct atw_softc *sc = arg;
2751 struct ifnet *ifp = &sc->sc_ic.ic_ific_ac.ac_if;
2752 u_int32_t status, rxstatus, txstatus, linkstatus;
2753 int handled = 0, txthresh;
2754
2755#ifdef DEBUG
2756 if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000) == 0)
2757 panic("%s: atw_intr: not enabled", sc->sc_dev.dv_xname);
2758#endif
2759
2760 /*
2761 * If the interface isn't running, the interrupt couldn't
2762 * possibly have come from us.
2763 */
2764 if ((ifp->if_flags & IFF_RUNNING0x40) == 0 ||
2765 (sc->sc_dev.dv_flags & DVF_ACTIVE0x0001) == 0)
2766 return (0);
2767
2768 for (;;) {
2769 status = ATW_READ(sc, ATW_STSR)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x28))));
2770
2771 if (status)
2772 ATW_WRITE(sc, ATW_STSR, status)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x28)), ((status
))))
;
2773
2774#ifdef ATW_DEBUG
2775#define PRINTINTR(flag) do { \
2776 if ((status & flag) != 0) { \
2777 printf("%s" #flag, delim); \
2778 delim = ","; \
2779 } \
2780} while (0)
2781
2782 if (atw_debug > 1 && status) {
2783 const char *delim = "<";
2784
2785 printf("%s: reg[STSR] = %x",
2786 sc->sc_dev.dv_xname, status);
2787
2788 PRINTINTR(ATW_INTR_FBE(1<<13));
2789 PRINTINTR(ATW_INTR_LINKOFF(1<<28));
2790 PRINTINTR(ATW_INTR_LINKON(1<<24));
2791 PRINTINTR(ATW_INTR_RCI(1<<6));
2792 PRINTINTR(ATW_INTR_RDU(1<<7));
2793 PRINTINTR(ATW_INTR_REIS(1<<12));
2794 PRINTINTR(ATW_INTR_RPS(1<<8));
2795 PRINTINTR(ATW_INTR_TCI(1<<0));
2796 PRINTINTR(ATW_INTR_TDU(1<<2));
2797 PRINTINTR(ATW_INTR_TLT(1<<3));
2798 PRINTINTR(ATW_INTR_TPS(1<<1));
2799 PRINTINTR(ATW_INTR_TRT(1<<4));
2800 PRINTINTR(ATW_INTR_TUF(1<<5));
2801 PRINTINTR(ATW_INTR_BCNTC(1<<30));
2802 PRINTINTR(ATW_INTR_ATIME(1<<21));
2803 PRINTINTR(ATW_INTR_TBTT(1<<20));
2804 PRINTINTR(ATW_INTR_TSCZ(1<<25));
2805 PRINTINTR(ATW_INTR_TSFTF(1<<26));
2806 printf(">\n");
2807 }
2808#undef PRINTINTR
2809#endif /* ATW_DEBUG */
2810
2811 if ((status & sc->sc_inten) == 0)
2812 break;
2813
2814 handled = 1;
2815
2816 rxstatus = status & sc->sc_rxint_mask;
2817 txstatus = status & sc->sc_txint_mask;
2818 linkstatus = status & sc->sc_linkint_mask;
2819
2820 if (linkstatus) {
2821 atw_linkintr(sc, linkstatus);
2822 }
2823
2824 if (rxstatus) {
2825 /* Grab any new packets. */
2826 atw_rxintr(sc);
2827
2828 if (rxstatus & ATW_INTR_RDU(1<<7)) {
2829 printf("%s: receive ring overrun\n",
2830 sc->sc_dev.dv_xname);
2831 /* Get the receive process going again. */
2832 ATW_WRITE(sc, ATW_RDR, 0x1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x10)), ((0x1
))))
;
2833 break;
2834 }
2835 }
2836
2837 if (txstatus) {
2838 /* Sweep up transmit descriptors. */
2839 atw_txintr(sc);
2840
2841 if (txstatus & ATW_INTR_TLT(1<<3))
2842 DPRINTF(sc, ("%s: tx lifetime exceeded\n",
2843 sc->sc_dev.dv_xname));
2844
2845 if (txstatus & ATW_INTR_TRT(1<<4))
2846 DPRINTF(sc, ("%s: tx retry limit exceeded\n",
2847 sc->sc_dev.dv_xname));
2848
2849 /* If Tx under-run, increase our transmit threshold
2850 * if another is available.
2851 */
2852 txthresh = sc->sc_txthresh + 1;
2853 if ((txstatus & ATW_INTR_TUF(1<<5)) &&
2854 sc->sc_txth[txthresh].txth_name != NULL((void *)0)) {
2855 /* Idle the transmit process. */
2856 atw_idle(sc, ATW_NAR_ST(1<<13));
2857
2858 sc->sc_txthresh = txthresh;
2859 sc->sc_opmode &= ~(ATW_NAR_TR_MASK0xc000|ATW_NAR_SF(1<<21));
2860 sc->sc_opmode |=
2861 sc->sc_txth[txthresh].txth_opmode;
2862 printf("%s: transmit underrun; new "
2863 "threshold: %s\n", sc->sc_dev.dv_xname,
2864 sc->sc_txth[txthresh].txth_name);
2865
2866 /* Set the new threshold and restart
2867 * the transmit process.
2868 */
2869 ATW_WRITE(sc, ATW_NAR, sc->sc_opmode)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x30)), ((sc
->sc_opmode))))
;
2870 DELAY(20 * 1000)(*delay_func)(20 * 1000);
2871 ATW_WRITE(sc, ATW_RDR, 0x1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x10)), ((0x1
))))
;
2872 /* XXX Log every Nth underrun from
2873 * XXX now on?
2874 */
2875 }
2876 }
2877
2878 if (status & (ATW_INTR_TPS(1<<1)|ATW_INTR_RPS(1<<8))) {
2879 if (status & ATW_INTR_TPS(1<<1))
2880 printf("%s: transmit process stopped\n",
2881 sc->sc_dev.dv_xname);
2882 if (status & ATW_INTR_RPS(1<<8))
2883 printf("%s: receive process stopped\n",
2884 sc->sc_dev.dv_xname);
2885 (void)atw_init(ifp);
2886 break;
2887 }
2888
2889 if (status & ATW_INTR_FBE(1<<13)) {
2890 printf("%s: fatal bus error\n", sc->sc_dev.dv_xname);
2891 (void)atw_init(ifp);
2892 break;
2893 }
2894
2895 /*
2896 * Not handled:
2897 *
2898 * Transmit buffer unavailable -- normal
2899 * condition, nothing to do, really.
2900 *
2901 * Early receive interrupt -- not available on
2902 * all chips, we just use RI. We also only
2903 * use single-segment receive DMA, so this
2904 * is mostly useless.
2905 *
2906 * TBD others
2907 */
2908 }
2909
2910 /* Try to get more packets going. */
2911 atw_start(ifp);
2912
2913 return (handled);
2914}
2915
2916/*
2917 * atw_idle:
2918 *
2919 * Cause the transmit and/or receive processes to go idle.
2920 *
2921 * XXX It seems that the ADM8211 will not signal the end of the Rx/Tx
2922 * process in STSR if I clear SR or ST after the process has already
2923 * ceased. Fair enough. But the Rx process status bits in ATW_TEST0
2924 * do not seem to be too reliable. Perhaps I have the sense of the
2925 * Rx bits switched with the Tx bits?
2926 */
2927void
2928atw_idle(struct atw_softc *sc, u_int32_t bits)
2929{
2930 u_int32_t ackmask = 0, opmode, stsr, test0;
2931 int i, s;
2932
2933 s = splnet()splraise(0x7);
2934
2935 opmode = sc->sc_opmode & ~bits;
2936
2937 if (bits & ATW_NAR_SR(1<<1))
2938 ackmask |= ATW_INTR_RPS(1<<8);
2939
2940 if (bits & ATW_NAR_ST(1<<13)) {
2941 ackmask |= ATW_INTR_TPS(1<<1);
2942 /* set ATW_NAR_HF to flush TX FIFO. */
2943 opmode |= ATW_NAR_HF(1<<30);
2944 }
2945
2946 ATW_WRITE(sc, ATW_NAR, opmode)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x30)), ((opmode
))))
;
2947 DELAY(20 * 1000)(*delay_func)(20 * 1000);
2948
2949 for (i = 0; i < 10; i++) {
2950 stsr = ATW_READ(sc, ATW_STSR)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x28))));
2951 if ((stsr & ackmask) == ackmask)
2952 break;
2953 DELAY(1000)(*delay_func)(1000);
2954 }
2955
2956 ATW_WRITE(sc, ATW_STSR, stsr & ackmask)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x28)), ((stsr
& ackmask))))
;
2957
2958 if ((stsr & ackmask) == ackmask)
2959 goto out;
2960
2961 test0 = ATW_READ(sc, ATW_TEST0)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x4C))));
2962
2963 if ((bits & ATW_NAR_ST(1<<13)) != 0 && (stsr & ATW_INTR_TPS(1<<1)) == 0 &&
2964 (test0 & ATW_TEST0_TS_MASK0x1c000000) != ATW_TEST0_TS_STOPPED((0) << ((((u_long)((((((0x1c000000)) - 1) & ((0x1c000000
))) ^ ((0x1c000000)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0x1c000000) >> 16)) - 1) & (((0x1c000000) >>
16))) ^ (((0x1c000000) >> 16)))) >> (8)) != 0) ?
8 + ((((u_long)((((((((0x1c000000) >> 16) >> 8))
- 1) & ((((0x1c000000) >> 16) >> 8))) ^ ((((
0x1c000000) >> 16) >> 8)))) >> (4)) != 0) ?
4 + ((((u_long)(((((((((0x1c000000) >> 16) >> 8)
>> 4)) - 1) & (((((0x1c000000) >> 16) >>
8) >> 4))) ^ (((((0x1c000000) >> 16) >> 8)
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0x1c000000) >> 16) >> 8) >> 4) >> 2
)) - 1) & ((((((0x1c000000) >> 16) >> 8) >>
4) >> 2))) ^ ((((((0x1c000000) >> 16) >> 8
) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0x1c000000) >> 16) >> 8) >>
4))) - 1) & ((((((0x1c000000) >> 16) >> 8) >>
4)))) ^ ((((((0x1c000000) >> 16) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1c000000
) >> 16) >> 8))) - 1) & (((((0x1c000000) >>
16) >> 8)))) ^ (((((0x1c000000) >> 16) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1c000000
) >> 16) >> 8)) >> 2)) - 1) & ((((((0x1c000000
) >> 16) >> 8)) >> 2))) ^ ((((((0x1c000000)
>> 16) >> 8)) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0x1c000000) >> 16) >>
8)))) - 1) & ((((((0x1c000000) >> 16) >> 8))
))) ^ ((((((0x1c000000) >> 16) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0x1c000000) >>
16))) - 1) & ((((0x1c000000) >> 16)))) ^ ((((0x1c000000
) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)(((((
((((0x1c000000) >> 16)) >> 4)) - 1) & (((((0x1c000000
) >> 16)) >> 4))) ^ (((((0x1c000000) >> 16)
) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((((
(((0x1c000000) >> 16)) >> 4) >> 2)) - 1) &
((((((0x1c000000) >> 16)) >> 4) >> 2))) ^ (
(((((0x1c000000) >> 16)) >> 4) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c000000) >>
16)) >> 4))) - 1) & ((((((0x1c000000) >> 16)
) >> 4)))) ^ ((((((0x1c000000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x1c000000
) >> 16)))) - 1) & (((((0x1c000000) >> 16))))
) ^ (((((0x1c000000) >> 16)))))) >> (2)) != 0) ? 2
+ ((((u_long)((((((((((0x1c000000) >> 16))) >> 2
)) - 1) & ((((((0x1c000000) >> 16))) >> 2))) ^
((((((0x1c000000) >> 16))) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c000000) >> 16
))))) - 1) & ((((((0x1c000000) >> 16)))))) ^ ((((((
0x1c000000) >> 16))))))) >> (1)) != 0) ? 1 : 0)))
) : ((((u_long)(((((((0x1c000000))) - 1) & (((0x1c000000)
))) ^ (((0x1c000000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x1c000000)) >> 8)) - 1) & ((((0x1c000000)
) >> 8))) ^ ((((0x1c000000)) >> 8)))) >> (4
)) != 0) ? 4 + ((((u_long)(((((((((0x1c000000)) >> 8) >>
4)) - 1) & (((((0x1c000000)) >> 8) >> 4))) ^
(((((0x1c000000)) >> 8) >> 4)))) >> (2)) !=
0) ? 2 + ((((u_long)((((((((((0x1c000000)) >> 8) >>
4) >> 2)) - 1) & ((((((0x1c000000)) >> 8) >>
4) >> 2))) ^ ((((((0x1c000000)) >> 8) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0x1c000000)) >> 8) >> 4))) - 1) & (((
(((0x1c000000)) >> 8) >> 4)))) ^ ((((((0x1c000000
)) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0x1c000000)) >> 8))) - 1) & ((
(((0x1c000000)) >> 8)))) ^ (((((0x1c000000)) >> 8
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1c000000
)) >> 8)) >> 2)) - 1) & ((((((0x1c000000)) >>
8)) >> 2))) ^ ((((((0x1c000000)) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c000000
)) >> 8)))) - 1) & ((((((0x1c000000)) >> 8)))
)) ^ ((((((0x1c000000)) >> 8)))))) >> (1)) != 0) ?
1 : 0))) : ((((u_long)((((((((0x1c000000)))) - 1) & ((((
0x1c000000))))) ^ ((((0x1c000000)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x1c000000))) >> 4)) - 1) & (
((((0x1c000000))) >> 4))) ^ (((((0x1c000000))) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x1c000000
))) >> 4) >> 2)) - 1) & ((((((0x1c000000))) >>
4) >> 2))) ^ ((((((0x1c000000))) >> 4) >> 2
)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x1c000000
))) >> 4))) - 1) & ((((((0x1c000000))) >> 4))
)) ^ ((((((0x1c000000))) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0x1c000000))))) - 1) & (((
((0x1c000000)))))) ^ (((((0x1c000000))))))) >> (2)) != 0
) ? 2 + ((((u_long)((((((((((0x1c000000)))) >> 2)) - 1)
& ((((((0x1c000000)))) >> 2))) ^ ((((((0x1c000000)
))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0x1c000000)))))) - 1) & ((((((0x1c000000)))))))
^ ((((((0x1c000000)))))))) >> (1)) != 0) ? 1 : 0))))))
) {
2965 DPRINTF2(sc, ("%s: transmit process not idle [%s]\n",
2966 sc->sc_dev.dv_xname,
2967 atw_tx_state[MASK_AND_RSHIFT(test0, ATW_TEST0_TS_MASK)]));
2968 DPRINTF2(sc, ("%s: bits %08x test0 %08x stsr %08x\n",
2969 sc->sc_dev.dv_xname, bits, test0, stsr));
2970 }
2971
2972 if ((bits & ATW_NAR_SR(1<<1)) != 0 && (stsr & ATW_INTR_RPS(1<<8)) == 0 &&
2973 (test0 & ATW_TEST0_RS_MASK0x3800000) != ATW_TEST0_RS_STOPPED((0) << ((((u_long)((((((0x3800000)) - 1) & ((0x3800000
))) ^ ((0x3800000)))) >> (16)) != 0) ? 16 + ((((u_long)
(((((((0x3800000) >> 16)) - 1) & (((0x3800000) >>
16))) ^ (((0x3800000) >> 16)))) >> (8)) != 0) ? 8
+ ((((u_long)((((((((0x3800000) >> 16) >> 8)) - 1
) & ((((0x3800000) >> 16) >> 8))) ^ ((((0x3800000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0x3800000) >> 16) >> 8) >> 4)) - 1
) & (((((0x3800000) >> 16) >> 8) >> 4))
) ^ (((((0x3800000) >> 16) >> 8) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3800000) >> 16
) >> 8) >> 4) >> 2)) - 1) & ((((((0x3800000
) >> 16) >> 8) >> 4) >> 2))) ^ ((((((
0x3800000) >> 16) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3800000
) >> 16) >> 8) >> 4))) - 1) & ((((((0x3800000
) >> 16) >> 8) >> 4)))) ^ ((((((0x3800000) >>
16) >> 8) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0x3800000) >> 16) >> 8)))
- 1) & (((((0x3800000) >> 16) >> 8)))) ^ (((
((0x3800000) >> 16) >> 8))))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0x3800000) >> 16) >> 8
)) >> 2)) - 1) & ((((((0x3800000) >> 16) >>
8)) >> 2))) ^ ((((((0x3800000) >> 16) >> 8
)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)(
(((((((((0x3800000) >> 16) >> 8)))) - 1) & ((
((((0x3800000) >> 16) >> 8))))) ^ ((((((0x3800000
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0x3800000) >> 16))) - 1) & (
(((0x3800000) >> 16)))) ^ ((((0x3800000) >> 16)))
)) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3800000) >>
16)) >> 4)) - 1) & (((((0x3800000) >> 16)) >>
4))) ^ (((((0x3800000) >> 16)) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0x3800000) >> 16
)) >> 4) >> 2)) - 1) & ((((((0x3800000) >>
16)) >> 4) >> 2))) ^ ((((((0x3800000) >> 16
)) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0x3800000) >> 16)) >> 4))) - 1
) & ((((((0x3800000) >> 16)) >> 4)))) ^ (((((
(0x3800000) >> 16)) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0x3800000) >> 16)))) -
1) & (((((0x3800000) >> 16))))) ^ (((((0x3800000) >>
16)))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0x3800000
) >> 16))) >> 2)) - 1) & ((((((0x3800000) >>
16))) >> 2))) ^ ((((((0x3800000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3800000
) >> 16))))) - 1) & ((((((0x3800000) >> 16)))
))) ^ ((((((0x3800000) >> 16))))))) >> (1)) != 0)
? 1 : 0)))) : ((((u_long)(((((((0x3800000))) - 1) & (((0x3800000
)))) ^ (((0x3800000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0x3800000)) >> 8)) - 1) & ((((0x3800000)) >>
8))) ^ ((((0x3800000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0x3800000)) >> 8) >> 4)) -
1) & (((((0x3800000)) >> 8) >> 4))) ^ (((((0x3800000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0x3800000)) >> 8) >> 4) >> 2)) -
1) & ((((((0x3800000)) >> 8) >> 4) >> 2
))) ^ ((((((0x3800000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3800000
)) >> 8) >> 4))) - 1) & ((((((0x3800000)) >>
8) >> 4)))) ^ ((((((0x3800000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0x3800000
)) >> 8))) - 1) & (((((0x3800000)) >> 8)))) ^
(((((0x3800000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x3800000)) >> 8)) >> 2)) - 1
) & ((((((0x3800000)) >> 8)) >> 2))) ^ ((((((
0x3800000)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x3800000)) >> 8)))) - 1
) & ((((((0x3800000)) >> 8))))) ^ ((((((0x3800000))
>> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0x3800000)))) - 1) & ((((0x3800000))))) ^ ((((0x3800000
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0x3800000
))) >> 4)) - 1) & (((((0x3800000))) >> 4))) ^
(((((0x3800000))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0x3800000))) >> 4) >> 2)) - 1
) & ((((((0x3800000))) >> 4) >> 2))) ^ ((((((
0x3800000))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0x3800000))) >> 4))) - 1
) & ((((((0x3800000))) >> 4)))) ^ ((((((0x3800000))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0x3800000))))) - 1) & (((((0x3800000)))))) ^ (((
((0x3800000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0x3800000)))) >> 2)) - 1) & ((((((0x3800000)))
) >> 2))) ^ ((((((0x3800000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0x3800000)))))) -
1) & ((((((0x3800000))))))) ^ ((((((0x3800000)))))))) >>
(1)) != 0) ? 1 : 0))))))
) {
2974 DPRINTF2(sc, ("%s: receive process not idle [%s]\n",
2975 sc->sc_dev.dv_xname,
2976 atw_rx_state[MASK_AND_RSHIFT(test0, ATW_TEST0_RS_MASK)]));
2977 DPRINTF2(sc, ("%s: bits %08x test0 %08x stsr %08x\n",
2978 sc->sc_dev.dv_xname, bits, test0, stsr));
2979 }
2980out:
2981 if ((bits & ATW_NAR_ST(1<<13)) != 0)
2982 atw_txdrain(sc);
2983 splx(s)spllower(s);
2984 return;
2985}
2986
2987/*
2988 * atw_linkintr:
2989 *
2990 * Helper; handle link-status interrupts.
2991 */
2992void
2993atw_linkintr(struct atw_softc *sc, u_int32_t linkstatus)
2994{
2995 struct ieee80211com *ic = &sc->sc_ic;
2996
2997 if (ic->ic_state != IEEE80211_S_RUN)
2998 return;
2999
3000 if (linkstatus & ATW_INTR_LINKON(1<<24)) {
3001 DPRINTF(sc, ("%s: link on\n", sc->sc_dev.dv_xname));
3002 sc->sc_rescan_timer = 0;
3003 } else if (linkstatus & ATW_INTR_LINKOFF(1<<28)) {
3004 DPRINTF(sc, ("%s: link off\n", sc->sc_dev.dv_xname));
3005 if (ic->ic_opmode != IEEE80211_M_STA)
3006 return;
3007 sc->sc_rescan_timer = 3;
3008 ic->ic_ific_ac.ac_if.if_timer = 1;
3009 }
3010}
3011
3012#if 0
3013static __inline int
3014atw_hw_decrypted(struct atw_softc *sc, struct ieee80211_frame *wh)
3015{
3016 if ((sc->sc_ic.ic_flags & IEEE80211_F_WEPON0x00000100) == 0)
3017 return 0;
3018 if ((wh->i_fc[1] & IEEE80211_FC1_WEP0x40) == 0)
3019 return 0;
3020 return (sc->sc_wepctl & ATW_WEPCTL_WEPRXBYP(1<<25)) == 0;
3021}
3022#endif
3023
3024/*
3025 * atw_rxintr:
3026 *
3027 * Helper; handle receive interrupts.
3028 */
3029void
3030atw_rxintr(struct atw_softc *sc)
3031{
3032 struct mbuf_list ml = MBUF_LIST_INITIALIZER(){ ((void *)0), ((void *)0), 0 };
3033 static int rate_tbl[] = {2, 4, 11, 22, 44};
3034 struct ieee80211com *ic = &sc->sc_ic;
3035 struct ieee80211_rxinfo rxi;
3036 struct ieee80211_node *ni;
3037 struct ieee80211_frame *wh;
3038 struct ifnet *ifp = &ic->ic_ific_ac.ac_if;
3039 struct atw_rxsoft *rxs;
3040 struct mbuf *m;
3041 u_int32_t rxstat;
3042 int i, len, rate, rate0;
3043 u_int32_t rssi, rssi0;
3044
3045 for (i = sc->sc_rxptr;; i = ATW_NEXTRX(i)((i + 1) & (64 - 1))) {
3046 rxs = &sc->sc_rxsoft[i];
3047
3048 ATW_CDRXSYNC(sc, i, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE)(*((sc)->sc_dmat)->_dmamap_sync)(((sc)->sc_dmat), ((
sc)->sc_cddmamap), (__builtin_offsetof(struct atw_control_data
, acd_rxdescs[((i))])), (sizeof(struct atw_rxdesc)), ((0x02|0x08
)))
;
3049
3050 rxstat = letoh32(sc->sc_rxdescs[i].ar_stat)((__uint32_t)(sc->sc_control_data->acd_rxdescs[i].ar_stat
))
;
3051 rssi0 = letoh32(sc->sc_rxdescs[i].ar_rssi)((__uint32_t)(sc->sc_control_data->acd_rxdescs[i].ar_ctl
))
;
3052 rate0 = MASK_AND_RSHIFT(rxstat, ATW_RXSTAT_RXDR_MASK)(((rxstat) & (0xf000)) >> ((((u_long)((((((0xf000))
- 1) & ((0xf000))) ^ ((0xf000)))) >> (16)) != 0) ?
16 + ((((u_long)(((((((0xf000) >> 16)) - 1) & (((0xf000
) >> 16))) ^ (((0xf000) >> 16)))) >> (8)) !=
0) ? 8 + ((((u_long)((((((((0xf000) >> 16) >> 8)
) - 1) & ((((0xf000) >> 16) >> 8))) ^ ((((0xf000
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xf000) >> 16) >> 8) >> 4)) - 1) &
(((((0xf000) >> 16) >> 8) >> 4))) ^ (((((0xf000
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xf000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xf000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xf000) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xf000) >> 16) >> 8) >>
4))) - 1) & ((((((0xf000) >> 16) >> 8) >>
4)))) ^ ((((((0xf000) >> 16) >> 8) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf000
) >> 16) >> 8))) - 1) & (((((0xf000) >>
16) >> 8)))) ^ (((((0xf000) >> 16) >> 8)))
)) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf000) >>
16) >> 8)) >> 2)) - 1) & ((((((0xf000) >>
16) >> 8)) >> 2))) ^ ((((((0xf000) >> 16) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xf000) >> 16) >> 8)))) - 1) & (((
(((0xf000) >> 16) >> 8))))) ^ ((((((0xf000) >>
16) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xf000) >> 16))) - 1) & ((((0xf000) >>
16)))) ^ ((((0xf000) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xf000) >> 16)) >> 4)) - 1
) & (((((0xf000) >> 16)) >> 4))) ^ (((((0xf000
) >> 16)) >> 4)))) >> (2)) != 0) ? 2 + ((((
u_long)((((((((((0xf000) >> 16)) >> 4) >> 2
)) - 1) & ((((((0xf000) >> 16)) >> 4) >>
2))) ^ ((((((0xf000) >> 16)) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)
>> 16)) >> 4))) - 1) & ((((((0xf000) >>
16)) >> 4)))) ^ ((((((0xf000) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xf000
) >> 16)))) - 1) & (((((0xf000) >> 16))))) ^ (
((((0xf000) >> 16)))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf000) >> 16))) >> 2)) - 1) & (((
(((0xf000) >> 16))) >> 2))) ^ ((((((0xf000) >>
16))) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xf000) >> 16))))) - 1) & ((((((0xf000) >>
16)))))) ^ ((((((0xf000) >> 16))))))) >> (1)) !=
0) ? 1 : 0)))) : ((((u_long)(((((((0xf000))) - 1) & (((0xf000
)))) ^ (((0xf000))))) >> (8)) != 0) ? 8 + ((((u_long)((
((((((0xf000)) >> 8)) - 1) & ((((0xf000)) >> 8
))) ^ ((((0xf000)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xf000)) >> 8) >> 4)) - 1) &
(((((0xf000)) >> 8) >> 4))) ^ (((((0xf000)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xf000)) >> 8) >> 4) >> 2)) - 1) &
((((((0xf000)) >> 8) >> 4) >> 2))) ^ (((((
(0xf000)) >> 8) >> 4) >> 2)))) >> (1)
) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)) >> 8) >>
4))) - 1) & ((((((0xf000)) >> 8) >> 4)))) ^ (
(((((0xf000)) >> 8) >> 4))))) >> (1)) != 0)
? 1 : 0)) : ((((u_long)(((((((((0xf000)) >> 8))) - 1) &
(((((0xf000)) >> 8)))) ^ (((((0xf000)) >> 8)))))
>> (2)) != 0) ? 2 + ((((u_long)((((((((((0xf000)) >>
8)) >> 2)) - 1) & ((((((0xf000)) >> 8)) >>
2))) ^ ((((((0xf000)) >> 8)) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)) >> 8
)))) - 1) & ((((((0xf000)) >> 8))))) ^ ((((((0xf000
)) >> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xf000)))) - 1) & ((((0xf000))))) ^ ((((0xf000))
)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xf000))) >>
4)) - 1) & (((((0xf000))) >> 4))) ^ (((((0xf000)))
>> 4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((
((0xf000))) >> 4) >> 2)) - 1) & ((((((0xf000)
)) >> 4) >> 2))) ^ ((((((0xf000))) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000
))) >> 4))) - 1) & ((((((0xf000))) >> 4)))) ^
((((((0xf000))) >> 4))))) >> (1)) != 0) ? 1 : 0)
) : ((((u_long)(((((((((0xf000))))) - 1) & (((((0xf000)))
))) ^ (((((0xf000))))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xf000)))) >> 2)) - 1) & ((((((0xf000)))
) >> 2))) ^ ((((((0xf000)))) >> 2)))) >> (1
)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xf000)))))) - 1) &
((((((0xf000))))))) ^ ((((((0xf000)))))))) >> (1)) != 0
) ? 1 : 0))))))
;
3053
3054 if (rxstat & ATW_RXSTAT_OWN(1<<31))
3055 break; /* We have processed all receive buffers. */
3056
3057 DPRINTF3(sc,
3058 ("%s: rx stat %08x rssi0 %08x buf1 %08x buf2 %08x\n",
3059 sc->sc_dev.dv_xname,
3060 rxstat, rssi0,
3061 letoh32(sc->sc_rxdescs[i].ar_buf1),
3062 letoh32(sc->sc_rxdescs[i].ar_buf2)));
3063
3064 /*
3065 * Make sure the packet fits in one buffer. This should
3066 * always be the case.
3067 */
3068 if ((rxstat & (ATW_RXSTAT_FS(1<<27)|ATW_RXSTAT_LS(1<<26))) !=
3069 (ATW_RXSTAT_FS(1<<27)|ATW_RXSTAT_LS(1<<26))) {
3070 printf("%s: incoming packet spilled, resetting\n",
3071 sc->sc_dev.dv_xname);
3072 (void)atw_init(ifp);
3073 return;
3074 }
3075
3076 /*
3077 * If an error occurred, update stats, clear the status
3078 * word, and leave the packet buffer in place. It will
3079 * simply be reused the next time the ring comes around.
3080 * If 802.1Q VLAN MTU is enabled, ignore the Frame Too Long
3081 * error.
3082 */
3083
3084 if ((rxstat & ATW_RXSTAT_ES(1<<30)) != 0 &&
3085 ((sc->sc_ic.ic_ific_ac.ac_if.if_capabilitiesif_data.ifi_capabilities & IFCAP_VLAN_MTU0x00000010) == 0 ||
3086 (rxstat & (ATW_RXSTAT_DE(1<<28) | ATW_RXSTAT_SFDE(1<<24) |
3087 ATW_RXSTAT_SIGE(1<<23) | ATW_RXSTAT_CRC16E(1<<22) |
3088 ATW_RXSTAT_RXTOE(1<<21) | ATW_RXSTAT_CRC32E(1<<20) |
3089 ATW_RXSTAT_ICVE(1<<19))) != 0)) {
3090#define PRINTERR(bit, str) \
3091 if (rxstat & (bit)) \
3092 printf("%s: receive error: %s\n", \
3093 sc->sc_dev.dv_xname, str)
3094 ifp->if_ierrorsif_data.ifi_ierrors++;
3095 PRINTERR(ATW_RXSTAT_DE(1<<28), "descriptor error");
3096 PRINTERR(ATW_RXSTAT_SFDE(1<<24), "PLCP SFD error");
3097 PRINTERR(ATW_RXSTAT_SIGE(1<<23), "PLCP signal error");
3098 PRINTERR(ATW_RXSTAT_CRC16E(1<<22), "PLCP CRC16 error");
3099 PRINTERR(ATW_RXSTAT_RXTOE(1<<21), "time-out");
3100 PRINTERR(ATW_RXSTAT_CRC32E(1<<20), "FCS error");
3101 PRINTERR(ATW_RXSTAT_ICVE(1<<19), "WEP ICV error");
3102#undef PRINTERR
3103 ATW_INIT_RXDESC(sc, i)do { struct atw_rxsoft *__rxs = &sc->sc_rxsoft[(i)]; struct
atw_rxdesc *__rxd = &sc->sc_control_data->acd_rxdescs
[(i)]; struct mbuf *__m = __rxs->rxs_mbuf; __rxd->ar_buf1
= ((__uint32_t)(__rxs->rxs_dmamap->dm_segs[0].ds_addr)
); __rxd->ar_buf2 = ((__uint32_t)((((sc))->sc_cddmamap->
dm_segs[0].ds_addr + __builtin_offsetof(struct atw_control_data
, acd_rxdescs[(((((i) + 1) & (64 - 1))))])))); __rxd->
ar_ctl = ((__uint32_t)(((((__m->M_dat.MH.MH_dat.MH_ext.ext_size
- 1) & ~0x3U)) << ((((u_long)((((((0xfff)) - 1) &
((0xfff))) ^ ((0xfff)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xfff) >> 16)) - 1) & (((0xfff) >> 16
))) ^ (((0xfff) >> 16)))) >> (8)) != 0) ? 8 + (((
(u_long)((((((((0xfff) >> 16) >> 8)) - 1) & (
(((0xfff) >> 16) >> 8))) ^ ((((0xfff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xfff) >> 16) >> 8) >> 4)) - 1) & (((
((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff)
>> 16) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | 0 | ((i) == (64 - 1) ? (1<<
25) : 0))); __rxd->ar_stat = ((__uint32_t)((1<<31)))
; (*(((sc))->sc_dmat)->_dmamap_sync)((((sc))->sc_dmat
), (((sc))->sc_cddmamap), (__builtin_offsetof(struct atw_control_data
, acd_rxdescs[(((i)))])), (sizeof(struct atw_rxdesc)), ((0x01
|0x04))); } while (0)
;
3104 continue;
3105 }
3106
3107 bus_dmamap_sync(sc->sc_dmat, rxs->rxs_dmamap, 0,(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (rxs->
rxs_dmamap), (0), (rxs->rxs_dmamap->dm_mapsize), (0x02)
)
3108 rxs->rxs_dmamap->dm_mapsize, BUS_DMASYNC_POSTREAD)(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (rxs->
rxs_dmamap), (0), (rxs->rxs_dmamap->dm_mapsize), (0x02)
)
;
3109
3110 /*
3111 * No errors; receive the packet. Note the ADM8211
3112 * includes the CRC in promiscuous mode.
3113 */
3114 len = MASK_AND_RSHIFT(rxstat, ATW_RXSTAT_FL_MASK)(((rxstat) & (0xfff)) >> ((((u_long)((((((0xfff)) -
1) & ((0xfff))) ^ ((0xfff)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0xfff) >> 16)) - 1) & (((0xfff) >>
16))) ^ (((0xfff) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xfff) >> 16) >> 8)) - 1) &
((((0xfff) >> 16) >> 8))) ^ ((((0xfff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xfff) >> 16) >> 8) >> 4)) - 1) & (((
((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff)
>> 16) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
3115
3116 /*
3117 * Allocate a new mbuf cluster. If that fails, we are
3118 * out of memory, and must drop the packet and recycle
3119 * the buffer that's already attached to this descriptor.
3120 */
3121 m = rxs->rxs_mbuf;
3122 if (atw_add_rxbuf(sc, i) != 0) {
3123 ifp->if_ierrorsif_data.ifi_ierrors++;
3124 ATW_INIT_RXDESC(sc, i)do { struct atw_rxsoft *__rxs = &sc->sc_rxsoft[(i)]; struct
atw_rxdesc *__rxd = &sc->sc_control_data->acd_rxdescs
[(i)]; struct mbuf *__m = __rxs->rxs_mbuf; __rxd->ar_buf1
= ((__uint32_t)(__rxs->rxs_dmamap->dm_segs[0].ds_addr)
); __rxd->ar_buf2 = ((__uint32_t)((((sc))->sc_cddmamap->
dm_segs[0].ds_addr + __builtin_offsetof(struct atw_control_data
, acd_rxdescs[(((((i) + 1) & (64 - 1))))])))); __rxd->
ar_ctl = ((__uint32_t)(((((__m->M_dat.MH.MH_dat.MH_ext.ext_size
- 1) & ~0x3U)) << ((((u_long)((((((0xfff)) - 1) &
((0xfff))) ^ ((0xfff)))) >> (16)) != 0) ? 16 + ((((u_long
)(((((((0xfff) >> 16)) - 1) & (((0xfff) >> 16
))) ^ (((0xfff) >> 16)))) >> (8)) != 0) ? 8 + (((
(u_long)((((((((0xfff) >> 16) >> 8)) - 1) & (
(((0xfff) >> 16) >> 8))) ^ ((((0xfff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xfff) >> 16) >> 8) >> 4)) - 1) & (((
((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff)
>> 16) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0)))))) | 0 | ((i) == (64 - 1) ? (1<<
25) : 0))); __rxd->ar_stat = ((__uint32_t)((1<<31)))
; (*(((sc))->sc_dmat)->_dmamap_sync)((((sc))->sc_dmat
), (((sc))->sc_cddmamap), (__builtin_offsetof(struct atw_control_data
, acd_rxdescs[(((i)))])), (sizeof(struct atw_rxdesc)), ((0x01
|0x04))); } while (0)
;
3125 bus_dmamap_sync(sc->sc_dmat, rxs->rxs_dmamap, 0,(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (rxs->
rxs_dmamap), (0), (rxs->rxs_dmamap->dm_mapsize), (0x01)
)
3126 rxs->rxs_dmamap->dm_mapsize, BUS_DMASYNC_PREREAD)(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (rxs->
rxs_dmamap), (0), (rxs->rxs_dmamap->dm_mapsize), (0x01)
)
;
3127 continue;
3128 }
3129
3130 if (sc->sc_opmode & ATW_NAR_PR(1<<6))
3131 len -= IEEE80211_CRC_LEN4;
3132 m->m_pkthdrM_dat.MH.MH_pkthdr.len = m->m_lenm_hdr.mh_len = MIN(m->m_ext.ext_size, len)(((m->M_dat.MH.MH_dat.MH_ext.ext_size)<(len))?(m->M_dat
.MH.MH_dat.MH_ext.ext_size):(len))
;
3133
3134 if (rate0 >= sizeof(rate_tbl) / sizeof(rate_tbl[0]))
3135 rate = 0;
3136 else
3137 rate = rate_tbl[rate0];
3138
3139 /* The RSSI comes straight from a register in the
3140 * baseband processor. I know that for the RF3000,
3141 * the RSSI register also contains the antenna-selection
3142 * bits. Mask those off.
3143 *
3144 * TBD Treat other basebands.
3145 */
3146 if (sc->sc_bbptype == ATW_BBPTYPE_RFMD)
3147 rssi = rssi0 & RF3000_RSSI_MASK0x3f;
3148 else
3149 rssi = rssi0;
3150
3151#if NBPFILTER1 > 0
3152 /* Pass this up to any BPF listeners. */
3153 if (sc->sc_radiobpf != NULL((void *)0)) {
3154 struct mbuf mb;
3155
3156 struct atw_rx_radiotap_header *tap = &sc->sc_rxtapsc_rxtapu.tap;
3157
3158 tap->ar_rate = rate;
3159 tap->ar_chan_freq = ic->ic_bss->ni_chan->ic_freq;
3160 tap->ar_chan_flags = ic->ic_bss->ni_chan->ic_flags;
3161
3162 /* TBD verify units are dB */
3163 tap->ar_antsignal = (int)rssi;
3164 /* TBD tap->ar_flags */
3165
3166 mb.m_datam_hdr.mh_data = (caddr_t)tap;
3167 mb.m_lenm_hdr.mh_len = tap->ar_ihdr.it_len;
3168 mb.m_nextm_hdr.mh_next = m;
3169 mb.m_nextpktm_hdr.mh_nextpkt = NULL((void *)0);
3170 mb.m_typem_hdr.mh_type = 0;
3171 mb.m_flagsm_hdr.mh_flags = 0;
3172 bpf_mtap(sc->sc_radiobpf, &mb, BPF_DIRECTION_IN(1 << 0));
3173 }
3174#endif /* NBPFILTER > 0 */
3175
3176 wh = mtod(m, struct ieee80211_frame *)((struct ieee80211_frame *)((m)->m_hdr.mh_data));
3177 ni = ieee80211_find_rxnode(ic, wh);
3178 rxi.rxi_flags = 0;
3179#if 0
3180 if (atw_hw_decrypted(sc, wh)) {
3181 wh->i_fc[1] &= ~IEEE80211_FC1_WEP0x40;
3182 rxi.rxi_flags |= IEEE80211_RXI_HWDEC0x00000001;
3183 }
3184#endif
3185 rxi.rxi_rssi = (int)rssi;
3186 rxi.rxi_tstamp = 0;
3187 ieee80211_inputm(ifp, m, ni, &rxi, &ml);
3188 /*
3189 * The frame may have caused the node to be marked for
3190 * reclamation (e.g. in response to a DEAUTH message)
3191 * so use release_node here instead of unref_node.
3192 */
3193 ieee80211_release_node(ic, ni);
3194 }
3195 if_input(ifp, &ml);
3196
3197 /* Update the receive pointer. */
3198 sc->sc_rxptr = i;
3199}
3200
3201/*
3202 * atw_txintr:
3203 *
3204 * Helper; handle transmit interrupts.
3205 */
3206void
3207atw_txintr(struct atw_softc *sc)
3208{
3209#define TXSTAT_ERRMASK (ATW_TXSTAT_TUF(1<<26) | ATW_TXSTAT_TLT(1<<28) | ATW_TXSTAT_TRT(1<<27) | \
3210 ATW_TXSTAT_TRO(1<<25) | ATW_TXSTAT_SOFBR(1<<24))
3211#define TXSTAT_FMT "\20\31ATW_TXSTAT_SOFBR\32ATW_TXSTAT_TRO\33ATW_TXSTAT_TUF" \
3212 "\34ATW_TXSTAT_TRT\35ATW_TXSTAT_TLT"
3213 struct ifnet *ifp = &sc->sc_ic.ic_ific_ac.ac_if;
3214 struct atw_txsoft *txs;
3215 u_int32_t txstat;
3216
3217 DPRINTF3(sc, ("%s: atw_txintr: sc_flags 0x%08x\n",
3218 sc->sc_dev.dv_xname, sc->sc_flags));
3219
3220 ifq_clr_oactive(&ifp->if_snd);
3221
3222 /*
3223 * Go through our Tx list and free mbufs for those
3224 * frames that have been transmitted.
3225 */
3226 while ((txs = SIMPLEQ_FIRST(&sc->sc_txdirtyq)((&sc->sc_txdirtyq)->sqh_first)) != NULL((void *)0)) {
3227 ATW_CDTXSYNC(sc, txs->txs_lastdesc, 1,do { int __x, __n; __x = (txs->txs_lastdesc); __n = (1); if
((__x + __n) > (64 * 16)) { (*((sc)->sc_dmat)->_dmamap_sync
)(((sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * ((64 * 16) - __x)), ((0x02|0x08))); __n -= ((64
* 16) - __x); __x = 0; } (*((sc)->sc_dmat)->_dmamap_sync
)(((sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * __n), ((0x02|0x08))); } while (0)
3228 BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE)do { int __x, __n; __x = (txs->txs_lastdesc); __n = (1); if
((__x + __n) > (64 * 16)) { (*((sc)->sc_dmat)->_dmamap_sync
)(((sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * ((64 * 16) - __x)), ((0x02|0x08))); __n -= ((64
* 16) - __x); __x = 0; } (*((sc)->sc_dmat)->_dmamap_sync
)(((sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * __n), ((0x02|0x08))); } while (0)
;
3229
3230#ifdef ATW_DEBUG
3231 if ((ifp->if_flags & IFF_DEBUG0x4) != 0 && atw_debug > 2) {
3232 int i;
3233 printf(" txsoft %p transmit chain:\n", txs);
3234 ATW_CDTXSYNC(sc, txs->txs_firstdesc,do { int __x, __n; __x = (txs->txs_firstdesc); __n = (txs->
txs_ndescs - 1); if ((__x + __n) > (64 * 16)) { (*((sc)->
sc_dmat)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * ((64 * 16) - __x)), ((0x02
|0x08))); __n -= ((64 * 16) - __x); __x = 0; } (*((sc)->sc_dmat
)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * __n), ((0x02|0x08))); }
while (0)
3235 txs->txs_ndescs - 1,do { int __x, __n; __x = (txs->txs_firstdesc); __n = (txs->
txs_ndescs - 1); if ((__x + __n) > (64 * 16)) { (*((sc)->
sc_dmat)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * ((64 * 16) - __x)), ((0x02
|0x08))); __n -= ((64 * 16) - __x); __x = 0; } (*((sc)->sc_dmat
)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * __n), ((0x02|0x08))); }
while (0)
3236 BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE)do { int __x, __n; __x = (txs->txs_firstdesc); __n = (txs->
txs_ndescs - 1); if ((__x + __n) > (64 * 16)) { (*((sc)->
sc_dmat)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * ((64 * 16) - __x)), ((0x02
|0x08))); __n -= ((64 * 16) - __x); __x = 0; } (*((sc)->sc_dmat
)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * __n), ((0x02|0x08))); }
while (0)
;
3237 for (i = txs->txs_firstdesc;; i = ATW_NEXTTX(i)((i + 1) & ((64 * 16) - 1))) {
3238 printf(" descriptor %d:\n", i);
3239 printf(" at_status: 0x%08x\n",
3240 letoh32(sc->sc_txdescs[i].at_stat)((__uint32_t)(sc->sc_control_data->acd_txdescs[i].at_ctl
))
);
3241 printf(" at_flags: 0x%08x\n",
3242 letoh32(sc->sc_txdescs[i].at_flags)((__uint32_t)(sc->sc_control_data->acd_txdescs[i].at_flags
))
);
3243 printf(" at_buf1: 0x%08x\n",
3244 letoh32(sc->sc_txdescs[i].at_buf1)((__uint32_t)(sc->sc_control_data->acd_txdescs[i].at_buf1
))
);
3245 printf(" at_buf2: 0x%08x\n",
3246 letoh32(sc->sc_txdescs[i].at_buf2)((__uint32_t)(sc->sc_control_data->acd_txdescs[i].at_buf2
))
);
3247 if (i == txs->txs_lastdesc)
3248 break;
3249 }
3250 }
3251#endif
3252
3253 txstat = letoh32(sc->sc_txdescs[txs->txs_lastdesc].at_stat)((__uint32_t)(sc->sc_control_data->acd_txdescs[txs->
txs_lastdesc].at_ctl))
;
3254 if (txstat & ATW_TXSTAT_OWN(1<<31))
3255 break;
3256
3257 SIMPLEQ_REMOVE_HEAD(&sc->sc_txdirtyq, txs_q)do { if (((&sc->sc_txdirtyq)->sqh_first = (&sc->
sc_txdirtyq)->sqh_first->txs_q.sqe_next) == ((void *)0)
) (&sc->sc_txdirtyq)->sqh_last = &(&sc->
sc_txdirtyq)->sqh_first; } while (0)
;
3258
3259 sc->sc_txfree += txs->txs_ndescs;
3260
3261 bus_dmamap_sync(sc->sc_dmat, txs->txs_dmamap,(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (txs->
txs_dmamap), (0), (txs->txs_dmamap->dm_mapsize), (0x08)
)
3262 0, txs->txs_dmamap->dm_mapsize,(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (txs->
txs_dmamap), (0), (txs->txs_dmamap->dm_mapsize), (0x08)
)
3263 BUS_DMASYNC_POSTWRITE)(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (txs->
txs_dmamap), (0), (txs->txs_dmamap->dm_mapsize), (0x08)
)
;
3264 bus_dmamap_unload(sc->sc_dmat, txs->txs_dmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (txs
->txs_dmamap))
;
3265 m_freem(txs->txs_mbuf);
3266 txs->txs_mbuf = NULL((void *)0);
3267
3268 SIMPLEQ_INSERT_TAIL(&sc->sc_txfreeq, txs, txs_q)do { (txs)->txs_q.sqe_next = ((void *)0); *(&sc->sc_txfreeq
)->sqh_last = (txs); (&sc->sc_txfreeq)->sqh_last
= &(txs)->txs_q.sqe_next; } while (0)
;
3269
3270 if ((ifp->if_flags & IFF_DEBUG0x4) != 0 &&
3271 (txstat & TXSTAT_ERRMASK) != 0) {
3272 printf("%s: txstat %b %d\n", sc->sc_dev.dv_xname,
3273 txstat & TXSTAT_ERRMASK, TXSTAT_FMT,
3274 MASK_AND_RSHIFT(txstat, ATW_TXSTAT_ARC_MASK)(((txstat) & (0xfff)) >> ((((u_long)((((((0xfff)) -
1) & ((0xfff))) ^ ((0xfff)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0xfff) >> 16)) - 1) & (((0xfff) >>
16))) ^ (((0xfff) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xfff) >> 16) >> 8)) - 1) &
((((0xfff) >> 16) >> 8))) ^ ((((0xfff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xfff) >> 16) >> 8) >> 4)) - 1) & (((
((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff)
>> 16) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0))))))
);
3275 }
3276
3277 /*
3278 * Check for errors and collisions.
3279 */
3280 if (txstat & ATW_TXSTAT_TUF(1<<26))
3281 sc->sc_stats.ts_tx_tuf++;
3282 if (txstat & ATW_TXSTAT_TLT(1<<28))
3283 sc->sc_stats.ts_tx_tlt++;
3284 if (txstat & ATW_TXSTAT_TRT(1<<27))
3285 sc->sc_stats.ts_tx_trt++;
3286 if (txstat & ATW_TXSTAT_TRO(1<<25))
3287 sc->sc_stats.ts_tx_tro++;
3288 if (txstat & ATW_TXSTAT_SOFBR(1<<24)) {
3289 sc->sc_stats.ts_tx_sofbr++;
3290 }
3291
3292 if ((txstat & ATW_TXSTAT_ES(1<<29)) == 0)
3293 ifp->if_collisionsif_data.ifi_collisions +=
3294 MASK_AND_RSHIFT(txstat, ATW_TXSTAT_ARC_MASK)(((txstat) & (0xfff)) >> ((((u_long)((((((0xfff)) -
1) & ((0xfff))) ^ ((0xfff)))) >> (16)) != 0) ? 16 +
((((u_long)(((((((0xfff) >> 16)) - 1) & (((0xfff) >>
16))) ^ (((0xfff) >> 16)))) >> (8)) != 0) ? 8 + (
(((u_long)((((((((0xfff) >> 16) >> 8)) - 1) &
((((0xfff) >> 16) >> 8))) ^ ((((0xfff) >> 16
) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((
((0xfff) >> 16) >> 8) >> 4)) - 1) & (((
((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff)
>> 16) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0))))))
;
3295 else
3296 ifp->if_oerrorsif_data.ifi_oerrors++;
3297 }
3298
3299 /*
3300 * If there are no more pending transmissions, cancel the watchdog
3301 * timer.
3302 */
3303 if (txs == NULL((void *)0))
3304 sc->sc_tx_timer = 0;
3305#undef TXSTAT_ERRMASK
3306#undef TXSTAT_FMT
3307}
3308
3309/*
3310 * atw_watchdog: [ifnet interface function]
3311 *
3312 * Watchdog timer handler.
3313 */
3314void
3315atw_watchdog(struct ifnet *ifp)
3316{
3317 struct atw_softc *sc = ifp->if_softc;
3318 struct ieee80211com *ic = &sc->sc_ic;
3319 uint32_t test1, rra, rwa;
3320
3321 ifp->if_timer = 0;
3322 if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000) == 0)
3323 return;
3324
3325 if (sc->sc_rescan_timer) {
3326 if (--sc->sc_rescan_timer == 0)
3327 (void)ieee80211_new_state(ic, IEEE80211_S_SCAN, -1)(((ic)->ic_newstate)((ic), (IEEE80211_S_SCAN), (-1)));
3328 }
3329 if (sc->sc_tx_timer) {
3330 if (--sc->sc_tx_timer == 0 &&
3331 !SIMPLEQ_EMPTY(&sc->sc_txdirtyq)(((&sc->sc_txdirtyq)->sqh_first) == ((void *)0))) {
3332 printf("%s: transmit timeout\n", ifp->if_xname);
3333 ifp->if_oerrorsif_data.ifi_oerrors++;
3334 (void)atw_init(ifp);
3335 atw_start(ifp);
3336 }
3337 }
3338 if (sc->sc_tx_timer != 0 || sc->sc_rescan_timer != 0)
3339 ifp->if_timer = 1;
3340
3341 /*
3342 * ADM8211B seems to stall every so often, check for this.
3343 * These bits are what the Linux driver checks, they don't
3344 * seem to be documented by ADMTek/Infineon?
3345 */
3346 if (sc->sc_rev == ATW_REVISION_BA) {
3347 test1 = ATW_READ(sc, ATW_TEST1)(((sc)->sc_st)->read_4(((sc)->sc_sh), ((0x44))));
3348 rra = (test1 >> 12) & 0x1ff;
3349 rwa = (test1 >> 2) & 0x1ff;
3350
3351 if ((rra != rwa) && !(test1 & 0x2)) {
3352 atw_init(ifp);
3353 atw_start(ifp);
3354 }
3355 }
3356
3357 ieee80211_watchdog(ifp);
3358}
3359
3360/*
3361 * Arguments in:
3362 *
3363 * paylen: payload length (no FCS, no WEP header)
3364 *
3365 * hdrlen: header length
3366 *
3367 * rate: MSDU speed, units 500kb/s
3368 *
3369 * flags: IEEE80211_F_SHPREAMBLE (use short preamble),
3370 * IEEE80211_F_SHSLOT (use short slot length)
3371 *
3372 * Arguments out:
3373 *
3374 * d: 802.11 Duration field for RTS,
3375 * 802.11 Duration field for data frame,
3376 * PLCP Length for data frame,
3377 * residual octets at end of data slot
3378 */
3379int
3380atw_compute_duration1(int len, int use_ack, uint32_t flags, int rate,
3381 struct atw_duration *d)
3382{
3383 int pre, ctsrate;
3384 int ack, bitlen, data_dur, remainder;
3385
3386 /* RTS reserves medium for SIFS | CTS | SIFS | (DATA) | SIFS | ACK
3387 * DATA reserves medium for SIFS | ACK
3388 *
3389 * XXXMYC: no ACK on multicast/broadcast or control packets
3390 */
3391
3392 bitlen = len * 8;
3393
3394 pre = IEEE80211_DUR_DS_SIFS10;
3395 if ((flags & IEEE80211_F_SHPREAMBLE0x00040000) != 0)
3396 pre += IEEE80211_DUR_DS_SHORT_PREAMBLE72 +
3397 IEEE80211_DUR_DS_FAST_PLCPHDR24;
3398 else
3399 pre += IEEE80211_DUR_DS_LONG_PREAMBLE144 +
3400 IEEE80211_DUR_DS_SLOW_PLCPHDR48;
3401
3402 d->d_residue = 0;
3403 data_dur = (bitlen * 2) / rate;
3404 remainder = (bitlen * 2) % rate;
3405 if (remainder != 0) {
3406 d->d_residue = (rate - remainder) / 16;
3407 data_dur++;
3408 }
3409
3410 switch (rate) {
3411 case 2: /* 1 Mb/s */
3412 case 4: /* 2 Mb/s */
3413 /* 1 - 2 Mb/s WLAN: send ACK/CTS at 1 Mb/s */
3414 ctsrate = 2;
3415 break;
3416 case 11: /* 5.5 Mb/s */
3417 case 22: /* 11 Mb/s */
3418 case 44: /* 22 Mb/s */
3419 /* 5.5 - 11 Mb/s WLAN: send ACK/CTS at 2 Mb/s */
3420 ctsrate = 4;
3421 break;
3422 default:
3423 /* TBD */
3424 return -1;
3425 }
3426
3427 d->d_plcp_len = data_dur;
3428
3429 ack = (use_ack) ? pre + (IEEE80211_DUR_DS_SLOW_ACK112 * 2) / ctsrate : 0;
3430
3431 d->d_rts_dur =
3432 pre + (IEEE80211_DUR_DS_SLOW_CTS112 * 2) / ctsrate +
3433 pre + data_dur +
3434 ack;
3435
3436 d->d_data_dur = ack;
3437
3438 return 0;
3439}
3440
3441/*
3442 * Arguments in:
3443 *
3444 * wh: 802.11 header
3445 *
3446 * len: packet length
3447 *
3448 * rate: MSDU speed, units 500kb/s
3449 *
3450 * fraglen: fragment length, set to maximum (or higher) for no
3451 * fragmentation
3452 *
3453 * flags: IEEE80211_F_WEPON (hardware adds WEP),
3454 * IEEE80211_F_SHPREAMBLE (use short preamble),
3455 * IEEE80211_F_SHSLOT (use short slot length)
3456 *
3457 * Arguments out:
3458 *
3459 * d0: 802.11 Duration fields (RTS/Data), PLCP Length, Service fields
3460 * of first/only fragment
3461 *
3462 * dn: 802.11 Duration fields (RTS/Data), PLCP Length, Service fields
3463 * of first/only fragment
3464 */
3465int
3466atw_compute_duration(struct ieee80211_frame *wh, int len, uint32_t flags,
3467 int fraglen, int rate, struct atw_duration *d0, struct atw_duration *dn,
3468 int *npktp, int debug)
3469{
3470 int ack, rc;
3471 int firstlen, hdrlen, lastlen, lastlen0, npkt, overlen, paylen;
3472
3473 if (ieee80211_has_addr4(wh))
3474 hdrlen = sizeof(struct ieee80211_frame_addr4);
3475 else
3476 hdrlen = sizeof(struct ieee80211_frame);
3477
3478 paylen = len - hdrlen;
3479
3480 if ((flags & IEEE80211_F_WEPON0x00000100) != 0)
3481 overlen = IEEE80211_WEP_TOTLEN(3 + 1 + 4) + IEEE80211_CRC_LEN4;
3482 else
3483 overlen = IEEE80211_CRC_LEN4;
3484
3485 npkt = paylen / fraglen;
3486 lastlen0 = paylen % fraglen;
3487
3488 if (npkt == 0) /* no fragments */
3489 lastlen = paylen + overlen;
3490 else if (lastlen0 != 0) { /* a short "tail" fragment */
3491 lastlen = lastlen0 + overlen;
3492 npkt++;
3493 } else /* full-length "tail" fragment */
3494 lastlen = fraglen + overlen;
3495
3496 if (npktp != NULL((void *)0))
3497 *npktp = npkt;
3498
3499 if (npkt > 1)
3500 firstlen = fraglen + overlen;
3501 else
3502 firstlen = paylen + overlen;
3503
3504 if (debug) {
3505 printf("%s: npkt %d firstlen %d lastlen0 %d lastlen %d "
3506 "fraglen %d overlen %d len %d rate %d flags %08x\n",
3507 __func__, npkt, firstlen, lastlen0, lastlen, fraglen,
3508 overlen, len, rate, flags);
3509 }
3510
3511 ack = !IEEE80211_IS_MULTICAST(wh->i_addr1)(*(wh->i_addr1) & 0x01) &&
3512 (wh->i_fc[1] & IEEE80211_FC0_TYPE_MASK0x0c) != IEEE80211_FC0_TYPE_CTL0x04;
3513
3514 rc = atw_compute_duration1(firstlen + hdrlen, ack, flags, rate, d0);
3515 if (rc == -1)
3516 return rc;
3517
3518 if (npkt <= 1) {
3519 *dn = *d0;
3520 return 0;
3521 }
3522 return atw_compute_duration1(lastlen + hdrlen, ack, flags, rate, dn);
3523}
3524
3525#ifdef ATW_DEBUG
3526void
3527atw_dump_pkt(struct ifnet *ifp, struct mbuf *m0)
3528{
3529 struct atw_softc *sc = ifp->if_softc;
3530 struct mbuf *m;
3531 int i, noctets = 0;
3532
3533 printf("%s: %d-byte packet\n", sc->sc_dev.dv_xname,
3534 m0->m_pkthdrM_dat.MH.MH_pkthdr.len);
3535
3536 for (m = m0; m; m = m->m_nextm_hdr.mh_next) {
3537 if (m->m_lenm_hdr.mh_len == 0)
3538 continue;
3539 for (i = 0; i < m->m_lenm_hdr.mh_len; i++) {
3540 printf(" %02x", ((u_int8_t*)m->m_datam_hdr.mh_data)[i]);
3541 if (++noctets % 24 == 0)
3542 printf("\n");
3543 }
3544 }
3545 printf("%s%s: %d bytes emitted\n",
3546 (noctets % 24 != 0) ? "\n" : "", sc->sc_dev.dv_xname, noctets);
3547}
3548#endif /* ATW_DEBUG */
3549
3550/*
3551 * atw_start: [ifnet interface function]
3552 *
3553 * Start packet transmission on the interface.
3554 */
3555void
3556atw_start(struct ifnet *ifp)
3557{
3558 struct atw_softc *sc = ifp->if_softc;
3559 struct ieee80211com *ic = &sc->sc_ic;
3560 struct ieee80211_node *ni;
3561 struct ieee80211_frame *wh;
3562 struct ieee80211_key *k;
3563 struct atw_frame *hh;
3564 struct mbuf *m0, *m;
3565 struct atw_txsoft *txs, *last_txs;
3566 struct atw_txdesc *txd;
3567 int do_encrypt, npkt, rate;
3568 bus_dmamap_t dmamap;
3569 int ctl, error, firsttx, nexttx, lasttx = -1, first, ofree, seg;
3570
3571 DPRINTF2(sc, ("%s: atw_start: sc_flags 0x%08x, if_flags 0x%08x\n",
3572 sc->sc_dev.dv_xname, sc->sc_flags, ifp->if_flags));
3573
3574 if (!(ifp->if_flags & IFF_RUNNING0x40) || ifq_is_oactive(&ifp->if_snd))
3575 return;
3576
3577 /*
3578 * Remember the previous number of free descriptors and
3579 * the first descriptor we'll use.
3580 */
3581 ofree = sc->sc_txfree;
3582 firsttx = sc->sc_txnext;
3583
3584 DPRINTF2(sc, ("%s: atw_start: txfree %d, txnext %d\n",
3585 sc->sc_dev.dv_xname, ofree, firsttx));
3586
3587 /*
3588 * Loop through the send queue, setting up transmit descriptors
3589 * until we drain the queue, or use up all available transmit
3590 * descriptors.
3591 */
3592 while ((txs = SIMPLEQ_FIRST(&sc->sc_txfreeq)((&sc->sc_txfreeq)->sqh_first)) != NULL((void *)0) &&
3593 sc->sc_txfree != 0) {
3594
3595 /*
3596 * Grab a packet off the management queue, if it
3597 * is not empty. Otherwise, from the data queue.
3598 */
3599 m0 = mq_dequeue(&ic->ic_mgtq);
3600 if (m0 != NULL((void *)0)) {
3601 ni = m0->m_pkthdrM_dat.MH.MH_pkthdr.ph_cookie;
3602 } else {
3603 /* send no data packets until we are associated */
3604 if (ic->ic_state != IEEE80211_S_RUN)
3605 break;
3606 m0 = ifq_dequeue(&ifp->if_snd);
3607 if (m0 == NULL((void *)0))
3608 break;
3609#if NBPFILTER1 > 0
3610 if (ifp->if_bpf != NULL((void *)0))
3611 bpf_mtap(ifp->if_bpf, m0, BPF_DIRECTION_OUT(1 << 1));
3612#endif /* NBPFILTER > 0 */
3613 if ((m0 = ieee80211_encap(ifp, m0, &ni)) == NULL((void *)0)) {
3614 ifp->if_oerrorsif_data.ifi_oerrors++;
3615 break;
3616 }
3617
3618 if (ic->ic_flags & IEEE80211_F_WEPON0x00000100) {
3619 wh = mtod(m0, struct ieee80211_frame *)((struct ieee80211_frame *)((m0)->m_hdr.mh_data));
3620 k = ieee80211_get_txkey(ic, wh, ni);
3621 m0 = ieee80211_encrypt(ic, m0, k);
3622 if (m0 == NULL((void *)0)) {
3623 ifp->if_oerrorsif_data.ifi_oerrors++;
3624 break;
3625 }
3626 }
3627 }
3628
3629 wh = mtod(m0, struct ieee80211_frame *)((struct ieee80211_frame *)((m0)->m_hdr.mh_data));
3630
3631 /* XXX do real rate control */
3632 if ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK0x0c) ==
3633 IEEE80211_FC0_TYPE_MGT0x00)
3634 rate = 2;
3635 else
3636 rate = MAX(2, ieee80211_get_rate(ic))(((2)>(ieee80211_get_rate(ic)))?(2):(ieee80211_get_rate(ic
)))
;
3637
3638 if (atw_compute_duration(wh, m0->m_pkthdrM_dat.MH.MH_pkthdr.len,
3639 ic->ic_flags & ~IEEE80211_F_WEPON0x00000100, ic->ic_fragthreshold,
3640 rate, &txs->txs_d0, &txs->txs_dn, &npkt,
3641 (sc->sc_ifsc_ic.ic_ac.ac_if.if_flags & (IFF_DEBUG0x4|IFF_LINK20x4000)) ==
3642 (IFF_DEBUG0x4|IFF_LINK20x4000)) == -1) {
3643 DPRINTF2(sc, ("%s: fail compute duration\n", __func__));
3644 m_freem(m0);
3645 break;
3646 }
3647
3648 /*
3649 * XXX Misleading if fragmentation is enabled. Better
3650 * to fragment in software?
3651 */
3652 *(uint16_t *)wh->i_dur = htole16(txs->txs_d0.d_rts_dur)((__uint16_t)(txs->txs_d0.d_rts_dur));
3653
3654#if NBPFILTER1 > 0
3655 /*
3656 * Pass the packet to any BPF listeners.
3657 */
3658 if (ic->ic_rawbpf != NULL((void *)0))
3659 bpf_mtap(ic->ic_rawbpf, m0, BPF_DIRECTION_OUT(1 << 1));
3660
3661 if (sc->sc_radiobpf != NULL((void *)0)) {
3662 struct mbuf mb;
3663 struct atw_tx_radiotap_header *tap = &sc->sc_txtapsc_txtapu.tap;
3664
3665 tap->at_rate = rate;
3666 tap->at_chan_freq = ic->ic_bss->ni_chan->ic_freq;
3667 tap->at_chan_flags = ic->ic_bss->ni_chan->ic_flags;
3668
3669 /* TBD tap->at_flags */
3670
3671 mb.m_datam_hdr.mh_data = (caddr_t)tap;
3672 mb.m_lenm_hdr.mh_len = tap->at_ihdr.it_len;
3673 mb.m_nextm_hdr.mh_next = m0;
3674 mb.m_nextpktm_hdr.mh_nextpkt = NULL((void *)0);
3675 mb.m_typem_hdr.mh_type = 0;
3676 mb.m_flagsm_hdr.mh_flags = 0;
3677 bpf_mtap(sc->sc_radiobpf, &mb, BPF_DIRECTION_OUT(1 << 1));
3678 }
3679#endif /* NBPFILTER > 0 */
3680
3681 M_PREPEND(m0, offsetof(struct atw_frame, atw_ihdr), M_DONTWAIT)(m0) = m_prepend((m0), (__builtin_offsetof(struct atw_frame, u
.s2.ihdr)), (0x0002))
;
3682
3683 if (ni != NULL((void *)0))
3684 ieee80211_release_node(ic, ni);
3685
3686 if (m0 == NULL((void *)0)) {
3687 ifp->if_oerrorsif_data.ifi_oerrors++;
3688 break;
3689 }
3690
3691 /* just to make sure. */
3692 m0 = m_pullup(m0, sizeof(struct atw_frame));
3693
3694 if (m0 == NULL((void *)0)) {
3695 ifp->if_oerrorsif_data.ifi_oerrors++;
3696 break;
3697 }
3698
3699 hh = mtod(m0, struct atw_frame *)((struct atw_frame *)((m0)->m_hdr.mh_data));
3700 wh = &hh->atw_ihdru.s2.ihdr;
3701
3702 do_encrypt = ((wh->i_fc[1] & IEEE80211_FC1_WEP0x40) != 0) ? 1 : 0;
3703
3704 /* Copy everything we need from the 802.11 header:
3705 * Frame Control; address 1, address 3, or addresses
3706 * 3 and 4. NIC fills in BSSID, SA.
3707 */
3708 if (wh->i_fc[1] & IEEE80211_FC1_DIR_TODS0x01) {
3709 if (wh->i_fc[1] & IEEE80211_FC1_DIR_FROMDS0x02)
3710 panic("%s: illegal WDS frame",
3711 sc->sc_dev.dv_xname);
3712 memcpy(hh->atw_dst, wh->i_addr3, IEEE80211_ADDR_LEN)__builtin_memcpy((hh->atw_dst), (wh->i_addr3), (6));
3713 } else
3714 memcpy(hh->atw_dst, wh->i_addr1, IEEE80211_ADDR_LEN)__builtin_memcpy((hh->atw_dst), (wh->i_addr1), (6));
3715
3716 *(u_int16_t*)hh->atw_fc = *(u_int16_t*)wh->i_fc;
3717
3718 /* initialize remaining Tx parameters */
3719 memset(&hh->u, 0, sizeof(hh->u))__builtin_memset((&hh->u), (0), (sizeof(hh->u)));
3720
3721 hh->atw_rate = rate * 5;
3722 /* XXX this could be incorrect if M_FCS. _encap should
3723 * probably strip FCS just in case it sticks around in
3724 * bridged packets.
3725 */
3726 hh->atw_service = IEEE80211_PLCP_SERVICE0x00; /* XXX guess */
3727 hh->atw_paylen = htole16(m0->m_pkthdr.len -((__uint16_t)(m0->M_dat.MH.MH_pkthdr.len - sizeof(struct atw_frame
)))
3728 sizeof(struct atw_frame))((__uint16_t)(m0->M_dat.MH.MH_pkthdr.len - sizeof(struct atw_frame
)))
;
3729
3730 hh->atw_fragthru.s1.fragthr = htole16(ATW_FRAGTHR_FRAGTHR_MASK)((__uint16_t)(0x0fff));
3731 hh->atw_rtylmtu.s1.rtylmt = 3;
3732 hh->atw_hdrctlu.s1.hdrctl = htole16(ATW_HDRCTL_UNKNOWN1)((__uint16_t)((1<<15)));
3733#if 0
3734 if (do_encrypt) {
3735 hh->atw_hdrctlu.s1.hdrctl |= htole16(ATW_HDRCTL_WEP)((__uint16_t)((1<<5)));
3736 hh->atw_keyidu.s1.keyid = ic->ic_wep_txkeyic_def_txkey;
3737 }
3738#endif
3739
3740 hh->atw_head_plcplen = htole16(txs->txs_d0.d_plcp_len)((__uint16_t)(txs->txs_d0.d_plcp_len));
3741 hh->atw_tail_plcplen = htole16(txs->txs_dn.d_plcp_len)((__uint16_t)(txs->txs_dn.d_plcp_len));
3742 if (txs->txs_d0.d_residue)
3743 hh->atw_head_plcplen |= htole16(0x8000)((__uint16_t)(0x8000));
3744 if (txs->txs_dn.d_residue)
3745 hh->atw_tail_plcplen |= htole16(0x8000)((__uint16_t)(0x8000));
3746 hh->atw_head_dur = htole16(txs->txs_d0.d_rts_dur)((__uint16_t)(txs->txs_d0.d_rts_dur));
3747 hh->atw_tail_dur = htole16(txs->txs_dn.d_rts_dur)((__uint16_t)(txs->txs_dn.d_rts_dur));
3748
3749 /* never fragment multicast frames */
3750 if (IEEE80211_IS_MULTICAST(hh->atw_dst)(*(hh->atw_dst) & 0x01)) {
3751 hh->atw_fragthru.s1.fragthr = htole16(ATW_FRAGTHR_FRAGTHR_MASK)((__uint16_t)(0x0fff));
3752 } else if (sc->sc_flags & ATWF_RTSCTS0x00000100) {
3753 hh->atw_hdrctlu.s1.hdrctl |= htole16(ATW_HDRCTL_RTSCTS)((__uint16_t)((1<<4)));
3754 }
3755
3756#ifdef ATW_DEBUG
3757 hh->atw_fragnumu.s1.fragnum = 0;
3758
3759 if ((ifp->if_flags & IFF_DEBUG0x4) != 0 && atw_debug > 2) {
3760 printf("%s: dst = %s, rate = 0x%02x, "
3761 "service = 0x%02x, paylen = 0x%04x\n",
3762 sc->sc_dev.dv_xname, ether_sprintf(hh->atw_dst),
3763 hh->atw_rate, hh->atw_service, hh->atw_paylen);
3764
3765 printf("%s: fc[0] = 0x%02x, fc[1] = 0x%02x, "
3766 "dur1 = 0x%04x, dur2 = 0x%04x, "
3767 "dur3 = 0x%04x, rts_dur = 0x%04x\n",
3768 sc->sc_dev.dv_xname, hh->atw_fc[0], hh->atw_fc[1],
3769 hh->atw_tail_plcplen, hh->atw_head_plcplen,
3770 hh->atw_tail_dur, hh->atw_head_dur);
3771
3772 printf("%s: hdrctl = 0x%04x, fragthr = 0x%04x, "
3773 "fragnum = 0x%02x, rtylmt = 0x%04x\n",
3774 sc->sc_dev.dv_xname, hh->atw_hdrctlu.s1.hdrctl,
3775 hh->atw_fragthru.s1.fragthr, hh->atw_fragnumu.s1.fragnum, hh->atw_rtylmtu.s1.rtylmt);
3776
3777 printf("%s: keyid = %d\n",
3778 sc->sc_dev.dv_xname, hh->atw_keyidu.s1.keyid);
3779
3780 atw_dump_pkt(ifp, m0);
3781 }
3782#endif /* ATW_DEBUG */
3783
3784 dmamap = txs->txs_dmamap;
3785
3786 /*
3787 * Load the DMA map. Copy and try (once) again if the packet
3788 * didn't fit in the allotted number of segments.
3789 */
3790 for (first = 1;
3791 (error = bus_dmamap_load_mbuf(sc->sc_dmat, dmamap, m0,(*(sc->sc_dmat)->_dmamap_load_mbuf)((sc->sc_dmat), (
dmamap), (m0), (0x0400|0x0001))
3792 BUS_DMA_WRITE|BUS_DMA_NOWAIT)(*(sc->sc_dmat)->_dmamap_load_mbuf)((sc->sc_dmat), (
dmamap), (m0), (0x0400|0x0001))
) != 0 && first;
3793 first = 0) {
3794 MGETHDR(m, M_DONTWAIT, MT_DATA)m = m_gethdr((0x0002), (1));
3795 if (m == NULL((void *)0)) {
3796 printf("%s: unable to allocate Tx mbuf\n",
3797 sc->sc_dev.dv_xname);
3798 break;
3799 }
3800 if (m0->m_pkthdrM_dat.MH.MH_pkthdr.len > MHLEN((256 - sizeof(struct m_hdr)) - sizeof(struct pkthdr))) {
3801 MCLGET(m, M_DONTWAIT)(void) m_clget((m), (0x0002), (1 << 11));
3802 if ((m->m_flagsm_hdr.mh_flags & M_EXT0x0001) == 0) {
3803 printf("%s: unable to allocate Tx "
3804 "cluster\n", sc->sc_dev.dv_xname);
3805 m_freem(m);
3806 break;
3807 }
3808 }
3809 m_copydata(m0, 0, m0->m_pkthdrM_dat.MH.MH_pkthdr.len, mtod(m, caddr_t)((caddr_t)((m)->m_hdr.mh_data)));
3810 m->m_pkthdrM_dat.MH.MH_pkthdr.len = m->m_lenm_hdr.mh_len = m0->m_pkthdrM_dat.MH.MH_pkthdr.len;
3811 m_freem(m0);
3812 m0 = m;
3813 m = NULL((void *)0);
3814 }
3815 if (error != 0) {
3816 printf("%s: unable to load Tx buffer, "
3817 "error = %d\n", sc->sc_dev.dv_xname, error);
3818 m_freem(m0);
3819 break;
3820 }
3821
3822 /*
3823 * Ensure we have enough descriptors free to describe
3824 * the packet.
3825 */
3826 if (dmamap->dm_nsegs > sc->sc_txfree) {
3827 /*
3828 * Not enough free descriptors to transmit
3829 * this packet. Unload the DMA map and
3830 * drop the packet. Notify the upper layer
3831 * that there are no more slots left.
3832 *
3833 * XXX We could allocate an mbuf and copy, but
3834 * XXX it is worth it?
3835 */
3836 ifq_set_oactive(&ifp->if_snd);
3837 bus_dmamap_unload(sc->sc_dmat, dmamap)(*(sc->sc_dmat)->_dmamap_unload)((sc->sc_dmat), (dmamap
))
;
3838 m_freem(m0);
3839 break;
3840 }
3841
3842 /*
3843 * WE ARE NOW COMMITTED TO TRANSMITTING THE PACKET.
3844 */
3845
3846 /* Sync the DMA map. */
3847 bus_dmamap_sync(sc->sc_dmat, dmamap, 0, dmamap->dm_mapsize,(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (dmamap
), (0), (dmamap->dm_mapsize), (0x04))
3848 BUS_DMASYNC_PREWRITE)(*(sc->sc_dmat)->_dmamap_sync)((sc->sc_dmat), (dmamap
), (0), (dmamap->dm_mapsize), (0x04))
;
3849
3850 /* XXX arbitrary retry limit; 8 because I have seen it in
3851 * use already and maybe 0 means "no tries" !
3852 */
3853 ctl = htole32(LSHIFT(8, ATW_TXCTL_TL_MASK))((__uint32_t)(((8) << ((((u_long)((((((0xfffff)) - 1) &
((0xfffff))) ^ ((0xfffff)))) >> (16)) != 0) ? 16 + (((
(u_long)(((((((0xfffff) >> 16)) - 1) & (((0xfffff) >>
16))) ^ (((0xfffff) >> 16)))) >> (8)) != 0) ? 8 +
((((u_long)((((((((0xfffff) >> 16) >> 8)) - 1) &
((((0xfffff) >> 16) >> 8))) ^ ((((0xfffff) >>
16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long)((((
(((((0xfffff) >> 16) >> 8) >> 4)) - 1) &
(((((0xfffff) >> 16) >> 8) >> 4))) ^ (((((
0xfffff) >> 16) >> 8) >> 4)))) >> (2)
) != 0) ? 2 + ((((u_long)((((((((((0xfffff) >> 16) >>
8) >> 4) >> 2)) - 1) & ((((((0xfffff) >>
16) >> 8) >> 4) >> 2))) ^ ((((((0xfffff) >>
16) >> 8) >> 4) >> 2)))) >> (1)) != 0
) ? 1 : 0) : ((((u_long)((((((((((0xfffff) >> 16) >>
8) >> 4))) - 1) & ((((((0xfffff) >> 16) >>
8) >> 4)))) ^ ((((((0xfffff) >> 16) >> 8) >>
4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfffff
) >> 16) >> 8))) - 1) & (((((0xfffff) >>
16) >> 8)))) ^ (((((0xfffff) >> 16) >> 8))
))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfffff) >>
16) >> 8)) >> 2)) - 1) & ((((((0xfffff) >>
16) >> 8)) >> 2))) ^ ((((((0xfffff) >> 16)
>> 8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : (
(((u_long)((((((((((0xfffff) >> 16) >> 8)))) - 1)
& ((((((0xfffff) >> 16) >> 8))))) ^ ((((((0xfffff
) >> 16) >> 8)))))) >> (1)) != 0) ? 1 : 0))
) : ((((u_long)((((((((0xfffff) >> 16))) - 1) & (((
(0xfffff) >> 16)))) ^ ((((0xfffff) >> 16))))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xfffff) >> 16)) >>
4)) - 1) & (((((0xfffff) >> 16)) >> 4))) ^ (
((((0xfffff) >> 16)) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xfffff) >> 16)) >> 4
) >> 2)) - 1) & ((((((0xfffff) >> 16)) >>
4) >> 2))) ^ ((((((0xfffff) >> 16)) >> 4) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfffff
) >> 16)) >> 4))) - 1) & ((((((0xfffff) >>
16)) >> 4)))) ^ ((((((0xfffff) >> 16)) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfffff
) >> 16)))) - 1) & (((((0xfffff) >> 16))))) ^
(((((0xfffff) >> 16)))))) >> (2)) != 0) ? 2 + ((
((u_long)((((((((((0xfffff) >> 16))) >> 2)) - 1) &
((((((0xfffff) >> 16))) >> 2))) ^ ((((((0xfffff)
>> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfffff) >> 16))))) - 1) & ((
((((0xfffff) >> 16)))))) ^ ((((((0xfffff) >> 16))
))))) >> (1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfffff
))) - 1) & (((0xfffff)))) ^ (((0xfffff))))) >> (8))
!= 0) ? 8 + ((((u_long)((((((((0xfffff)) >> 8)) - 1) &
((((0xfffff)) >> 8))) ^ ((((0xfffff)) >> 8)))) >>
(4)) != 0) ? 4 + ((((u_long)(((((((((0xfffff)) >> 8) >>
4)) - 1) & (((((0xfffff)) >> 8) >> 4))) ^ ((
(((0xfffff)) >> 8) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfffff)) >> 8) >> 4) >>
2)) - 1) & ((((((0xfffff)) >> 8) >> 4) >>
2))) ^ ((((((0xfffff)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfffff
)) >> 8) >> 4))) - 1) & ((((((0xfffff)) >>
8) >> 4)))) ^ ((((((0xfffff)) >> 8) >> 4))
))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfffff
)) >> 8))) - 1) & (((((0xfffff)) >> 8)))) ^ (
((((0xfffff)) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xfffff)) >> 8)) >> 2)) - 1) & (((
(((0xfffff)) >> 8)) >> 2))) ^ ((((((0xfffff)) >>
8)) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long
)((((((((((0xfffff)) >> 8)))) - 1) & ((((((0xfffff)
) >> 8))))) ^ ((((((0xfffff)) >> 8)))))) >>
(1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfffff)))) - 1) &
((((0xfffff))))) ^ ((((0xfffff)))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xfffff))) >> 4)) - 1) & (((
((0xfffff))) >> 4))) ^ (((((0xfffff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfffff))) >> 4)
>> 2)) - 1) & ((((((0xfffff))) >> 4) >>
2))) ^ ((((((0xfffff))) >> 4) >> 2)))) >> (
1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfffff))) >>
4))) - 1) & ((((((0xfffff))) >> 4)))) ^ ((((((0xfffff
))) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfffff))))) - 1) & (((((0xfffff)))))) ^ (((((0xfffff
))))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfffff
)))) >> 2)) - 1) & ((((((0xfffff)))) >> 2))) ^
((((((0xfffff)))) >> 2)))) >> (1)) != 0) ? 1 : 0
) : ((((u_long)((((((((((0xfffff)))))) - 1) & ((((((0xfffff
))))))) ^ ((((((0xfffff)))))))) >> (1)) != 0) ? 1 : 0))
))))))
;
3854
3855 DPRINTF2(sc, ("%s: TXDR <- max(10, %d)\n",
3856 sc->sc_dev.dv_xname, rate * 5));
3857 ctl |= htole32(LSHIFT(MAX(10, rate * 5), ATW_TXCTL_TXDR_MASK))((__uint32_t)((((((10)>(rate * 5))?(10):(rate * 5))) <<
((((u_long)((((((0xff00000)) - 1) & ((0xff00000))) ^ ((0xff00000
)))) >> (16)) != 0) ? 16 + ((((u_long)(((((((0xff00000)
>> 16)) - 1) & (((0xff00000) >> 16))) ^ (((0xff00000
) >> 16)))) >> (8)) != 0) ? 8 + ((((u_long)((((((
((0xff00000) >> 16) >> 8)) - 1) & ((((0xff00000
) >> 16) >> 8))) ^ ((((0xff00000) >> 16) >>
8)))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00000
) >> 16) >> 8) >> 4)) - 1) & (((((0xff00000
) >> 16) >> 8) >> 4))) ^ (((((0xff00000) >>
16) >> 8) >> 4)))) >> (2)) != 0) ? 2 + (((
(u_long)((((((((((0xff00000) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xff00000) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xff00000) >> 16)
>> 8) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff00000) >> 16) >>
8) >> 4))) - 1) & ((((((0xff00000) >> 16) >>
8) >> 4)))) ^ ((((((0xff00000) >> 16) >> 8
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff00000) >> 16) >> 8))) - 1) & (((
((0xff00000) >> 16) >> 8)))) ^ (((((0xff00000) >>
16) >> 8))))) >> (2)) != 0) ? 2 + ((((u_long)(((
(((((((0xff00000) >> 16) >> 8)) >> 2)) - 1)
& ((((((0xff00000) >> 16) >> 8)) >> 2)
)) ^ ((((((0xff00000) >> 16) >> 8)) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00000
) >> 16) >> 8)))) - 1) & ((((((0xff00000) >>
16) >> 8))))) ^ ((((((0xff00000) >> 16) >>
8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((
0xff00000) >> 16))) - 1) & ((((0xff00000) >> 16
)))) ^ ((((0xff00000) >> 16))))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00000) >> 16)) >> 4)) -
1) & (((((0xff00000) >> 16)) >> 4))) ^ (((((
0xff00000) >> 16)) >> 4)))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xff00000) >> 16)) >> 4
) >> 2)) - 1) & ((((((0xff00000) >> 16)) >>
4) >> 2))) ^ ((((((0xff00000) >> 16)) >> 4
) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((
((((((((0xff00000) >> 16)) >> 4))) - 1) & (((
(((0xff00000) >> 16)) >> 4)))) ^ ((((((0xff00000)
>> 16)) >> 4))))) >> (1)) != 0) ? 1 : 0)) :
((((u_long)(((((((((0xff00000) >> 16)))) - 1) & ((
(((0xff00000) >> 16))))) ^ (((((0xff00000) >> 16)
))))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xff00000
) >> 16))) >> 2)) - 1) & ((((((0xff00000) >>
16))) >> 2))) ^ ((((((0xff00000) >> 16))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00000
) >> 16))))) - 1) & ((((((0xff00000) >> 16)))
))) ^ ((((((0xff00000) >> 16))))))) >> (1)) != 0)
? 1 : 0)))) : ((((u_long)(((((((0xff00000))) - 1) & (((0xff00000
)))) ^ (((0xff00000))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xff00000)) >> 8)) - 1) & ((((0xff00000)) >>
8))) ^ ((((0xff00000)) >> 8)))) >> (4)) != 0) ? 4
+ ((((u_long)(((((((((0xff00000)) >> 8) >> 4)) -
1) & (((((0xff00000)) >> 8) >> 4))) ^ (((((0xff00000
)) >> 8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long
)((((((((((0xff00000)) >> 8) >> 4) >> 2)) -
1) & ((((((0xff00000)) >> 8) >> 4) >> 2
))) ^ ((((((0xff00000)) >> 8) >> 4) >> 2)))
) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00000
)) >> 8) >> 4))) - 1) & ((((((0xff00000)) >>
8) >> 4)))) ^ ((((((0xff00000)) >> 8) >> 4
))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xff00000
)) >> 8))) - 1) & (((((0xff00000)) >> 8)))) ^
(((((0xff00000)) >> 8))))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xff00000)) >> 8)) >> 2)) - 1
) & ((((((0xff00000)) >> 8)) >> 2))) ^ ((((((
0xff00000)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff00000)) >> 8)))) - 1
) & ((((((0xff00000)) >> 8))))) ^ ((((((0xff00000))
>> 8)))))) >> (1)) != 0) ? 1 : 0))) : ((((u_long
)((((((((0xff00000)))) - 1) & ((((0xff00000))))) ^ ((((0xff00000
)))))) >> (4)) != 0) ? 4 + ((((u_long)(((((((((0xff00000
))) >> 4)) - 1) & (((((0xff00000))) >> 4))) ^
(((((0xff00000))) >> 4)))) >> (2)) != 0) ? 2 + (
(((u_long)((((((((((0xff00000))) >> 4) >> 2)) - 1
) & ((((((0xff00000))) >> 4) >> 2))) ^ ((((((
0xff00000))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xff00000))) >> 4))) - 1
) & ((((((0xff00000))) >> 4)))) ^ ((((((0xff00000))
) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long)
(((((((((0xff00000))))) - 1) & (((((0xff00000)))))) ^ (((
((0xff00000))))))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xff00000)))) >> 2)) - 1) & ((((((0xff00000)))
) >> 2))) ^ ((((((0xff00000)))) >> 2)))) >>
(1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xff00000)))))) -
1) & ((((((0xff00000))))))) ^ ((((((0xff00000)))))))) >>
(1)) != 0) ? 1 : 0))))))))
;
3858
3859 /*
3860 * Initialize the transmit descriptors.
3861 */
3862 for (nexttx = sc->sc_txnext, seg = 0;
3863 seg < dmamap->dm_nsegs;
3864 seg++, nexttx = ATW_NEXTTX(nexttx)((nexttx + 1) & ((64 * 16) - 1))) {
3865 /*
3866 * If this is the first descriptor we're
3867 * enqueueing, don't set the OWN bit just
3868 * yet. That could cause a race condition.
3869 * We'll do it below.
3870 */
3871 txd = &sc->sc_txdescssc_control_data->acd_txdescs[nexttx];
3872 txd->at_ctl = ctl |
3873 ((nexttx == firsttx) ? 0 : htole32(ATW_TXCTL_OWN)((__uint32_t)((1<<31))));
3874
3875 txd->at_buf1 = htole32(dmamap->dm_segs[seg].ds_addr)((__uint32_t)(dmamap->dm_segs[seg].ds_addr));
3876 txd->at_flags =
3877 htole32(LSHIFT(dmamap->dm_segs[seg].ds_len,((__uint32_t)(((dmamap->dm_segs[seg].ds_len) << ((((
u_long)((((((0xfff)) - 1) & ((0xfff))) ^ ((0xfff)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xfff) >> 16)) - 1
) & (((0xfff) >> 16))) ^ (((0xfff) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xfff) >> 16) >>
8)) - 1) & ((((0xfff) >> 16) >> 8))) ^ ((((0xfff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xfff) >> 16) >> 8) >> 4)) - 1) &
(((((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0))))))))
3878 ATW_TXFLAG_TBS1_MASK))((__uint32_t)(((dmamap->dm_segs[seg].ds_len) << ((((
u_long)((((((0xfff)) - 1) & ((0xfff))) ^ ((0xfff)))) >>
(16)) != 0) ? 16 + ((((u_long)(((((((0xfff) >> 16)) - 1
) & (((0xfff) >> 16))) ^ (((0xfff) >> 16)))) >>
(8)) != 0) ? 8 + ((((u_long)((((((((0xfff) >> 16) >>
8)) - 1) & ((((0xfff) >> 16) >> 8))) ^ ((((0xfff
) >> 16) >> 8)))) >> (4)) != 0) ? 4 + ((((u_long
)(((((((((0xfff) >> 16) >> 8) >> 4)) - 1) &
(((((0xfff) >> 16) >> 8) >> 4))) ^ (((((0xfff
) >> 16) >> 8) >> 4)))) >> (2)) != 0)
? 2 + ((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8) >> 4) >> 2))) ^ ((((((0xfff) >> 16) >>
8) >> 4) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16) >> 8) >>
4))) - 1) & ((((((0xfff) >> 16) >> 8) >>
4)))) ^ ((((((0xfff) >> 16) >> 8) >> 4))))
) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff) >>
16) >> 8))) - 1) & (((((0xfff) >> 16) >>
8)))) ^ (((((0xfff) >> 16) >> 8))))) >> (2
)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >> 16) >>
8)) >> 2)) - 1) & ((((((0xfff) >> 16) >>
8)) >> 2))) ^ ((((((0xfff) >> 16) >> 8)) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
) >> 16) >> 8)))) - 1) & ((((((0xfff) >>
16) >> 8))))) ^ ((((((0xfff) >> 16) >> 8))
)))) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff
) >> 16))) - 1) & ((((0xfff) >> 16)))) ^ ((((
0xfff) >> 16))))) >> (4)) != 0) ? 4 + ((((u_long)
(((((((((0xfff) >> 16)) >> 4)) - 1) & (((((0xfff
) >> 16)) >> 4))) ^ (((((0xfff) >> 16)) >>
4)))) >> (2)) != 0) ? 2 + ((((u_long)((((((((((0xfff) >>
16)) >> 4) >> 2)) - 1) & ((((((0xfff) >>
16)) >> 4) >> 2))) ^ ((((((0xfff) >> 16)) >>
4) >> 2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)
((((((((((0xfff) >> 16)) >> 4))) - 1) & (((((
(0xfff) >> 16)) >> 4)))) ^ ((((((0xfff) >> 16
)) >> 4))))) >> (1)) != 0) ? 1 : 0)) : ((((u_long
)(((((((((0xfff) >> 16)))) - 1) & (((((0xfff) >>
16))))) ^ (((((0xfff) >> 16)))))) >> (2)) != 0) ?
2 + ((((u_long)((((((((((0xfff) >> 16))) >> 2)) -
1) & ((((((0xfff) >> 16))) >> 2))) ^ ((((((0xfff
) >> 16))) >> 2)))) >> (1)) != 0) ? 1 : 0) :
((((u_long)((((((((((0xfff) >> 16))))) - 1) & ((((
((0xfff) >> 16)))))) ^ ((((((0xfff) >> 16))))))) >>
(1)) != 0) ? 1 : 0)))) : ((((u_long)(((((((0xfff))) - 1) &
(((0xfff)))) ^ (((0xfff))))) >> (8)) != 0) ? 8 + ((((u_long
)((((((((0xfff)) >> 8)) - 1) & ((((0xfff)) >>
8))) ^ ((((0xfff)) >> 8)))) >> (4)) != 0) ? 4 + (
(((u_long)(((((((((0xfff)) >> 8) >> 4)) - 1) &
(((((0xfff)) >> 8) >> 4))) ^ (((((0xfff)) >>
8) >> 4)))) >> (2)) != 0) ? 2 + ((((u_long)(((((
(((((0xfff)) >> 8) >> 4) >> 2)) - 1) & (
(((((0xfff)) >> 8) >> 4) >> 2))) ^ ((((((0xfff
)) >> 8) >> 4) >> 2)))) >> (1)) != 0)
? 1 : 0) : ((((u_long)((((((((((0xfff)) >> 8) >>
4))) - 1) & ((((((0xfff)) >> 8) >> 4)))) ^ (
(((((0xfff)) >> 8) >> 4))))) >> (1)) != 0) ?
1 : 0)) : ((((u_long)(((((((((0xfff)) >> 8))) - 1) &
(((((0xfff)) >> 8)))) ^ (((((0xfff)) >> 8))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)) >> 8)) >>
2)) - 1) & ((((((0xfff)) >> 8)) >> 2))) ^ ((
((((0xfff)) >> 8)) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff)) >> 8)))) - 1) &
((((((0xfff)) >> 8))))) ^ ((((((0xfff)) >> 8))))
)) >> (1)) != 0) ? 1 : 0))) : ((((u_long)((((((((0xfff)
))) - 1) & ((((0xfff))))) ^ ((((0xfff)))))) >> (4))
!= 0) ? 4 + ((((u_long)(((((((((0xfff))) >> 4)) - 1) &
(((((0xfff))) >> 4))) ^ (((((0xfff))) >> 4)))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff))) >> 4) >>
2)) - 1) & ((((((0xfff))) >> 4) >> 2))) ^ ((
((((0xfff))) >> 4) >> 2)))) >> (1)) != 0) ?
1 : 0) : ((((u_long)((((((((((0xfff))) >> 4))) - 1) &
((((((0xfff))) >> 4)))) ^ ((((((0xfff))) >> 4)))
)) >> (1)) != 0) ? 1 : 0)) : ((((u_long)(((((((((0xfff)
)))) - 1) & (((((0xfff)))))) ^ (((((0xfff))))))) >>
(2)) != 0) ? 2 + ((((u_long)((((((((((0xfff)))) >> 2))
- 1) & ((((((0xfff)))) >> 2))) ^ ((((((0xfff)))) >>
2)))) >> (1)) != 0) ? 1 : 0) : ((((u_long)((((((((((0xfff
)))))) - 1) & ((((((0xfff))))))) ^ ((((((0xfff)))))))) >>
(1)) != 0) ? 1 : 0))))))))
|
3879 ((nexttx == (ATW_NTXDESC(64 * 16) - 1))
3880 ? htole32(ATW_TXFLAG_TER)((__uint32_t)((1<<25))) : 0);
3881 lasttx = nexttx;
3882 }
3883
3884 if (lasttx == -1)
3885 panic("%s: bad lastx", ifp->if_xname);
3886 /* Set `first segment' and `last segment' appropriately. */
3887 sc->sc_txdescssc_control_data->acd_txdescs[sc->sc_txnext].at_flags |=
3888 htole32(ATW_TXFLAG_FS)((__uint32_t)((1<<29)));
3889 sc->sc_txdescssc_control_data->acd_txdescs[lasttx].at_flags |= htole32(ATW_TXFLAG_LS)((__uint32_t)((1<<30)));
3890
3891#ifdef ATW_DEBUG
3892 if ((ifp->if_flags & IFF_DEBUG0x4) != 0 && atw_debug > 2) {
3893 printf(" txsoft %p transmit chain:\n", txs);
3894 for (seg = sc->sc_txnext;; seg = ATW_NEXTTX(seg)((seg + 1) & ((64 * 16) - 1))) {
3895 printf(" descriptor %d:\n", seg);
3896 printf(" at_ctl: 0x%08x\n",
3897 letoh32(sc->sc_txdescs[seg].at_ctl)((__uint32_t)(sc->sc_control_data->acd_txdescs[seg].at_ctl
))
);
3898 printf(" at_flags: 0x%08x\n",
3899 letoh32(sc->sc_txdescs[seg].at_flags)((__uint32_t)(sc->sc_control_data->acd_txdescs[seg].at_flags
))
);
3900 printf(" at_buf1: 0x%08x\n",
3901 letoh32(sc->sc_txdescs[seg].at_buf1)((__uint32_t)(sc->sc_control_data->acd_txdescs[seg].at_buf1
))
);
3902 printf(" at_buf2: 0x%08x\n",
3903 letoh32(sc->sc_txdescs[seg].at_buf2)((__uint32_t)(sc->sc_control_data->acd_txdescs[seg].at_buf2
))
);
3904 if (seg == lasttx)
3905 break;
3906 }
3907 }
3908#endif
3909
3910 /* Sync the descriptors we're using. */
3911 ATW_CDTXSYNC(sc, sc->sc_txnext, dmamap->dm_nsegs,do { int __x, __n; __x = (sc->sc_txnext); __n = (dmamap->
dm_nsegs); if ((__x + __n) > (64 * 16)) { (*((sc)->sc_dmat
)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * ((64 * 16) - __x)), ((0x01
|0x04))); __n -= ((64 * 16) - __x); __x = 0; } (*((sc)->sc_dmat
)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * __n), ((0x01|0x04))); }
while (0)
3912 BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE)do { int __x, __n; __x = (sc->sc_txnext); __n = (dmamap->
dm_nsegs); if ((__x + __n) > (64 * 16)) { (*((sc)->sc_dmat
)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * ((64 * 16) - __x)), ((0x01
|0x04))); __n -= ((64 * 16) - __x); __x = 0; } (*((sc)->sc_dmat
)->_dmamap_sync)(((sc)->sc_dmat), ((sc)->sc_cddmamap
), (__builtin_offsetof(struct atw_control_data, acd_txdescs[(
__x)])), (sizeof(struct atw_txdesc) * __n), ((0x01|0x04))); }
while (0)
;
3913
3914 /*
3915 * Store a pointer to the packet so we can free it later,
3916 * and remember what txdirty will be once the packet is
3917 * done.
3918 */
3919 txs->txs_mbuf = m0;
3920 txs->txs_firstdesc = sc->sc_txnext;
3921 txs->txs_lastdesc = lasttx;
3922 txs->txs_ndescs = dmamap->dm_nsegs;
3923
3924 /* Advance the tx pointer. */
3925 sc->sc_txfree -= dmamap->dm_nsegs;
3926 sc->sc_txnext = nexttx;
3927
3928 SIMPLEQ_REMOVE_HEAD(&sc->sc_txfreeq, txs_q)do { if (((&sc->sc_txfreeq)->sqh_first = (&sc->
sc_txfreeq)->sqh_first->txs_q.sqe_next) == ((void *)0))
(&sc->sc_txfreeq)->sqh_last = &(&sc->sc_txfreeq
)->sqh_first; } while (0)
;
3929 SIMPLEQ_INSERT_TAIL(&sc->sc_txdirtyq, txs, txs_q)do { (txs)->txs_q.sqe_next = ((void *)0); *(&sc->sc_txdirtyq
)->sqh_last = (txs); (&sc->sc_txdirtyq)->sqh_last
= &(txs)->txs_q.sqe_next; } while (0)
;
3930
3931 last_txs = txs;
3932 }
3933
3934 if (txs == NULL((void *)0) || sc->sc_txfree == 0) {
3935 /* No more slots left; notify upper layer. */
3936 ifq_set_oactive(&ifp->if_snd);
3937 }
3938
3939 if (sc->sc_txfree != ofree) {
3940 DPRINTF2(sc, ("%s: packets enqueued, IC on %d, OWN on %d\n",
3941 sc->sc_dev.dv_xname, lasttx, firsttx));
3942 /*
3943 * Cause a transmit interrupt to happen on the
3944 * last packet we enqueued.
3945 */
3946 sc->sc_txdescssc_control_data->acd_txdescs[lasttx].at_flags |= htole32(ATW_TXFLAG_IC)((__uint32_t)((1<<31)));
3947 ATW_CDTXSYNC(sc, lasttx, 1,do { int __x, __n; __x = (lasttx); __n = (1); if ((__x + __n)
> (64 * 16)) { (*((sc)->sc_dmat)->_dmamap_sync)(((sc
)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof(struct
atw_control_data, acd_txdescs[(__x)])), (sizeof(struct atw_txdesc
) * ((64 * 16) - __x)), ((0x01|0x04))); __n -= ((64 * 16) - __x
); __x = 0; } (*((sc)->sc_dmat)->_dmamap_sync)(((sc)->
sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof(struct atw_control_data
, acd_txdescs[(__x)])), (sizeof(struct atw_txdesc) * __n), ((
0x01|0x04))); } while (0)
3948 BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE)do { int __x, __n; __x = (lasttx); __n = (1); if ((__x + __n)
> (64 * 16)) { (*((sc)->sc_dmat)->_dmamap_sync)(((sc
)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof(struct
atw_control_data, acd_txdescs[(__x)])), (sizeof(struct atw_txdesc
) * ((64 * 16) - __x)), ((0x01|0x04))); __n -= ((64 * 16) - __x
); __x = 0; } (*((sc)->sc_dmat)->_dmamap_sync)(((sc)->
sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof(struct atw_control_data
, acd_txdescs[(__x)])), (sizeof(struct atw_txdesc) * __n), ((
0x01|0x04))); } while (0)
;
3949
3950 /*
3951 * The entire packet chain is set up. Give the
3952 * first descriptor to the chip now.
3953 */
3954 sc->sc_txdescssc_control_data->acd_txdescs[firsttx].at_ctl |= htole32(ATW_TXCTL_OWN)((__uint32_t)((1<<31)));
3955 ATW_CDTXSYNC(sc, firsttx, 1,do { int __x, __n; __x = (firsttx); __n = (1); if ((__x + __n
) > (64 * 16)) { (*((sc)->sc_dmat)->_dmamap_sync)(((
sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * ((64 * 16) - __x)), ((0x01|0x04))); __n -= ((64
* 16) - __x); __x = 0; } (*((sc)->sc_dmat)->_dmamap_sync
)(((sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * __n), ((0x01|0x04))); } while (0)
3956 BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE)do { int __x, __n; __x = (firsttx); __n = (1); if ((__x + __n
) > (64 * 16)) { (*((sc)->sc_dmat)->_dmamap_sync)(((
sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * ((64 * 16) - __x)), ((0x01|0x04))); __n -= ((64
* 16) - __x); __x = 0; } (*((sc)->sc_dmat)->_dmamap_sync
)(((sc)->sc_dmat), ((sc)->sc_cddmamap), (__builtin_offsetof
(struct atw_control_data, acd_txdescs[(__x)])), (sizeof(struct
atw_txdesc) * __n), ((0x01|0x04))); } while (0)
;
3957
3958 /* Wake up the transmitter. */
3959 ATW_WRITE(sc, ATW_TDR, 0x1)(((sc)->sc_st)->write_4(((sc)->sc_sh), ((0x08)), ((0x1
))))
;
3960
3961 /* Set a watchdog timer in case the chip flakes out. */
3962 sc->sc_tx_timer = 5;
3963 ifp->if_timer = 1;
3964 }
3965}
3966
3967int
3968atw_activate(struct device *self, int act)
3969{
3970 struct atw_softc *sc = (struct atw_softc *)self;
3971 struct ifnet *ifp = &sc->sc_ic.ic_ific_ac.ac_if;
3972
3973 switch (act) {
3974 case DVACT_SUSPEND3:
3975 if (ifp->if_flags & IFF_RUNNING0x40)
3976 atw_stop(ifp, 1);
3977 if (sc->sc_power != NULL((void *)0))
3978 (*sc->sc_power)(sc, act);
3979 break;
3980 case DVACT_WAKEUP5:
3981 atw_wakeup(sc);
3982 break;
3983 }
3984 return 0;
3985}
3986
3987void
3988atw_wakeup(struct atw_softc *sc)
3989{
3990 struct ifnet *ifp = &sc->sc_ic.ic_ific_ac.ac_if;
3991
3992 if (sc->sc_power != NULL((void *)0))
3993 (*sc->sc_power)(sc, DVACT_RESUME4);
3994 if (ifp->if_flags & IFF_UP0x1)
3995 atw_init(ifp);
3996}
3997
3998/*
3999 * atw_ioctl: [ifnet interface function]
4000 *
4001 * Handle control requests from the operator.
4002 */
4003int
4004atw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
4005{
4006 struct atw_softc *sc = ifp->if_softc;
4007 struct ifreq *ifr = (struct ifreq *)data;
4008 int s, error = 0;
4009
4010 /* XXX monkey see, monkey do. comes from wi_ioctl. */
4011 if ((sc->sc_dev.dv_flags & DVF_ACTIVE0x0001) == 0)
4012 return ENXIO6;
4013
4014 s = splnet()splraise(0x7);
4015
4016 switch (cmd) {
4017 case SIOCSIFADDR((unsigned long)0x80000000 | ((sizeof(struct ifreq) & 0x1fff
) << 16) | ((('i')) << 8) | ((12)))
:
4018 ifp->if_flags |= IFF_UP0x1;
4019 /* FALLTHROUGH */
4020
4021 case SIOCSIFFLAGS((unsigned long)0x80000000 | ((sizeof(struct ifreq) & 0x1fff
) << 16) | ((('i')) << 8) | ((16)))
:
4022 if (ifp->if_flags & IFF_UP0x1) {
4023 if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000)) {
4024 /*
4025 * To avoid rescanning another access point,
4026 * do not call atw_init() here. Instead,
4027 * only reflect media settings.
4028 */
4029 atw_filter_setup(sc);
4030 } else
4031 error = atw_init(ifp);
4032 } else if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000))
4033 atw_stop(ifp, 1);
4034 break;
4035
4036 case SIOCADDMULTI((unsigned long)0x80000000 | ((sizeof(struct ifreq) & 0x1fff
) << 16) | ((('i')) << 8) | ((49)))
:
4037 case SIOCDELMULTI((unsigned long)0x80000000 | ((sizeof(struct ifreq) & 0x1fff
) << 16) | ((('i')) << 8) | ((50)))
:
4038 error = (cmd == SIOCADDMULTI((unsigned long)0x80000000 | ((sizeof(struct ifreq) & 0x1fff
) << 16) | ((('i')) << 8) | ((49)))
) ?
4039 ether_addmulti(ifr, &sc->sc_ic.ic_ac) :
4040 ether_delmulti(ifr, &sc->sc_ic.ic_ac);
4041
4042 if (error == ENETRESET52) {
4043 if (ifp->if_flags & IFF_RUNNING0x40)
4044 atw_filter_setup(sc); /* do not rescan */
4045 error = 0;
4046 }
4047 break;
4048
4049 default:
4050 error = ieee80211_ioctl(ifp, cmd, data);
4051 if (error == ENETRESET52) {
4052 if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000))
4053 error = atw_init(ifp);
4054 else
4055 error = 0;
4056 }
4057 break;
4058 }
4059
4060 /* Try to get more packets going. */
4061 if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000))
4062 atw_start(ifp);
4063
4064 splx(s)spllower(s);
4065 return (error);
4066}
4067
4068int
4069atw_media_change(struct ifnet *ifp)
4070{
4071 int error;
4072
4073 error = ieee80211_media_change(ifp);
4074 if (error == ENETRESET52) {
4075 if ((ifp->if_flags & (IFF_RUNNING0x40|IFF_UP0x1)) ==
4076 (IFF_RUNNING0x40|IFF_UP0x1))
4077 atw_init(ifp); /* XXX lose error */
4078 error = 0;
4079 }
4080 return error;
4081}
4082
4083void
4084atw_media_status(struct ifnet *ifp, struct ifmediareq *imr)
4085{
4086 struct atw_softc *sc = ifp->if_softc;
4087
4088 if (ATW_IS_ENABLED(sc)((sc)->sc_flags & 0x00001000) == 0) {
4089 imr->ifm_active = IFM_IEEE802110x0000000000000400ULL | IFM_NONE2ULL;
4090 imr->ifm_status = 0;
4091 return;
4092 }
4093 ieee80211_media_status(ifp, imr);
4094}