Commit Graph

4161 Commits

Author SHA1 Message Date
dyoung
1a198218b9 Delete an out-of-date comment. 2005-01-17 01:48:56 +00:00
dyoung
55940f7c4e Move the register access mode into struct rtw_regs. Change
rtw_set_access, rtw_set_access1 to match.

Add a subroutine for setting WEP keys.  WEP isn't quite finished,
because I have to add the WEP header to Tx packets.  Implement the
SIOCS80211NWKEY ioctl for setting WEP keys.

Program the LEDs based on operating state and packet activity.

 * On a Revision F RTL8180, blink LED1 at 1Hz to indicate
   scan/authenticate/associate states.  In the run state, turn LED1
   on.  In every state, blink LED1 at 5Hz to indicate non-beacon
   tx/rx activity.  I would like to use two LEDs, but in all my
   Rev. F instances, LED0 is not wired to an LED; instead, the
   first LED is wired to indicate that the card's power is on.

 * On a Revision D RTL8180, program the LEDs so that LED0 indicates
   Tx, and LED1 indicates Rx.  The Rx LED will blink annoyingly if
   there are beacons in the air, but at least the Tx LED is useful.

 * Store the hardware revision in the softc to support my futile
   attempt at programming LEDs for both Rev. D and Rev. F parts;
   I never did get Rev. D LEDs to work right.

 * Add a debug flag RTW_DEBUG_LED for the LED transitions.

Add RTW_TPPOLL_ALL, RTW_TPPOLL_SALL to start and stop, respectively,
all of the transmit rings.

In ad hoc mode, allocate a beacon and load it into the beacon ring.
Start the ring.  In one trial, the card re-transmitted the beacon
ring's contents several times before stopping.  More programming
and testing for ad hoc mode is necessary.  I'm not setting the
beacon flag in the transmit descriptor.

Revamp the transmit section to make better use of all the transmit
rings:  beacon queue, high-, low-, and medium-priority rings.  Put
beacon frames on the beacon ring.  All other management frames,
and data frames, go on the medium-priority ring.  Power-save data
frames go on the high-priority ring.  (Note that powersaving is
not implemented!)  This is a work in progress.

Send all 802.11 Management frames at 1Mbps.

After we put a packet on a transmit ring, tickle the right bit in
the TPPOLL to tell RTL8180.  Stop all rings on error and in rtw_stop.

Use the RF chip type, not the RTL8180 revision, to choose between
host- and MAC-controlled RF serial I/O.  Now the Netgear MA521
works.

Remove bogus definition of bit RTW_TPPOLL_FSWINT.
2005-01-16 11:50:43 +00:00
dyoung
500260511f It's necessary to stop DMA on the beacon ring and reconfigure the
beacon after an IBSS merge, or else beacons transmissions may not
resume like we expect.  From Sam Leffler.
2005-01-16 11:43:34 +00:00
kent
93293b9ec7 ansify and KNF 2005-01-15 15:19:51 +00:00
dyoung
7ce33f984e Fix two bugs: frames were bogusly discarded with the complaint
"oversize frame."  Also, some an(4) instances (esp. w/ firmware
version 5+) would not reliably interoperate with some Cisco APs.

Add a sysctl for enabling/disabling debugging.

The problem with Aironet AP interoperability was that the rx frame
'gap' will sometimes be loaded with the 802.2 SNAP header, and
sometimes omitted, when connected to a Cisco AP; an(4) was *always*
discarding the gap.  The problem with "oversize frames" was an
off-by-2 error in the frame-length arithmetic.

While we're here, pad some RIDs to the length that new firmware
really expects.

Thanks to Jim Miller for his valuable bug reports and testing, and
to Dheeraj Reddy for RID-length patches.  Some clues from various
Linux drivers for Cisco/Aironet cards led to the gap fix.
2005-01-15 11:01:46 +00:00
scw
36a24a9003 Cast away a couple of "assignment makes pointer from integer without a cast"
warnings.
2005-01-14 16:23:32 +00:00
dyoung
f7a7696b57 Fix typos in TPPOLL register definition: stop the normal- &
low-priority queues with bit1 and bit0, not bit2 and bit2.
2005-01-14 10:13:55 +00:00
kanaoka
3e734f8e90 - Move re_diag() from bus independend code to PCI attachment code.
XXX: I tested cardbus device,but not PCI device.
2005-01-13 14:24:24 +00:00
briggs
9750b8741d In epshutdown(), do not attempt to disable the interface when stopping it
because we're about to write to it again (with a global reset).  Disable
the interface explicitly after the reset is written.
2005-01-11 04:16:27 +00:00
joff
e1191d101f Replace hd44780_subr.h to hd44780var.h and install to userland. 2005-01-11 00:57:56 +00:00
kent
23b5d91433 merge kent-audio1 branch, which introduces audio filter pipeline to the MI
audio framework


Summary of changes:

* struct audio_params
  - remove sw_code, factor, factor_denom, hw_sample_rate,
hw_encoding ,hw_precision, and hw_channels.  Conversion information
is conveyed by stream_filter_list_t.
  - change the type of sample_rate: u_long -> u_int
  - add `validbits,' which represents the valid data size in
precision bits.  It is required in order to distinguish 24/32bit
from 24/24bit or 32/32bit.

* audio_hw_if
 - add two parameters to set_params()
	stream_filter_list_t *pfil, stream_filter_list *rfil
   A HW driver should set filter recipes for requested formats
 - constify audio_params parameters of trigger_output() and
trigger_input().  They represent audio formats for the hardware.
 - make open() and close() optional
 - add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
 to round_blocksize()

* sw_code is replaced with stream_filter_t.
  stream_filer_t converts audio data in an input buffer and writes
into another output buffer unlike sw_code, which converts data in
single buffer.
  converters in dev/auconv.c, dev/mulaw.c, dev/aurateconv.c,
dev/tc/bba.c, dev/ic/msm6258.c, and arch/arm/iomd/vidcaudio.c are
reimplemented as stream_filter_t

* MI audio
 - audiosetinfo() builds filter pipelines from stream_filter_list_t
filled by audio_hw_if::set_params()
 - audiosetinfo() returns with EINVAL if mmapped and set_params()
requests filters
 - audio_write(), audio_pint(), and audio_rint() invoke a filter
pipeline.
 - ioctl() for FIONREAD, AUDIO_WSEEK, AUDIO_GETIOFFS,
AUDIO_GETOOFFS, and audio_prinfo::{seek,samples} for
AUDIO_GETINFO handle values for a buffer nearest to userland.

* add `struct device *' parameter to ac97_attach()

* all of audio HW drivers follow audio_hw_if and ac97 changes
2005-01-10 22:01:36 +00:00
joff
838c742991 Handle (i.e. don't lock up the kernel in hd44780_busy_wait) the case of the
LCD not being there.
2005-01-09 15:43:56 +00:00
kanaoka
dcccc9d794 sys/dev/ic/rtl8169.c:
- re_attach(): Use bus_dma* directly instead of calling re_alloc().
 - re_attach(): Free bus_dma* resources if attach fails.
 - re_detach(): Free bus_dma* resources.
 - re_newbuf(): Remove unnecessary error check.

sys/dev/ic/rtl81x9reg.h:
 - Define RTK_NTXSEGS.

sys/dev/ic/rtl81x9var.h:
 - Add new members to struct rtk_list_data for bus_dma*.
2005-01-09 12:25:25 +00:00
kanaoka
6488f7bcc4 - Use aprint_*.
- Remove unnecesarry code.
 - Changes some cosmetic.
2005-01-09 12:15:36 +00:00
joff
3d76a36e9e Change TIMEOUT_XXX to HD_TIMEOUT_XXX 2005-01-08 20:19:08 +00:00
joff
79ce2f10af Various improvements for connecting HD44780s using bit-banging style devices
o add sc_writereg and sc_readreg functions that get passed the hd44780_chip
  struct and RS (register-select) signal
o add sc_dev to struct hd44780_chip so upper level read/write routines can get
  back to their parent softc
o change TIMEOUT_XXX to HD_TIMEOUT_XXX
o remove sc_rread and sc_rwrite in favor of new sc_writereg and sc_readreg
o add new flag HD_UP to sc_flags that is set once 4bit/8bit mode selection
  has been finalized.
o remove sc_irwrite, MD readreg/writereg should check state of HD_UP instead
2005-01-08 20:17:22 +00:00
dyoung
00f3f1b613 In ad hoc mode, start the ath rate adaptation with the lowest, most
robust transmit bit rate.  From Greg Troxel.
2005-01-04 01:45:04 +00:00
dyoung
e470ffcf3b Set initial conditions to guarantee that when read_seeprom toggles
Chip Select, it turns *on* rather than *off*.
2005-01-04 01:04:52 +00:00
dyoung
9a756f795b Add the logic for IBSS merges. 2005-01-04 01:00:30 +00:00
dyoung
5dc6377838 IBSS-merge clean-up, inspired by some Linux patches from Jon Anderson
(mail@janderson.ca): remove ieee80211_ibss_merge's TSFT argument.
Do the TSFT comparison in the drivers (ath, atw).  Remove a lot of
extraneous debug statements from ieee80211_ibss_merge.

Set the ieee80211_node's state to IEEE80211_STA_BSS after it's been
copied to the ic_bss, not before.

In struct ieee80211_node, make the ni_tstamp field a union of a
uint64_t and the 8 TSF octets so that it's easier to compare a
neighbor's TSF with the local TSF.

Log IBSS merges (Greg Troxel's suggestion).  Also log IBSS creation.
These are rare and important events that deserve to be logged.
2005-01-04 00:56:51 +00:00
dyoung
66e0c6fbb9 sys/dev/ic/rtw.c:
Cosmetic: remove two short ladders from rtw_init.  Fit the
        NIC registers print-out onto one line using the RTW_PRINT_REGS
        macro.

sys/dev/ic/rtwvar.h:

        Add RTW_PRINT_REGS wrapper macro for rtw_print_regs.  It
        is a null op unless defined(RTW_DEBUG).
2005-01-03 03:25:06 +00:00
dyoung
4903d25d90 In sys/dev/ic/rtw.c:
Use clue from rtk(4) and re(4) to fix the rtw(4) packet
	filter.  Previously, I was using the wrong CRC32 function
	to hash multicast addresses; to compensate, I set the
	multicast filter to all 1s.  Now that I hash the addresses
	correctly, I do not any longer set the filter to all 1s.

	In rtw_ioctl, avoid gratuitous re-initialization when the
	interface flags change.  If a !IFF_UP -> IFF_UP transition,
	call rtw_init(); otherwise, only reload the packet filter.

In sys/dev/ic/rtwreg.h:

	Put useful combinations of Receiver Control Register flags
	in RTW_RCR_PKTFILT_MASK, RTW_RCR_MONITOR, and
	RTW_RCR_PKTFILT_DEFAULT.  (XXX RTW_RCR_MONITOR should be
	called RTW_RCR_PKTFILT_MONITOR.)
2005-01-03 03:07:12 +00:00
tsutsui
290f8ccd57 - use ANSI function decls
- remove __P()
- u_intNN_t -> uintNN_t
2005-01-02 12:41:03 +00:00
tsutsui
1d25696d75 u_intNN_t -> uintNN_t 2005-01-02 12:22:18 +00:00
dyoung
1236e46cff Guess the meanings of most registers on the baseband processor.
Available documentation is incomplete, so the true meanings will
have to be found out by painstaking experimentation.
2005-01-02 04:29:36 +00:00
dyoung
37420795ec Cosmetic: change u_int{8,16,32,64}_t to C99-style uint{8,16,32,64}_t,
which is preferred.
2005-01-02 04:23:03 +00:00
bjh21
70c402ea14 Since I've got the datasheets in front of me, add #defines for the missing
registers in the supported MK48Txx chips.
2004-12-30 12:36:29 +00:00
bjh21
73c7ba9d59 If clock_ymdhms_to_secs() fails, return ERANGE. This gets my ELC with
a broken NVRAM to boot cleanly.
2004-12-29 21:33:42 +00:00
dyoung
23e8e34093 Remove the cut & pasted copyright and apply my copyright. 2004-12-29 19:43:27 +00:00
dyoung
cef7a909d1 Add my copyright. 2004-12-29 19:41:54 +00:00
dyoung
c3a19d4272 In rtw_detach, flag the rtw as "invalid" (RTW_F_INVALID). Do not
try to power-down the RF section of an invalid rtw.

The radiotap signal quality field is 16, not 8, bits wide.  Convert
the byte order.
2004-12-29 19:41:04 +00:00
dyoung
c75b3dae43 Remove some dead code. 2004-12-29 01:13:07 +00:00
dyoung
9bd9e3df21 Remove unused rtw_softc variables and some other dead code. 2004-12-29 01:11:24 +00:00
dyoung
c3b84ef737 I like the tlp/atw-style names for software descriptors, txsoft,
better than txctl.  Change from rtw_txctl/rtw_rxctl to
rtw_txsoft/rtw_rxsoft.  Change the descriptor blocks' names to
match: rtw_txctl_blk becomes rtw_txsoft_blk.  Change the member-name
prefixes for both software and hardware descriptors.
2004-12-29 01:06:52 +00:00
dyoung
d07caa7269 Consolidate variables related to the rx ring in sc_rxdesc_blk,
which is a struct rtw_rxdesc_blk.

Put a copy of the DMA tag and the DMA map into the rx- and tx-ring
blocks so that I don't have to pass them to subroutines all of the
time.
2004-12-29 00:21:37 +00:00
dyoung
f1fa0e7819 Add bpf(4) packet taps to rtw(4). Now you can tap DLT_EN10MB
(Ethernet II), DLT_IEEE802_11 (802.11), and DLT_IEEE802_11_RADIO
(radiotap + 802.11).
2004-12-28 22:30:07 +00:00
dyoung
88f91a4188 If defined(RTW_DEBUG), provide a sysctl (hw.rtw.rxbufs_limit) for
limiting the number of rx buffers an rtw may allocate.  Use this
sysctl to test the code that copes with buffer exhaustion.

Allocate at most RTW_RXQLEN rx buffers, stopping at the sysctl
limit.  Record in sc_nrxdesc how many were allocated, and put the
end-of-ring indication on sc_rxdesc[sc_nrxdesc - 1].  In rtw_init,
if no rx buffers could be allocated, log a complaint, clear
IFF_RUNNING, and exit with an error.

Many changes to accomodate a short rx ring, mainly of the "add a
rx-ring length argument" variety.  XXX I really should consolidate
all of the rx ring variables in one struct and pass that to the
rx-ring subroutines.

Bug fix: after calling MCLGET, use the (m->m_flags & M_EXT) idiom
to check for success, instead of m != NULL.

Bug fix: at the top of rtw_start, if IFF_RUNNING is not set, or
IFF_OACTIVE is, get out.
2004-12-28 22:21:15 +00:00
dyoung
05372fb8f4 Group receiver-related variables together: move sc_rxctl nearer to
sc_rxnext.

Add sc_nrxdesc, the number of receive descriptors that we are
actually able to use.  sc_nrxdesc will ordinarily equal RTW_RXQLEN.
If buffers are exhausted, sc_nrxdesc < RTW_RXQLEN.  My next commit
will change dev/ic/rtw.c to deal with buffer exhaustion.
2004-12-28 22:07:04 +00:00
dyoung
075143dca9 Use a table to convert the hardware's bit rates (0, 1, 2, 3) to
net80211 bit rates (2, 4, 11, 22).

Count input errors (if_ierrors++) for "DMA error/FIFO overflow"
and unknown bit rate.
2004-12-27 20:04:45 +00:00
dyoung
0da2ab9a37 Simplify the reset we do on a transmit timeout. Really, this could
be as simple as rtw_stop(, 0), rtw_init().
2004-12-27 19:49:16 +00:00
tsutsui
b3090f536d Fix typo in comment. 2004-12-27 14:20:43 +00:00
mycroft
3b17804fc6 Use the last descriptor to count collisions and failed transmissions, too. 2004-12-27 10:17:38 +00:00
mycroft
cbcc1cc53f When checking if a split packet is completed, check the *last* segment, not
the first.  Otherwise we can overwrite parts of the TX ring that we shouldn't.

Kluge the basic rate setting for now.

Minor simplification to the dequeueing logic.
2004-12-27 09:40:18 +00:00
mycroft
8de0a60775 Fix the BRSR macros. 2004-12-27 08:59:16 +00:00
dyoung
5ca7c3d3af Disconnect the "stop transmitter/receiver" function from the
"power-off NIC" function, by adding a 'disable' argument to ath_stop.
Pass disable=0 to ath_stop() at the top of ath_init, so that we
don't power-off the Cardbus slot before resetting the HAL.  Thanks
to Greg Troxel for his analysis of this bug.
2004-12-27 07:01:00 +00:00
dyoung
e336b06e3b Remove useless debug sysctls.
For AP scanning, change the channel dwell time from 1 second to
1/5 second.
2004-12-27 06:12:28 +00:00
mycroft
06e4fe7f62 Replace d_plcp_svc with d_residue. The latter is the number of whole
empty/unused octets to fill out the data time slot.  The value is constrained
by math to 0 for <= 5.5Mb, 0-1 for 11Mb, and 0-2 for 22Mb.  It is used to
signal to the MAC that there is residue.
2004-12-27 01:51:49 +00:00
dyoung
fd1b54b080 Make rtw(4) build w/o RTW_DEBUG. Thanks to Charles Hannum for
pointing out my oversight.
2004-12-26 22:59:41 +00:00
mycroft
1083cfb1dd Fix a compile error if no RTW_DEBUG. 2004-12-26 22:37:57 +00:00
kanaoka
9c2bc06a94 - Use ether_ioctl().
- Remove unnecessary re_init() in re_attach().
 - Remove notyet compile option.
2004-12-26 07:27:41 +00:00
kanaoka
38f5c9155e - Sync if_re.c(rev=1.6).
When adding/deleting multicast addresses, only whack the address
    filter if the interface is marked RUNNING.

    Fixes kern/27678.
2004-12-26 06:48:13 +00:00
jonathan
92e2e6b4b0 Add a forgotten change to rtl81x9var.hfor split re(4) driver
(sys/dev/ic/rtl8169.c): add `sc_rev' to generic 81x9 struct rtk_softc.
2004-12-25 17:24:01 +00:00
dyoung
1b319bfabc The rx descriptor ring bug happens quite often, so printf'ing
occurrences is annoying.  Only printf about it when rtw_debug
contains RTW_DEBUG_BUG.
2004-12-25 07:45:53 +00:00
dyoung
763f8db1c3 IMPORTANT: set m->m_pkthdr.rcvif on rx'd packets. Illegal memory
references abound without this fix.

In rtw_intr_rx, skip to the next rx packet earlier if the rx packet
length is too short.

Also in rtw_intr_rx, if a packet is rx'd with unknown rate, printf
a warning, drop the packet, recycle the rx buffer, skip to next rx
packet.
2004-12-25 07:24:17 +00:00
dyoung
d2b4873c41 Change rtw_debug from a debug level to a debug mask. Add a lot of
debug flags.

From Linux: handle an RTL8180 bug.  Sometimes the NIC skips from
the middle of the ring to the 0th rx descriptor.  Now the driver
resynchronizes.

Handle a receive descriptor underrun or Rx FIFO overflow condition
in the way that the Linux driver does.  This kind of seems like
overkill, but whatever.

Protect rtw_ioctl with splnet().

Do not load a tx descriptor with a buffer shorter than 4 bytes.

Handle a transmit timeout less disruptively.
2004-12-25 06:58:37 +00:00
dyoung
b24dd60cd6 Round up the number of h/w Rx descriptors to the number of h/w,
not s/w, descriptors in 256 bytes (the descriptor ring alignment).
2004-12-23 08:27:38 +00:00
jonathan
9d44c4d9b1 Snapshot of incomplete-but-working split of re(4) driver into a
bus-independent backend, with PCI and CardBus attachment code.
The committed code has two serious bugs:

1. The driver makes no attempt to recover resources when a (Cardbus)
instance is removed; bus resources are leaked.

2. In testing with a NetGear GA-511, the Cardbus card never responded
   to a reset/wakeup if the card is powered down after attachment.
   So for now, leave cardbus instances powered up at attachment
   (insertion, or at boot if a card is already present).

That aside, it acutally works on my GA-511. Committed as-is despite
the bugs, after repeated requests to make the code available for
further testing.  Also requires sys/dev/mii/miidevs rev 1.54 -> 1.55,
and consequent regen of miidevs{,_data}.h.
2004-12-23 06:26:30 +00:00
dyoung
4ebbc2c98c Oops, straggler from last commit: set the 802.11 Duration field
with the result from ieee80211_compute_duration.
2004-12-23 06:12:43 +00:00
dyoung
24ba04b962 Fix a bug in ieee80211_compute_duration: the 802.11 Duration field
in an 802.11 unicast data packet is equal to the duration of the
SIFS and Acknowledgement.  That is, the amount of time reserved
*after* the packet has finished transmitting.

Change the arguments to ieee80211_compute_duration: pass the entire
packet length, not just the payload length.  Add a 'debug' argument
to ieee80211_compute_duration and its helper subroutine,
ieee80211_compute_duration1.

If debug != 0, ieee80211_compute_duration printfs its arguments
and several local variables.

In rtw(4), load the 802.11 Duration field with the result from
ieee80211_compute_duration.
2004-12-23 06:08:52 +00:00
dyoung
ce08175fd3 Bug fix: in rtw_rxbuf_alloc, unload the previous mbuf chain before
loading the new chain.
2004-12-23 06:03:09 +00:00
dyoung
baea907e93 DMA-synchronize the Rx buffers before re-initializing them.
XXX not necessary?
2004-12-23 06:00:35 +00:00
dyoung
619095ce92 Add more comprehensive debug messages as we setup transmit descriptors.
Also, dump packets if IFF_DEBUG|IFF_LINK2.  Factor out a subroutine
for printing transmit-descriptor debug messages.
2004-12-23 05:57:18 +00:00
dyoung
0aac8a9404 Disable interrupts and stop transmit DMA before disabling the
transmitter and receiver.
2004-12-23 05:54:54 +00:00
dyoung
ff88b7967a Shorten variables, s/txctl/ctl/. This is rtw_start, after all:
transmission is implied.
2004-12-23 05:52:27 +00:00
dyoung
8c17dbe77f Do not indicate to the NIC that the host has appended the CRC32 to
Tx frames.
2004-12-23 05:50:24 +00:00
dyoung
c1cf79a56a When we set up the supported rates table, mark 1Mb/s, 2Mb/s as
basic rates.
2004-12-23 05:47:42 +00:00
dyoung
387106eafc Extract the transmission status from a tx descriptor, and convert
to host byte-order, once.
2004-12-23 05:44:39 +00:00
reinoud
cca3038b40 Add convenience macro AC97_HAS_SPDIF to check if SPDIF output is supported
in the codec in the line of AC97_IS_4CH and AC97_IS_FIXED_RATE macro's.
2004-12-22 00:54:55 +00:00
dyoung
e8cbfad366 The CRC bit in the Transmit Configuration Register seems to have
the meaning opposite to what I thought I read in the datasheet.
2004-12-21 09:07:23 +00:00
dyoung
aecae5f227 Realtek sample sources are not consistent about the "Digital PHY"
bit in the SROM.  It seems as if it is set to 1 when the PHY is
*analog*, not *digital*.  Fix my sources.

In rtw_intr_rx, use units of 500kb/s instead of 100kb/s for rate,
to be consistent with net80211's expectations.  Polish up some
debugging ugly messages.  Dump raw 802.11 packets if IFF_DEBUG|IFF_LINK2
and RTW_DEBUG is defined.

Polish power-state (on/sleep/off) handling.  Especially improve
support for RFMD (totally untested) and Maxim.  For Philips, take
the Digital PHY property into account.

Call the net80211 watchdog function from rtw_watchdog, so that we
scan again if auth/assoc fails.

Be a little more cautious about writing register[RTW_TPPOLL], since
other drivers are....  Don't frob the high/low-priority queues
right now, since I don't use them.

Add rtw_join_bss which programs the card with the BSSID and other
properties of a BSS.  Use it on state transitions.  Factor out
rtw_set_nettype.

Make rtw_recv_beacon call ieee80211_recv_mgmt instead of dropping
beacons on the floor!  TBD IBSS merges.

Change some rtw_debug=2 printfs to rtw_debug=3 (RTW_DPRINTF3)
printfs so the console doesn't get spammed so badly at rtw_debug=2.
Change some debugging printfs to RTW_DPRINTFs.  E.g., print the
"RF programming method" only if debugging is enabled.
2004-12-20 23:05:41 +00:00
dyoung
b9ff79c840 Fix bug in last commit: use &sc->sc_regs, regs is not defined. 2004-12-20 01:28:24 +00:00
dyoung
aa6694402c Add some bus barriers. Remark where they are needed, e.g.,
read_eeprom.

Change some printfs to RTW_DPRINTF2s to quiet rtw(4) when debugging
is disabled.
2004-12-20 01:13:45 +00:00
dyoung
263bfa8e84 Get rid of the silly char (*dvname)[IFNAMSIZ] pattern. Replace it
with const char *dvname.  I'm not sure what I was thinking.
2004-12-20 00:28:02 +00:00
dyoung
3c88b36364 Assert that I'm DMA-syncing a non-negative number of transmit
descriptors.

As I free dirty transmit buffers, move them to the free list, not
back to the dirty list!

Add a 5-second transmit timeout.
2004-12-20 00:16:21 +00:00
dyoung
38e3126fe5 Add the transmit section of rtw(4): build up and tear down transmit
descriptor rings, move packets from the transmit queues to the
transmit rings, handle transmission-completed interrupts.  My
Linksys WPC11 ver. 4 with Maxim RF, generates interrupts like it
is successfully transmitting packets.  Clearly there are bugs: my
G4 Powerbook locks up hard.  I will debug tomorrow.
2004-12-19 08:19:25 +00:00
dyoung
31815c9d7a Remove from atw(4) all of the 802.11 duration #defines that I just
moved to sys/net80211/ieee80211.h.
2004-12-19 08:09:23 +00:00
dyoung
ad16f31a1c In wi_stop, wait for transmit commands to complete. Extract
subroutine wi_txcmd_wait from wi_cmd and wi_stop.

This stops wi from griping, "wi0: command timed out, cmd=0x10b,
arg=0x0", when we down/up the interface.  Thanks to Pavel Cahyna
for reporting this bug.
2004-12-14 19:53:46 +00:00
dyoung
4a2df5a4d4 Bug fix: synchronize Transmit commands with all other commands.
Following Charles Hannum's wi(4) optimizations, there could be a
Transmit command outstanding after wi_tx_intr or wi_start returns.
The driver would blithely issue a second command [*] before the
first command was finished, taking the first command's WI_EV_CMD
indication to mean the second command had finished.  The driver
would be dreadfully confused when the second command's results did
not meet its expectations (e.g., a RID mismatch error would occur).
The packet transmit section of the code would never read the
WI_EV_CMD it expected, so transmissions would cease.

This patch counts the outstanding transmit commands (there can be
only one) and, if a transmit command is outstanding at the top of
wi_cmd(), wi_cmd waits for the command to complete.  If there was
a transmit command outstanding when wi_cmd begins, it calls
wi_cmd_intr() on its way out.

I have tested this on an Orinoco card.  Previously, the card would
stop transmitting or the kernel would panic as desynchronization
occurred.  Now it works beautifully.

[*] A second command could be issued by wi_ioctl or else by
    wi_intr->wi_info_intr->wi_newstate->wi_read_xrid->wi_read_rid.
2004-12-13 17:55:28 +00:00
dyoung
407495af6f In wi_tx_intr, be a little more explicit about which fields we're
reading from the Tx-Complete FID.
2004-12-13 17:24:09 +00:00
dyoung
cdf3961f69 Refactor. wi_read_rid calls,
wi_read_rid(sc, rid, &val, &buflen) == 0 && buflen == sizeof(val),

become wi_read_xrid calls

  wi_read_xrid(sc, rid, &val, sizeof(val)) == 0.

If the actual RID length is different from the expected RID length,
wi_read_rid prints to the log.
2004-12-13 17:21:35 +00:00
dyoung
0842199905 Fix a typo, s/high/low/. 2004-12-13 01:15:07 +00:00
dyoung
87f615f34e At last, I have rtw w/ Philips RF receiving packets.
I added some sysctls to aid debugging:

  * hw.rtw.debug -- enable debugging

  * hw.rtw.flush_rfio -- Linux voodoo: possibly makes the MAC
    "flush" bits down the serial bus to the RF

  * hw.rtw.host_rfio: force the host to bang bits to the RF, instead
    of the MAC banging bits

  * hw.rtw.rfio_delay: after telling the MAC to bang bits to the
    RF front-end, delay rfio_delay microseconds.

  * hw.rtw.rfprog_fallback: there is this notion of the "RF
    programming method."  I believe the choice influences the
    polarity/timing of the serial bus used to program the RF
    front-end.  I know the correct choice for Intersil/RFMD/Philips
    front-ends, only.  For all other front-ends, I "fallback" to
    rfprog_fallback.

Make rtw_txdac_enable take an rtw_softc argument.  I will probably
revert this change.

Add some Linux voodoo to rtw_continuous_tx_enable.  I will probably
revert this change.

Important: add rtw_set_rfprog, which sets the correct RF programming
method.  This change and the following change are probably responsible
for making the Philips RF work.

Important: RTW_CONFIG1 is an 8-bit register, treat it that way!

Important: RTW_BRSR is 16-bit, RTW_CRCOUNT, RTW_PHYDELAY, and
RTW_MSR are 8-bit: treat them that way!

Vastly simplify rtw_resume_ticks.

Note to self: set the LED state to match the power state.

Hedge against the possibility that RTW_MSR is protected as
RTW_CONFIG[0123] are, meanwhile reworking that section of rtw_init
a little.

Add sc_anaparm, which isn't used, yet....
2004-12-13 00:48:02 +00:00
dyoung
a534631ee7 Miscellaneous changes. Details below. Important changes flagged
with [].  Using the driver with my Linksys WPC11 ver. 4, it seems
to be receiving packets for a change.  The WPC11 ver. 4 has a Maxim
RF section.  My no-name rtw with Philips RF section still does not
receive any packets.

Keep access-level (analog params > config[0123] registers > none)
in sc_access.  Add rtw_set_access for changing the access level.

Make rtw_continuous_tx_enable and other subroutines use rtw_set_access
instead of rtw_config0123_enable and rtw_anaparm_enable.

Factor part of the chip-reset code into rtw_chip_reset1.

Change the 'struct foo (*bar)[N]'-style arguments to
'struct foo *bar'-style arguments.

Consolidate software/hardware Tx/Rx ring setup in rtw_hwring_setup,
rtw_swring_setup.

Add a new constant, SA2400_OPMODE_DEFAULTS, for the bits that we
*always* set in the SA2400 OPMODE register.

Factor some code out into rtw_sa2400_calibrate.  (Inspired by the
Linux driver.)

[] When the receiver goes into underrun/overflow state, call a new
   subroutine, rtw_kick() that stops the Rx/Tx processes, resets
   the chip, reinitializes the Tx/Rx rings, and restarts Rx/Tx
   processes.  (Inspired by the Linux driver.)

[] In rtw_intr_rx, check for too-short packets before calling
   ieee80211_find_rxnode.  I believe this will prevent a repeat of
   the MCHK exception I saw once on macppc.

[] Use seconds-elapased as well as microseconds-elapsed to set the
   next "due date" for the timeout interrupt.  This keeps the driver
   from programming the timeout to expire too early.

[] In rtw_intr, read RTW_ISR at most 10 times, then get out.  If
   the interface is not enabled (RTW_F_ENABLED), then get out.

[] In rtw_stop, get out if the interface is not enabled (RTW_F_ENABLED).
   Block IPL_NET interrupts.  Don't read/write any registers if
   the interface is invalid (RTW_F_INVALID).

[] Call rtw_stop in rtw_detach.
2004-12-12 06:37:59 +00:00
sketch
70f18ae0f6 Silence the 'receive process failed to idle' message on the Davicom DM9102A. 2004-12-11 09:31:42 +00:00
thorpej
d5083f78be Use "struct scsipi_command" in internal command structures so that
we have enough space for 16-byte CDBs.
2004-12-07 22:23:45 +00:00
thorpej
98e4397919 Fix a straggling reference to "struct scsi_generic" in some debug-only
code.
2004-12-07 14:57:19 +00:00
thorpej
d41e8f00bf Don't use "struct scsi_generic" in a hardware-defined structure. Instead,
use an array of 12 bytes.  Check the incoming CDB to see that it will fit,
and print and error and fail the command if it won't.
2004-12-07 14:50:56 +00:00
thorpej
3e22338d60 When checking the CDB length, check against the field in the SCB
that we're actually storing it to.

XXX Should be re-examined; this is not actually a hardware-constrained
size with this driver.
2004-12-07 14:48:58 +00:00
xtraeme
347378fc9f Add ACPI mpu(4) attachment, based on lpt_acpi.c by jmcneill@,
reviewed by christos@, cube@ and martin@.

While here, remove a printf() in mpu_attach() (ic/mpu.c) to remove
an empty line in some frontends (mpu_isa.c, etc).
2004-12-02 09:50:41 +00:00
uwe
520a24ea83 Use standard uintN_t types instead of home-grown u_intN_t types. 2004-11-26 22:29:36 +00:00
mycroft
67325f43a5 Fix what appears to be a byte order error on big-endian systems with Symbol
cards.
2004-11-26 17:55:41 +00:00
uwe
c82b9df9d8 Fix several typos in comments. 2004-11-26 02:07:09 +00:00
thorpej
cc4d390c49 Use log() instead of printf(). 2004-11-23 21:41:57 +00:00
kent
145085fc2f move IS_FIXED_RATE(), SUPPORTS_4CH(), and SUPPORTS_6CH to ac97var.h 2004-11-10 04:20:26 +00:00
kent
80620cc14f - nuke __P()
- add ac97_codec_if_vtbl::detach()
2004-11-08 14:24:17 +00:00
thorpej
bebd825b66 iee_ioctl(): Make this look like other drivers, fixing a missing "splx(s)"
as a side-effect.  Don't bother handling IFF_PROMISC here, because
ether_ioctl() already calls (*if_init)() to handle flags changes.

When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
2004-10-30 23:52:22 +00:00
thorpej
711247fa68 When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
2004-10-30 23:33:29 +00:00
bouyer
c31b572a47 Allow polled commands to be queued, if ata_exec_xfer() is called in thread
context. For this introduce 3 new xfer tags:
- C_WAIT, equivalent of AT_WAIT
- C_WAITACT, when there is a thread waiting on this xfer to become the active
  one (that is, to be at the head of the queue)
- C_FREE, set by ata_free_xfer() when it can't free the xfer because it's
  still in use. The holder should then free the xfer ASAP.

If ata_exec_xfer() is called with (C_POLL | C_WAIT), and there is already
xfers to be processed, assert C_WAITACT and sleep.
atastart() checks for C_WAITACT, and wakeup the thread waiting for this xfer
to become active if set. atastart() won't process this xfer, it's the
responsability of the thread waked up to handle it.

Fix (the right way) kern/27421 by Martin Husemann.
2004-10-30 23:10:37 +00:00
thorpej
e9818f5b5e When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
2004-10-30 18:08:34 +00:00
bouyer
235e7412c1 Revert 1.215, with a comment explaining why we can't use interrupts here. 2004-10-30 17:17:21 +00:00
yamt
18f717bb90 constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
yamt
05f25dcc2a move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
heas
6df21a5e13 GC some trailing WS. 2004-10-26 22:52:44 +00:00
bouyer
01d27a59a7 wdc_drvprobe(): don't poll for the IDENTIFY, use interrupts. There's no
reasons to not use interrupts here, and polling cause problems when there is
a shared queue between 2 channels.
Fix kern/27421 by Martin Husemann.
2004-10-26 21:21:59 +00:00
enami
63a896d5a8 Fill some entry in fake wdc_ata_bustype since those are called even
if no wd(4) device is configured in a kernel.
2004-10-25 22:42:09 +00:00
christos
cfe914cf35 Change the sc_name buffer size from 16 to 32, since we already oveflow 16
in if_tlp_pci.c... The name code really needs to be fixed so that it does
not have a buffer overflow again:

1. the cardbus and eisa code don't initialize sc_name; it probably should?
2. tlp_attach() seems to print the name and the ethernet address, but
   the pci front end seems to do the same.
3. some of the name determination code in the pci front-end does not guarantee
   nul terminated strings.

Really, all this name code is just bloat and another place for bugs to hide.
2004-10-24 00:35:08 +00:00
heas
4cec10fd22 Adjust/add a few comments and add defines for PCS (aka GEM_MII) FSM and
interrupt registers.
drop some trailing WS.

no functional changes.
2004-10-17 21:49:08 +00:00
kent
8e74ad23a5 make sure of readiness of an AC'97 codec by writing a value and
reading it.  There is a codec which is not operational just
after power states become ready.

PR#26457
2004-10-17 08:20:15 +00:00
kent
44f6147e9d split outputs.tone to outputs.bass and outputs.treble
from OpenBSD
2004-10-12 14:34:41 +00:00
fvdl
6a68a8b6c5 Don't use sizeof on a pointer when you mean the whole structure. 2004-10-04 11:23:39 +00:00
fvdl
5d83432e24 No need to print out sense data just because it happened to arrive in
a pkt. Wrap that in AHD_DEBUG.
2004-10-04 11:08:47 +00:00
bouyer
14068e2ca9 Add missing return, fix handling of Ignore Wide Residue messages. 2004-10-03 14:52:53 +00:00
yamt
5735ef17ab ex_add_rxbuf: use MRESETDATA macro. 2004-09-28 11:35:21 +00:00
yamt
478d44cb16 ath_getmbuf: check MCLGET failure. 2004-09-28 11:34:37 +00:00
dyoung
1b319e72be Simplify the BSSID synchronization code. 2004-09-28 00:42:11 +00:00
dyoung
3e9bdb9662 Add work-in-progress driver rtw(4) for Realtek RTL8180 MAC/baseband.
Add register definitions for Maxim MAX2820 and Philips SA2400 radio
front-ends.
2004-09-26 02:29:15 +00:00
tsutsui
036acd9295 Use ANSI function decls. 2004-09-25 11:58:19 +00:00
tsutsui
a5c60861e8 Sprinkle DELAY(1)'s in several busy loops to avoid excessive bus access.
Inspired by OpenBSD.
2004-09-25 10:47:29 +00:00
tsutsui
30e4125256 On manual xfer via TEMP register, set PCTL_BFINT_ENAB and check
bus free by INTS register. spc_intr() also checks the INTS_DISCON bit.
2004-09-25 10:36:15 +00:00
tsutsui
45d871e0fb In spc_intr(), return 0 if the interrupt is not for spc(4). 2004-09-25 10:32:15 +00:00
tsutsui
dc28263470 Use manual xfer via TEMP register in status phase even on x68k.
Some devices do not transfer data with proper way on status phase
and it causes bus error in spc_datain_pio() which uses auto xfer
via DREG register on weird x68k hardware.
2004-09-25 10:15:36 +00:00
tsutsui
ae6239f109 Use ANSI function decls. 2004-09-25 09:46:17 +00:00
kent
54cf6460d6 ac97_host_if::reset() returns non-zero value if codec reset fails, and
ac97 is not attached in that case.

PR: kern/26973
2004-09-22 12:20:24 +00:00
simonb
74b1235f26 Fix a typo in a comment. 2004-09-20 07:32:02 +00:00
chs
b42337cb2a fix optimized compilation. 2004-09-19 23:00:29 +00:00
mycroft
7e54a3ad57 If we need to poll, set SCSIPI_ADAPT_POLL_ONLY rather than a homegrown flag. 2004-09-18 02:18:39 +00:00
martin
657b6abe1d Do not count ipackets twice. From Dave Barnes in PR port-i386/26906. 2004-09-16 10:02:59 +00:00
drochner
96b589fc18 a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
 config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
 on "locators.h"
2004-09-13 12:55:47 +00:00
drochner
b04ad75025 use locator passing versions of xxxsubmatch() and simplify the code by
using arithmetics instead of case statements
2004-09-13 12:34:00 +00:00
he
b119cd7a61 Enclose initialization of NCR_VARIANT_NCR53C400 in an ifdef on
NCR5380_USE_BUS_SPACE, to make this build again on acorn32, mac68k,
pc532, and sun3.  This is done under the assumption that it's
somewhat doubtful that any of those machines will encounter that
chip variant.

The acorn32 and mac68k parent drivers (csa and sbc) are listed in
ncr5380var.h as "easy to convert", but it's evident that noone have
stepped up to that challenge yet.  Sun3 and pc532 needs bus.h first,
which they apparently don't have at the moment.
2004-09-12 18:05:46 +00:00
bouyer
a480086121 pool_prime() the ncr53c9x_ecb pool with one element (this will cause one page
to be allocated anyway). scsipi can deal with resources shortage, but if this
pool goes down to 0 pages we can deadlock with the scsipi_xfer, vnode or
inode pools.
Also update a comment, despite resources accounting we can return
ATAPTER_RESOURCES_SHORTAGE here.
2004-09-10 23:44:29 +00:00
enami
5cdda6c35f ath_debug is bitmask and takes much wider value than 0, 1, or 2. 2004-09-07 01:15:59 +00:00
drochner
46289e1fef Phase out the use of a string as first "attach args" member to control
which bustype should be attached with a specific call to config_found()
(from a "mainbus" or a bus bridge).
Do it for isa/eisa/mca and pci/agp for now. These buses all attach to
an mi interface attribute "isabus", "eisabus" etc., and the autoconf
framework now allows to specify an interface attribute on config_found()
and config_search(), which limits the search of matching config data
to these which attach to that specific attribute.
So we basically have to call config_found_ia(..., "foobus", ...) where
such a bus is attached.
As a consequence, where a "mainbus" or alike also attaches other
devices (eg CPUs) which do not attach to a specific attribute yet,
we need at least pass an attribute name (different from "foobus") so
that the foo bus is not found at these places. This made some minor
changes necessary which are not obviously related to the mentioned buses.
2004-08-30 15:05:15 +00:00
kent
4f9d67091a add debug code for ac97_write().
It is enabled by defining AC97_IO_DEBUG.
2004-08-28 07:02:11 +00:00
thorpej
96663f19df Use ANSI function decls, more static. 2004-08-26 18:38:19 +00:00
jkunz
6c6c2be95f Remove race conditions caused by the CPU cache of PA7100 CPUs. 2004-08-26 16:56:07 +00:00
jkunz
1035c6af08 Import STI wscons(4) driver from OpenBSD and add new driver for PS/2
keyboard / mouse pots of LASI.
2004-08-26 16:48:06 +00:00
itohy
1d4f1abb08 Workbit NinjaSCSI-32 PCI/CardBus SCSI driver (njs) 2004-08-26 14:13:46 +00:00
thorpej
8b2ffcedfc Use ANSI function decls and more use of static. 2004-08-24 00:53:28 +00:00
thorpej
45bd8be9fa Protect against multiple inclusion. 2004-08-23 23:17:54 +00:00
thorpej
218dbb60a6 Make some functions referenced only in wdc.c private to that file. 2004-08-21 01:51:46 +00:00
thorpej
335b799580 atastart() (called only at splbio(), and from interrupts) can change
drive_flags, to make sure all drive_flags manipulations are done at
splbio().
2004-08-21 00:28:34 +00:00
thorpej
e975b9caee - Add an (*ata_reset_channel)() member to ata_bustype.
- Add an ata_reset_channel() function that performs the common parts
  of resetting an ATA channel, which uses the (*ata_reset_channel)()
  callback to do the heavy lifting.  Adjust callers to use ata_reset_channel()
  instead of wdc_reset_channel().

This removes the last wdc-specific code from ata.c!
2004-08-20 23:26:53 +00:00
thorpej
56e2a255b5 Move common parts of attaching an ata_channel to a new ata_channel_attach()
function.
2004-08-20 22:17:06 +00:00
thorpej
3234a02f48 Move atabusconfig() to ata.c. 2004-08-20 22:02:40 +00:00
thorpej
2606542c7b - Add an atac_bustype_ata member to atac_softc to hold a pointer to
the ata_bustype for the controller.  Fill it in and use it instead
  of referencing wdc_ata_bustype directly.
- Add an atac_atapibus_attach member to atac_softc to hold a pointer
  to the function that attaches the ATAPI bus for the controller.  Fill
  it in and use it instead of referencing wdc_atapibus_attach directly.
2004-08-20 20:52:31 +00:00
kent
2edd85fb18 Check power states after codec reset. This change fixes a
resume problem on some boards.
Patch provided by Joachim Thiemann in PR kern/26457
2004-08-20 14:36:13 +00:00
thorpej
9cc521a148 Move most of wdc_softc into a new atac_softc structure that contains
info common to all types of ATA controllers.
2004-08-20 06:39:37 +00:00
thorpej
1600c8b8cd - Add and use a CHAN_TO_WDC() macro to get the wdc_softc from an
ata_channel.
- Add and use a CHAN_TO_WDC_REGS() macro to get the wdc_regs from an
  ata_channel.
- Add and use a CHAN_TO_PCIIDE() macro to get the pciide_softc from an
  ata_channel.
- Add and use a CHAN_TO_PCHAN() macro to get the pciide_channel from an
  ata_channel.  (This one just hides a cast, and is really just for
  consistency with the others.)
2004-08-19 23:25:35 +00:00
dyoung
c9108ddfc8 Hubert Feyrer points out that hw.ath.countrycode really ought to
be writeable.  Make hw.ath.outdoor writeable while I am here.
2004-08-18 21:59:39 +00:00
mycroft
5111abd827 Simplify some manipulation of PCIC_INTR.
Further attempt to mitigate "bad Vcc" errors.
2004-08-16 15:46:37 +00:00
mycroft
f0b8d692af Some tweaks, per the PC Card spec:
* Assert RESET before powering off a socket.
* Turn on the output enable bit earlier so the interface actually drives CEn
  and RESET.
* Tighten up the power-on timing a bit.
* Mention the specific timing values named in the spec.

For pccbb, be careful to always power off before zeroing PWRCTL.
2004-08-16 15:40:35 +00:00
thorpej
08fa2a3486 - Split the register handles out of struct wdc_channel into a separate
wdc_regs structure, and array of which (indexed per channel) is pointed
  to by struct wdc_softc.
- Move the resulting wdc_channel structure to atavar.h and rename it to
  ata_channel.  Rename the corresponding flags.
- Add a "ch_ndrive" member to struct ata_channel, which indicates the
  maximum number of drives that can be present on the channel.  For now,
  this is always 2.  Add an ATA_MAXDRIVES constant that places an upper
  limit on this value, also currently 2.
2004-08-14 15:14:35 +00:00
thorpej
4b51cecfc2 - Split the register handles out of struct wdc_channel into a separate
wdc_regs structure, and array of which (indexed per channel) is pointed
  to by struct wdc_softc.
- Move the resulting wdc_channel structure to atavar.h and rename it to
  ata_channel.  Rename the corresponding flags.
- Add a "ch_ndrive" member to struct ata_channel, which indicates the
  maximum number of drives that can be present on the channel.  For now,
  this is always 2.  Add an ATA_MAXDRIVES constant that places an upper
  limit on this value, also currently 2.
2004-08-14 15:08:04 +00:00
tsutsui
d91b03bd13 Use bus_space(9) on news68k.
Update/sort the comment/ifdefs about bus_space-using ports.

XXX which should we use defined(__${MACHINE_CPU}__) or defined(${MACHINE})?
2004-08-13 12:59:20 +00:00
pooka
b151590832 kill "magic" number 2004-08-13 11:25:58 +00:00
mycroft
1d167b13be amd64 also has bus_space... 2004-08-13 10:52:18 +00:00
mycroft
27b5b1440c Remove a really gratuitous 1s delay. 2004-08-13 04:36:08 +00:00
thorpej
46f4277564 WDCDEBUG -> ATADEBUG. 2004-08-13 04:10:49 +00:00
mycroft
c369e5b81c Fix two annoying display glitches with "fast scrolling" and
WSDISPLAY_SCROLLSUPPORT.
2004-08-13 04:03:38 +00:00
thorpej
ab20886f7b Don't bother with bits that tell of the presence of optional callbacks;
just check the function pointers for NULL.
2004-08-13 03:12:59 +00:00
thorpej
577bf67014 Move wdcstart() to ata.c and rename it to atastart(). 2004-08-13 02:16:40 +00:00
thorpej
996c3ca90e Move wdc_exec_xfer() to ata.c and rename it ata_exec_xfer(). 2004-08-13 02:10:43 +00:00
thorpej
e6d61c5bc9 Move wdc_addref() and wdc_delref() to ata.c and rename them to
ata_*.
2004-08-12 22:39:40 +00:00
thorpej
2eaa5c6142 Move wdc_kill_pending() to ata.c and rename it ata_kill_pending(). 2004-08-12 22:33:45 +00:00
thorpej
2600c55e01 - Move wdc_xfer_pool, wdc_get_xfer(), wdc_free_xfer() to ata.c, and rename
to ata_*.
- Use a static initializer for the ata_xfer_pool.
2004-08-12 21:34:52 +00:00
thorpej
52ed169a28 Move wdc_probe_caps() to ata.c and rename it ata_probe_caps(). 2004-08-12 21:10:18 +00:00
thorpej
ac7276784a Move wdc_downgrade_mode() to ata.c and rename it to ata_downgrade_mode(). 2004-08-12 21:05:09 +00:00
thorpej
9939d3c63d Move wdc_print_modes() into ata.c and rename it ata_print_modes(). 2004-08-12 20:59:27 +00:00
mycroft
849d423c4e Whoops. Swap the order of the delref() and the config_pending_decr(). 2004-08-12 14:36:46 +00:00
mycroft
6269226dde Copyright maintenance. 2004-08-12 13:39:38 +00:00
mycroft
768040dd66 Various cleanup:
* Clean up the socket state earlier in the attach process -- not relying on
  the socket attachment to do it.
* Get rid of PCIC_LASTSTATE_HALF.  It's pointless.
* In pcic_wait_ready(), also check for the card vanishing, like in pccbb.
* Assert #RESET before powering up the card, not after.  (I think it was
  actually okay because the value was left as 0 from a previous disable or
  the initial socket attach, but...
* If the card fails to come ready, don't bother reinstating windows or
  anything -- just power it down.
2004-08-12 13:37:40 +00:00
thorpej
9167731c79 Rename some constants:
WDC_COMPLETE -> ATACMD_COMPLETE
WDC_QUEUED -> ATACMD_QUEUED
WDC_TRY_AGAIN -> ATACMD_TRY_AGAIN
2004-08-12 05:02:50 +00:00
thorpej
3ddac9b2da Rename "struct wdc_command" to "struct ata_command". 2004-08-12 04:57:19 +00:00
mycroft
d24f7ca79e Close a race condition in the datain loop. If we receive another byte between
reading the FIFO status and reading the interrupt status, we could end up
leaving it in the FIFO.  Force another round through the loop after reading the
interrupt status until the FIFO reads empty again.

Also, there is no point in having the extra loop to wait for the transfer
command to the controller to be acknowledged, because the transfer loop handles
that just fine -- and getting rid of it fixes another race condition.
2004-08-12 03:39:11 +00:00
mycroft
6741190fbc Make datain_pio and dataout_pio function pointers in wdc_softc, which can
be overridden by the backend if desired.  Add experimental code to wdc_pcmcia
to use this in memory-mapped mode, disabled by default.
2004-08-11 18:41:46 +00:00
mycroft
04a46876e5 Add two helper functions -- wdc_datain_pio() and wdc_dataout_pio() -- which
encapsulate the logic for the various methods of transferring data.  Use these
throughout.
2004-08-11 17:49:27 +00:00
mycroft
c6c0aabf57 Correct the overrun loop while I'm at it. 2004-08-11 14:28:44 +00:00
mycroft
0ef13a458b Recode the datain_pio loop. This improves performance substantially (almost
2x) with my spc@pcmcia.
2004-08-11 14:22:34 +00:00
mycroft
a1d101ba64 Add a settype function.
Nuke address windows earlier in power up sequence.
2004-08-11 06:56:57 +00:00
mycroft
8605b5b9c0 Nuke the address windows earlier, before the socket is powered up. Just in
case there are remnants left behind.
2004-08-11 01:51:41 +00:00
mycroft
51be90e8ac Be more liberal in torching the old state in the disable and settype routines. 2004-08-11 01:04:40 +00:00
mycroft
a23e15bcbe Rather than having a call up from the low-level driver to get the card type,
instead have a call down from the PCMCIA mid-layer to set it.  Use this from
pcmcia_function_enable().  (Currently the policy is the same, but this would
allow for more flexibility in deciding which mode to use.)

Now it is safe to hold the socket enabled during attach, so do that.  Only
one enable/disable cycle to attach a card now!
2004-08-11 00:18:18 +00:00
mycroft
32dee96c25 Hold a reference between atabus_attach() and atabusconfig() to avoid an extra
enable/disable cycle.  Now my CF card attaches a bit faster.

XXX This code is split strangely between files.
2004-08-10 23:09:38 +00:00
mycroft
96221eb572 Constify. 2004-08-10 19:12:25 +00:00
mycroft
4160a45384 For the c400, set 5380 compatibility mode on every pass through the reset
routine.  The PCMCIA attachment, at least, needs this.
2004-08-10 07:00:30 +00:00
mycroft
dc594b03f9 Be robust against the case of the child devices failing to decrement the
refcnt.
2004-08-10 02:40:51 +00:00
dyoung
2bcbb9cb72 IBSS fixes: get IBSS beacon generation right. Merge with a same-SSID,
same-channel IBSS.
2004-08-10 01:03:52 +00:00
dyoung
8abb07d1ac Make the node table into an LRU cache: least-recently used nodes
are at the end of the node queue.  Change the reference-counting
discipline: ni->ni_refcnt indicates how many times net80211 has
granted ni to the driver.  Every node in the table with ni_refcnt=0
is eligible to be garbage-collected.  The mere presence of a node
in the table does not any longer indicate its auth/assoc state;
nodes have a ni_state variable, now.  A sysctl,
net.link.ieee80211.maxnodecache, controls the maximum LRU cache
size.

While I am here, patch ieee80211_find_node_for_beacon to do a "best
match" by bssid/ssid/channel, not a "perfect match."  This keeps
net80211 from caching duplicate nodes in the table.
2004-08-10 00:57:20 +00:00
mycroft
9a46d5ed7d Do an extra read of the IIR during initialization, just to ack any pending
interrupt.
2004-08-09 16:57:14 +00:00
mycroft
4e92489373 Add detach support for spc@pcmcia, modeled after aic@pcmcia. 2004-08-09 14:07:57 +00:00
mycroft
f5eacc00f9 Don't loop forever if a card went away. 2004-08-09 13:52:21 +00:00
mycroft
16ac152cca Do barriers on the ASIC space without touching the NIC space. 2004-08-09 00:26:15 +00:00
mycroft
f0e2cfd7fc Eliminate most 8-bit access. Just the data in/out path remains. 2004-08-09 00:25:33 +00:00
christos
959186b32c disable the quirk on the console so that it can scroll. 2004-08-08 19:21:27 +00:00
mycroft
76344241eb Look in the correct register for the BSR detection value.
Also, do this early, before writing any registers.
2004-08-08 16:20:43 +00:00
yamt
96e7bb0952 ath_init1: return EIO rather than -1 on a failure of ath_hal_reset.
-1 isn't appropriate for if_init.
2004-08-08 13:01:03 +00:00
kent
c525acb34a VT1616i support 2004-08-08 10:41:57 +00:00
kent
824fd59f6d correct the mask value for CMI9739 2004-08-08 03:52:19 +00:00
kent
6f7bcb397d recognize CMI9739 codec. 2004-08-08 03:50:56 +00:00
mycroft
c5b0509d65 Clear the "card type" bit when powering up the socket, to make it more robust
for memory cards.
2004-08-07 20:11:39 +00:00
mycroft
ef638869ae Copy a bug fix from spc. If the target transferred too much, we would return
a bogus residual count.
2004-08-07 20:05:25 +00:00
mycroft
0553444712 Fix a printf() format for Alpha. 2004-08-07 20:04:44 +00:00
mycroft
6742fd43f4 Add Alpha to the list of platforms that use bus_space (for nca@pcmcia). 2004-08-07 20:01:48 +00:00
kent
9e25bf4c82 AD1888 support.
PR kern/25949
2004-08-07 17:37:31 +00:00
mycroft
1afe1f83af Be much more robust with RID values during attach:
* If the device returns a length too short to even contain the RID number,
  flag it as not supported and return EOPNOTSUPP, rather than returning a
  length of -2 and trying to use the value anyway.
* Check the returned lengths to see if we actually got anything.
* If we get no rate list, fail the attach, so we don't just blow up later.
Allow the frontend to pass in a MAC address.
2004-08-07 17:12:44 +00:00
kent
1c7464b5ca recognize ALC655/658/850 2004-08-07 16:59:54 +00:00
tsutsui
f71b2096d2 On manual transfer via TEMP register, data should be read
before asserting ACK.
2004-08-07 07:17:09 +00:00
mycroft
0ba1d7c0e4 Use bpf_mtap2(). 2004-08-06 02:31:25 +00:00
mycroft
ddc97f59ca Put unadulterated dB values in the radiotap header, not the converted dBm
values.
2004-08-05 22:57:32 +00:00
jkunz
2950c906af Attach phy anyway if srom has invalid contents.
Patch sugested by Charles M. Hannum on tech-kern.
2004-08-05 09:07:45 +00:00
bouyer
1f5d4dd9dd Change wdc_kill_pending() to take a struct ata_drive_datas * as argument,
and kill only pending requests for this drive.
Implement a DRIVE_WAITDRAIN flag, which will cause the active command to
be killed once complete.
Other minor fixes.
Now it's possible to detach a ATA or ATAPI device from ioctl even when
a dd on the raw char partition is running.
2004-08-04 22:44:04 +00:00
bouyer
9b0cc941a3 Add
struct ata_xfer *active_xfer
to ata_queue. Now the active xfer isn't the head of the queue any more,
this makes a few things easier (this will also help for tagged queuing
support).
Remove the WDCF_ACTIVE flag, test active_xfer != NULL instead.
clean up wdc_free_xfer() and kill_xfer().
Clean up wdc_reset_channel(), and make it issue a ATAPI_SOFT_RESET if the
active command is ATAPI.
In wdc_atapi_get_params(), use AT_WAIT | AT_POLL for ATAPI_SOFT_RESET,
so that we'll use tsleep() instead of delay().
In wdc_atapi_start(), call wdc_dmawait() at the right place.
2004-08-04 18:24:10 +00:00
dyoung
49dce0aac4 Synchronize with the WEP code in madwifi. Konstantin KABASSANOV
verified for me that this fixes his WEP problems.  The HAL ABI for
WEP had changed.
2004-08-03 20:06:54 +00:00
drochner
a7962d35bd implement device detach support 2004-08-03 18:35:21 +00:00
bouyer
73203a8277 Make it possible for (*dma_finish)() to abort quietly a DMA op. Use this
in wdc_reset_channel().
2004-08-02 22:20:54 +00:00
bouyer
495631e4d6 Clean up interraction between wdc_reset_channel and the kernel thread.
Move kill_xfer() after the reset, and stop the DMA engine if needed
(this will unload the DMA maps).
2004-08-02 22:02:35 +00:00
bouyer
011181ac3e Implement an atabus control device, and define some ATA bus control
IOCTLS. Implement ATABUSIORESET, which will reset the given ATA bus.
2004-08-01 21:40:41 +00:00
bouyer
7ffa35d1a2 Implement asynchronous channel reset.
Use this to reset the channel before doing a dump, instead of the hack in
  wdc_exec_xfer() based on C_POLL. This hack was causing problems on
  controllers with a shared queue, because we now can have C_POLL set during
  concurent channels probes (problem found and analysed on sparc64 by
  Martin Husemann).
This should even make core dumps marginally more reliable on ATA drives.
2004-07-31 21:26:42 +00:00
mrg
5f5ece3320 add several definitions useful for ICH-based speedstep.
(from linux and freebsd.)
2004-07-31 17:28:36 +00:00
jmmv
9a0019380f Implement the replaceattr emulop. 2004-07-30 22:36:39 +00:00
jmmv
1dea55cc2e Fix the eraserows operation, which was using an incorrect value to paint
the background.  The problem was exposed when setting a non-black color
as the background, as the shift did not produce the expected fill value
(for black it worked because 0 is black).
2004-07-30 21:46:01 +00:00
mycroft
85e28ec5ee Only discard beacons in AHDEMO mode, where we ignore management frames
completely.  In particular, accept them in monitor mode (where we generally
aren't doing anything unless we're in promiscuous mode anyway) and host-AP
mode (where we want to see neighbor APs).
2004-07-30 17:40:57 +00:00
jmmv
cda2a3bba1 Fix initialitzation of border color at boot time through the
WSDISPLAY_BORDER_COLOR option, broken by a last-minute change.
Pointed out by xtraeme@.

Also back out the previous change by dogcow@, which was an attempt
to fix kernel builds that didn't define WSDISPLAY_CUSTOM_BORDER;
shouldn't be needed now.  (Problem also introduced by the same
last-minute change; sorry).
2004-07-30 10:47:20 +00:00
dogcow
4ebba2e5cb let kernels that don't have WSDISPLAY_CUSTOM_BORDER compile again. 2004-07-30 07:40:26 +00:00
jmmv
2a08d54a9a Implement border color customization in wscons(4), only available for vga(4)
at the moment.

This includes the addition of two new wsdisplay ioctls, WSDISPLAY_{G,S}BORDER,
one to get the actual color and one to set it, respectively.  Possible colors
match those defined by ANSI (and listed in wsdisplayvar.h).

It also adds two accessops to the underlying graphics device, getborder and
setborder, which mach their ioctl counterparts.

Two kernel options are added: WSDISPLAY_CUSTOM_BORDER, which enables the
ioctls described above (to customize the border color from userland after
boot), and WSDISPLAY_BORDER_COLOR, which sets the color at boot time.
The former is enabled by default on the GENERIC kernel, but not on INSTALL
(among others).  The later is always commented out, leaving the usual black
border as a default.

wsconsctl is modified to allow accessing this value easily.  For example,
'wsconsctl -d -w border=blue'.
2004-07-29 22:29:35 +00:00
jmmv
92f81ea7d3 Implement support to dynamically change wscons console and kernel colors.
Two new ioctls are added to the wsdisplay device, named WSDISPLAY_GMSGATTRS
and WSDISPLAY_SMSGATTRS, used to retrieve the actual values and set them,
respectively (the name, if you are wondering, comes from "message attributes").

A new emulop is added to the underlying display driver (only vga, for now)
which sets the new attribute for the whole screen, without having to clear
it.  This is optional, which means that this also works with other drivers
that don't have this new operation.

Five new kernel options have been added, although only documented in
i386 kernels (for now):
- WSDISPLAY_CUSTOM_OUTPUT, which enables the ioctls described above to
  change the colors dynamically from userland.  This is enabled by default
  in the GENERIC kernel (as well as others) but disabled on all INSTALL*
  kernels (as this feature is useless there).
- WS_DEFAULT_COLATTR, WS_DEFAULT_MONOATTR, WS_DEFAULT_BG and WS_DEFAULT_FG,
  which specify the default colors for the console at boot time.  These have
  the same meaning as the (already existing) WS_KERNEL_* variables.

wsconsctl is modified to add msg.default.{attrs,bg,fg} and
msg.kernel.{attrs,bg,fg} to the display part, so that colors can be changed
after boot.

Tested on NetBSD/i386 with vga (and vga in mono mode), and on NetBSD/mac68k.
No objections in tech-kern@.
2004-07-28 12:34:02 +00:00
dyoung
110ceded85 Finalize import of the Atheros HAL 0.9.9.13, bringing ath(4)
up-to-date where the HAL API changed.
2004-07-28 08:57:40 +00:00
dyoung
6f9ff5e059 Vastly simplify ieee80211_ibss_merge, eliminating the needless
callbacks.  Change the reference IBSS-merge implementation in atw
to match.
2004-07-28 08:12:49 +00:00
dyoung
24fb56e3b4 Cancel scan callout when the device detaches. Pointed out by Todd
Miller.
2004-07-27 23:57:02 +00:00
dyoung
ce488d2bf7 Pull the IBSS merge logic out of atw and into net80211, since ath
will eventually share it.

In the IBSS merge logic, check conditions in a different order so
that they run faster in the common case---no merge.  Fix the
rate-limiting on the debug outputs (enabled by IFF_LINK0).
2004-07-24 23:53:49 +00:00
christos
a3a9698bfd PR/26420: Thilo Manske: lm(4): Add support vor environment controller
built into iTE 8705f
Also: change some memcpy's to strlcpy's and some (0)'s to 0's
2004-07-24 18:59:16 +00:00
dyoung
c743c6b066 Doh, we really do need to set bit ATW_NAR_MM in ATW_NAR, or else
no multicast packets are let through.
2004-07-24 04:59:01 +00:00
dyoung
32dee95c54 Add atw_nar_init, atw_next_scan prototypes (thanks Todd Miller)
and sort prototypes.

In-line atw_tsft.
2004-07-24 01:26:20 +00:00
mycroft
f526e7326b Cleanup of ieee80211_node from madwifi:
* Don't use ifp pointers; use ieee80211com.
* Implement the locking macros that are used under FreeBSD and Linux.
2004-07-23 10:15:13 +00:00
mycroft
64f68f9cf8 Fix mismerge. 2004-07-23 08:36:01 +00:00
mycroft
50d44f4f07 IEEE80211_F_WEPON -> IEEE80211_F_PRIVACY 2004-07-23 08:31:39 +00:00
dyoung
f63e03e538 Instrument atw(4) delays so that I can experiment and shorten the
conservative delays that I derived from the reference driver.
2004-07-23 07:20:44 +00:00
dyoung
571aedf36b Print and store Cardbus/PCI revision number.
Begin conditioning device configuration on revision number.  Four
revisions are known:

        1.1/1.5 -> ADM8211A,
        2.0 -> ADM8211B,
        3.0 -> ADM8211C.

The B and C parts, which are not supported yet, have AP capability.
2004-07-23 07:07:55 +00:00
dyoung
fe366eb669 Fix IBSS merges in atw(4). 2004-07-23 06:57:50 +00:00
dyoung
72cea14142 Use the new SRAM size constants. 2004-07-23 05:06:26 +00:00
dyoung
d27479d86f Improve register definitions and slightly demystify some magic
numbers.
2004-07-23 05:01:29 +00:00
mycroft
8f64992310 Add sc_txstart and sc_txstarted, to keep track of the current FID we want to
start and the number we've started that have not been alloced yet.  Currently
sc_txstarted is constained to 0 or 1 because of the way we start the next
packet, but this will change.
2004-07-22 21:56:58 +00:00
mycroft
5e0a5ea2f8 Copyright maintenance. 2004-07-22 21:31:56 +00:00
mycroft
a1b8647f1e Non-functional changes: add comments, remove a structure name. 2004-07-22 20:39:15 +00:00
mycroft
d9907678ec Change some DELAY(2) to more sensible values. 2004-07-22 20:36:11 +00:00
mycroft
0e8c7f506b Add some histogram code (controlled by an #ifdef) to track how long various
busy-wait loops take.
2004-07-22 20:34:52 +00:00
mycroft
1854f1b055 Keep a count of packets written to the chip but not yet initiated. This
simplifies some logic, and is needed for later changes.
2004-07-22 20:30:43 +00:00
mycroft
04cd0b261d Change some names.
sc_txnext -> sc_txalloc
sc_txcur -> sc_txqueue
2004-07-22 20:25:23 +00:00
mycroft
9df2197095 Keep a count of FIDs allocated, rather than storing a packet length in the
ring.
2004-07-22 20:23:31 +00:00
mycroft
f0d981931c Make the radiotap header reflect the actual transmit rate. 2004-07-22 20:13:20 +00:00
mycroft
f14903982d Ack events in only one place. Reduces register writes sometimes. 2004-07-22 20:12:20 +00:00
mycroft
9951a8362a Only read the part of the frame header we use in wi_tx_intr(). 2004-07-22 20:07:38 +00:00
mycroft
94e3bc2cef Rework the rate-lowering hack:
* Update sc_txpending[] when a packet is written, even before we issue the TX
  command, since it may be active when we issue the TX command for the
  following packet.
* Do not lower the rate in ni_txrate or id_rateidx, because these are used to
  keep track of sc_txpending[], and could cause us to get "stuck" at the lower
  rate.
2004-07-22 20:06:05 +00:00
mycroft
3a862ed4bf Make the logic in wi_write_txrate() less obscure. 2004-07-22 19:56:55 +00:00
mycroft
928d2d1d6b For Intersil firmware, use the ROM rate list to determine the correct bitmask
for BASIC_RATE and SUPPORT_RATE.  Always set these, because otherwise probe
frames will not get the correct list.
2004-07-22 19:55:08 +00:00
mycroft
0d69a42fb3 Missed one change in the previous. Now we really don't try to write it. 2004-07-22 19:51:37 +00:00
mycroft
6f32bd0675 Symbol firmware doesn't support the power management register, so don't try to
do power management there.
2004-07-22 19:50:43 +00:00
mycroft
df9b04fdbb Whoops, change one back to regular "static" for an inline function. 2004-07-22 19:48:28 +00:00
mycroft
91f4c8a166 I hate "static". Add an #ifdef so I can turn it off easily. 2004-07-22 19:47:24 +00:00
mycroft
ff96f8f444 Support promiscuous mode for an AP too(!). 2004-07-22 18:52:44 +00:00
dyoung
a186c80055 Add register definitions for the Airoha AL2210
synthesizer/transceiver/power amplifier.  The ADMtek ADM8211C is
sometimes paired with this chip.  This the first step toward
supporting the ADMtek ADM8211C-based products.
2004-07-21 04:27:16 +00:00
dyoung
ff6b98fc55 Flesh out the register definitions.
Fix the botched RCS Id, $NetBSD -> $NetBSD$.
2004-07-21 04:25:22 +00:00
dyoung
084b007d1b The RSSI field in the Rx descriptor is the unadulterated content
of the DIVCTL/RSSI register on the RF3000 baseband.  Mask all but
the RSSI bits.
2004-07-16 23:13:27 +00:00
dyoung
0f8b8b27c5 Insist that callers use atw_write_sram to copy even-length buffers
to even offsets in the ADM8211 SRAM.

assert->KASSERT
2004-07-15 07:31:05 +00:00
dyoung
3341b62f3e Totally revamp device initialization using clue from the reference
driver.  I also have re-organized the code a lot.
2004-07-15 07:26:17 +00:00
dyoung
9ad89f8c4a Totally revamp device resets using clue from the reference driver. 2004-07-15 07:25:40 +00:00
dyoung
d6014cf055 Make atw_read_srom static. 2004-07-15 07:25:06 +00:00
dyoung
611fc69801 Re-organize, add new, and remove old prototypes. 2004-07-15 07:22:13 +00:00
dyoung
e083028d58 Once again, stop calling the bus front-end's interrupt-acknowledgement
callback.
2004-07-15 07:20:46 +00:00
dyoung
d1b1d2ead4 Totally revamp the way that I program the synthesizer and baseband. 2004-07-15 07:19:46 +00:00
dyoung
3e1b8a977f Take the paranoia out of the code for writing baseband registers. 2004-07-15 07:13:44 +00:00
dyoung
7a7588432a Simplify the Rx filter setup, following the AL981 code in tlp(4). 2004-07-15 07:11:23 +00:00
dyoung
6a35b15406 Countdown correctly to the Target Beacon Transmission Time.
Borrowing an idea from the reference driver, use no 64-bit arithmetic.
2004-07-15 07:10:25 +00:00
dyoung
1146f43c7a In atw_start_beacon, set CAP0 as well as BCNT and CAP1. 2004-07-15 07:01:20 +00:00
dyoung
24e7e4403a Simplify IBSS merge code. 2004-07-15 07:00:43 +00:00
dyoung
1616cd784d Only write the SSID buffer to the ADM8211 SRAM up to the end of
the SSID, not up to the end of the buffer.  Given the (too
conservative?) delays involved, this should save some time when we
join a new network.
2004-07-15 06:53:11 +00:00
dyoung
0404143d84 Change the order in which I write the BSSID registers on the ADM8211,
to match the reference driver.  This probably does not make any
functional difference.
2004-07-15 06:50:34 +00:00
dyoung
81c734b57d Set up the Tx descriptor ring more safely. Fix an endianness bug.
"It's a wonder this ever worked."  (Actually, it's not.)
2004-07-15 06:48:45 +00:00
dyoung
fce6670792 Re-synchronize TSFT after an IBSS merge. 2004-07-15 06:46:08 +00:00
dyoung
6e5f00adc9 Here is the serial bus format for the RF3000. 2004-07-15 06:39:50 +00:00
dyoung
6e8ef3ee56 Delay for tens of milliseconds lot after writing the Network Access
Register.  I am slavishly imitating the reference driver, here.
I will come back and lower the delays later.
2004-07-15 06:38:46 +00:00
dyoung
9bd30b81ae In the transmit interrupt handler, do not unnecessarily synchronize
all the descriptors for a buffer chain.  Just synchronize the last
one, which has the interesting stuff.

I still synchronize all the descriptors for the buffer chain if
super-verbose debugging is enabled, since the driver will print
all the descriptors for the chain.
2004-07-15 06:37:22 +00:00
dyoung
73815df521 Remove a less-than-helpful comment. 2004-07-15 06:34:24 +00:00
dyoung
d7d89cb468 Clamp the length of a received packet, just in case the chip lies. 2004-07-15 06:33:43 +00:00
dyoung
e53ab344b8 When super-verbose debugging is enabled, convert Rx descriptors'
endianness before printing them.
2004-07-15 06:32:42 +00:00
dyoung
630f4475eb Delete some dead code.
Don't call back into the bus-specific code for resets any longer.
It does not seem to be necessary.
2004-07-15 06:31:43 +00:00
dyoung
02c31c63b0 During scans, initialize the BSSID to ff:ff:ff:ff:ff:ff before
sending the first probe request.
2004-07-15 06:30:12 +00:00
dyoung
196e58570e Clear dead code out of atw_clear_sram. 2004-07-15 06:28:37 +00:00
dyoung
769e7e2b01 Don't send data packets until the interface is in state RUN. This
stops ARP and IPv6 Neighbor Discovery packets from trickling out
the interface before it is time.
2004-07-15 06:20:58 +00:00
dyoung
50a1923f1d Simplify receive descriptor setup. 2004-07-15 06:13:44 +00:00
dyoung
8218b1f277 I'm not treating the lost beacon count specially any more. It is
kind of a dumb way to track the link condition, anyway....
2004-07-15 06:06:53 +00:00
dyoung
69529834b9 Rid atw of some dead code and some test instrumentation. 2004-07-15 05:54:13 +00:00
dyoung
5d0bf6495b Refine some register definitions. 2004-07-15 05:46:31 +00:00
dyoung
57e4881b70 In ad hoc mode, don't set the mysterious EA bit in the Network
Access Register.  ADMtek's reference driver does not use it at all,
and it does not seem to make any difference whether I leave it in
or take it out.
2004-07-15 05:43:50 +00:00
petrov
8dc19febed Remove unused variable. 2004-07-09 18:45:56 +00:00
mycroft
0ddcdca775 Kill unused variable. 2004-07-09 02:46:44 +00:00
mycroft
21f7f7a8b0 Remove junk code. 2004-07-09 02:07:01 +00:00
mycroft
591960fb6f Remove some more code. 2004-07-09 02:05:09 +00:00
mycroft
ac7a78d8bb Slight code redux. 2004-07-09 01:13:53 +00:00