Commit Graph

5253 Commits

Author SHA1 Message Date
tsutsui
f8a52a52cb Remove (wrong) function names by pasto from attach failure messages. 2009-05-09 20:42:09 +00:00
tsutsui
8de92473d5 Also check if cache line alignment is power of two in KASSERT(). 2009-05-09 03:54:10 +00:00
tsutsui
42731279ac Use roundup2() macro to calculate cache line aligned offsets of
DMA descriptor members in shared memory.
The previous ones could return wrong values if cache line size is
smaller than structures, and we can assume cache line size is
power of two to avoid division ops.
2009-05-09 03:50:16 +00:00
tsutsui
0eda417b19 Move allocation of DMA shared memory with bus_dma(9) ops
from MD attachments to MI iee_attach().
Tested on HP9000 735/125. Compile test only on ews4800mips.

XXX: more strict bus_dmamap_sync(9) calls are required in various places.
2009-05-09 03:22:20 +00:00
skrll
7ab26758f5 device_t/softc split
struct device * -> device_t
struct cfdata * -> cfdata_t
Use aprint*

There are a couple of MI drivers with MD attachments left.
2009-05-07 15:34:49 +00:00
rjs
4179d32aff Use device_private(). 2009-05-07 13:06:11 +00:00
jdc
c10e3b28bd Add extra counter definitions (pointed out by Geoff Wing). 2009-05-07 06:46:54 +00:00
jdc
6e8d1a982c Check for internal PHY first, so that it always attaches first, even when
we have an MII transeiver attached.
Count all collision and error counters.
Handle counter overflow and RXTERR.

Tested on U60 HME, PCI HME (501-5019) and SBus Sunswift (501-2739)
2009-05-06 20:40:19 +00:00
cegger
6d542a9a5c add KASSERT to identify when PR kern/40734 happens again.
It happened to me twice and to Emmanuel Dreyfus (reported on port-amd64 ML)
2009-05-06 07:27:42 +00:00
tsutsui
1ad413250a Add support for i82596 Rev A chip which doesn't have the enhanced 32 bit
big endian mode:
- add IEE_REV_A flag to indicate if chip support the 32 bit BE mode or not
- add IEE_SWAPA32() macro and use it on necessary 32 bit DMA pointers
- rename IEE_SWAP() macro for the SCP address pointer and statistics
  counters which require word swap even on Rev B/C chips to IEE_SWAP32()
  for clarification
- add comments about these BE mode quirks

Tested on HP9000 735/125 by me and also tested on 715/50 by skrll@
with netbsd-5 branch, and fixes MI part of PR port-hp700/35531.
2009-05-05 15:47:35 +00:00
nonaka
6cb21f59ee Added NE2000 with 8bit bus width support.
reviewd by tsutsui@ at tech-kern ML.
2009-05-05 12:37:24 +00:00
cegger
6a970ea21d device_t/softc split 2009-05-05 09:51:23 +00:00
tsutsui
cf78f721dd Make COM_RING_SIZE configurable by kernel config(5). 2009-05-03 13:52:36 +00:00
tsutsui
8fa3bb31fc Remove unused sc_rev settings (all quirks are handled by sc_quirk)
and merge HWREV cases which have the same quirks.
2009-05-03 13:49:07 +00:00
martin
cb13eee90c Add missing braces - patch from Kurt Lidl in PR port-vax/41314. 2009-05-01 03:18:20 +00:00
tsutsui
f6e36a0172 Pull some changes for newer chips from FreeBSD:
- pull MACSTAT and CMDSTOP quirks for 8168/8111 chips
- always set CPLUSCMD_PCI_MRW on reset
- set VLANSTRIP and RXCSUM_ENB bits on CPLUS register per if_capenable

Tested on 8111C and 8111D by several users, and
no bad side effect on my old 8169S.
2009-04-29 15:10:57 +00:00
tsutsui
9998edcec4 Wrap one more printf() with #ifdef DEBUG, which was missed on rev 1.52. 2009-04-27 14:52:50 +00:00
tsutsui
70dab57692 Always make local functions static. Local symbols are still preserved
on link by ld(1) with -X option on most ports for debug.
2009-04-26 16:17:08 +00:00
cegger
57fb22a89c device_t/softc split 2009-04-26 10:07:48 +00:00
tsutsui
d7ac09b75f - use (uint8_t *) for RX buffer
- remove unnecessary pointer casts
2009-04-26 02:25:57 +00:00
tsutsui
378ce951b9 Use roundup2() macro. 2009-04-25 18:27:39 +00:00
kefren
02190332dd Add power hooks. Proposed a couple of days ago on tech-kern@, no
objections received. Tested on Dell Inspiron 2200 with BCM4318
2009-04-23 20:24:23 +00:00
tsutsui
d779b85d3e Remove extra whitespace added by a stupid tool.
XXX: more in src/sys/arch
2009-04-18 14:58:02 +00:00
tsutsui
25e0185c3d Check revisions and print names of i82551/i82551ER, per Intel manual. 2009-04-17 15:37:43 +00:00
cegger
5f4ec2a0a9 change tlp_attach() to return an error code on failure. 2009-04-17 15:22:35 +00:00
cegger
0cdcfeb162 set dmamap to NULL when bus_dmamap_create() fails to prevent bus_dmamap_destroy to be called with an invalid dmamap in error path. 2009-04-17 15:16:52 +00:00
cegger
c455042514 device_t/softc split. Tested with tlp at pci 2009-04-17 10:20:32 +00:00
cegger
dc79b83a9a struct device * -> device_t
u_intNN_t -> uintNN_t
2009-04-17 08:30:55 +00:00
cegger
bb47f93acf use device_private 2009-04-17 08:19:09 +00:00
cegger
4815538f3f struct device * -> device_t
u_intNN_t -> uintNN_t
2009-04-17 08:04:49 +00:00
tsutsui
a8ca89b280 Some cosmetics in rxcsum code. Tested on i386. 2009-04-16 14:39:11 +00:00
tsutsui
04a4566ade u_intNN_t -> uintNN_t 2009-04-16 14:08:18 +00:00
elad
2d1c968399 Remove a few KAUTH_GENERIC_ISSUSER in favor of more descriptive
alternatives.

Discussed on tech-kern:

	http://mail-index.netbsd.org/tech-kern/2009/04/11/msg004798.html

Input from ad@, christos@, dyoung@, tsutsui@.

Okay ad@.
2009-04-15 20:44:24 +00:00
tsutsui
bd151a8481 Assume an unknown HWREV chip has the same features with the latest one. 2009-04-13 12:38:06 +00:00
tsutsui
b684e4d8b1 Add HWREV of RTL8102EL variant. From FUKAUMI Naoki. 2009-04-13 12:33:05 +00:00
tsutsui
f231bee40e Add HWREV values of RTL8168CP and RTL8168D. From FreeBSD.
XXX: needs more quirk handling after wakeup for newer chips.
2009-04-13 12:28:46 +00:00
dyoung
1de2a73134 Make pcppi(4) detach the "speaker" from attimer(4), so that the
corresponding attimer(4) resource is not perpetually busy: now it
is possible to detach and to reattach pcppi(4).  Make attimer(4)'s
device-detachment hook return EBUSY if pcppi(4) is still attached, so
that pcppi(4) cannot end up with a dangling pointer to attimer(4).
2009-04-07 22:30:09 +00:00
dyoung
336480339e Cosmetic: remove some dead code. 2009-04-07 18:02:04 +00:00
uwe
6a2ffc8f1b Provide pmf(9) hooks that do what dopowerhooks(9) hook does.
XXX: Do NOT call pmf_class_network_register() yet, b/c db8320.c
doesn't provide if_stop method!
2009-04-05 03:37:07 +00:00
dyoung
b783d8bd8c Add the WEP capability to our net80211 capability flags, since we do
sort of support hardware WEP.  Only change the WEP key index in a Tx
descriptor from 0 if the type of our transmit key is _WEP, not _TKIP:
i.e., only if we're really doing WEP crypto in the hardware.

Ignore a watchdog timeout on any Tx ring if we can collect some packets
from that ring.  Restart both the receiver and the transmitter when a
watchdog timeout occurs instead of restarting only the transmitter.
2009-04-02 00:57:20 +00:00
tsutsui
2273829d51 Don't assume all RX packets have VLAN headers even if vlanif is configured.
Instead, always check ether_type and use appropriate offsets to adjust
the hardware RX sum value.

XXX: vlan(4) doesn't seem to use csum_data and csum_flags in mbufs anyway.
2009-03-29 07:33:52 +00:00
tsutsui
0ab04c94e6 Fix another botch in hwcsum changes for PR kern/40955:
8168/8111/8168B/8111B doesn't have DESCV2.

Problem reported by Arto Huusko on current-users@.
2009-03-28 22:16:08 +00:00
dyoung
7377de8f1d Make this build on -current. 2009-03-27 16:10:50 +00:00
tsutsui
030266c11f Check a correct bit for ip4csum-rx. Reported privately on PR kern/40955. 2009-03-27 12:19:17 +00:00
ad
416888aeaa Fix the *third* break to this driver from sloppy device_t conversion. 2009-03-21 19:44:26 +00:00
tsutsui
6c00def18c Add another quirk flag which shows availability of EEPROM command register.
Now we can remove sc_rev which was intended to represent "MAC revision"
used in the Realtek driver.
2009-03-21 10:05:28 +00:00
tsutsui
78a1fca2f2 Add and use a new quirk flag to disable JUMBO MTU,
rather than checking sc_rev values.
2009-03-21 09:18:06 +00:00
tsutsui
200d1adc6c Add hardware checksum support for newer PCIe 8168/8111/8102 chips,
per device info taken from FreeBSD driver.  Tested by snj@ on 8111C.

Should closes PR kern/40955.

Note on old 8169 chips IP hw csum must be enabled to use TCP/UDP hw csums,
but I'm not sure if these newer chips still have the same restriction.
2009-03-21 07:58:30 +00:00
tsutsui
3c5f553e65 Try to avoid zstty hangs on higher speed:
z8530sc.c:
 Check pending interrupts in a loop until all requests are handled.
 The old comments said it would cause horrible latency to sun3x floppy etc,
 but serial ports should have higher priority than disks anyway.

z8530tty.c:
 Don't enable and disable TX interrupts on each transmit start and completion
 because it could cause possible race conditions.
 Instead, set ZSWR0_RESET_TXINT on each TIE interrupt to clear the request
 as other kbd drivers attached at zs(4).

Tested on cobalt, macppc, news68k, sparc, and sun3.
2009-03-20 16:28:57 +00:00
tsutsui
4b2a9ec9d1 Access LDPS register in re_reset() only on 8169S single chip variants.
From OpenBSD and FreeBSD drivers via PR kern/41009, and
Realtek-supplied FreeBSD driver.
2009-03-20 06:31:31 +00:00
cegger
e2cb85904d bcopy -> memcpy 2009-03-18 17:06:41 +00:00
cegger
c363a9cb62 bzero -> memset 2009-03-18 16:00:08 +00:00
cegger
df7f595ecd Ansify function definitions w/o arguments. Generated with sed. 2009-03-18 10:22:21 +00:00
dsl
7cc9af7d64 ANSIfy functions with function-pointer arguments 2009-03-16 23:11:09 +00:00
tsutsui
7a44ef30a5 Pull a fix from hme.c rev 1.73 (to #if 0'ed out part):
> Fix a bug in calculation of checksum deduction:
> - To get 16 bit one's complement value from uint32_t variable,
>   higher 16 bits should be ignored.
> - RFC 1624 describes methods to recalculate checksum field in headers,
>   i.e. one's complement of one's complement sum that could be 0x0000,
>   but we don't have to use the strategy to deduct one's complement sum
>   itself which won't be zero but should be 0xffff.
2009-03-16 12:13:04 +00:00
tsutsui
24a0836984 Fix a bug in calculation of checksum deduction:
- To get 16 bit one's complement value from uint32_t variable,
  higher 16 bits should be ignored.
- RFC 1624 describes methods to recalculate checksum field in headers,
  i.e. one's complement of one's complement sum that could be 0x0000,
  but we don't have to use the strategy to deduct one's complement sum
  itself which won't be zero but should be 0xffff.

Found on debugging mec(4) on sgimips O2.
2009-03-16 12:02:00 +00:00
cegger
05d33dc7bf ansify function definitions 2009-03-16 09:32:38 +00:00
cegger
317b4e018f ansify function definitions 2009-03-15 17:24:43 +00:00
cegger
4b83748ce5 ansify function definitions 2009-03-15 15:52:12 +00:00
tsutsui
8d2f130b12 Tweak comments and conditionals about EXT_RFA and IPCB. 2009-03-15 14:48:11 +00:00
tsutsui
3acfa89d3b Adjust comments about sc_flags. 2009-03-15 14:18:38 +00:00
dsl
82357f6d42 ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
2009-03-14 21:04:01 +00:00
dsl
454af1c0e8 Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
2009-03-14 15:35:58 +00:00
dsl
02cdf4d2c8 Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
2009-03-14 14:45:51 +00:00
tsutsui
b057550bcf u_intNN_t -> uintNN_t 2009-03-11 13:12:41 +00:00
tsutsui
567ce9e6ef Computed checksum value by the FXPF_82559_RXCSUM feature includes data
in IP headers, so we have to deduct not only IP option headers but all
IP headers.  But in TCP/UDP layer we can assume the IP header is valid
and a sum of the IP header part should be 0xffff, so we don't have to
bother to deduct it from the computed checksum.
2009-03-09 10:33:33 +00:00
tsutsui
a8ba219be8 Replace incorrect local ether_cmp() function with memcmp(9)
on checking multicast addresses, which is not so critical.
Noticed by FUKAUMI Naoki.
2009-03-07 16:46:25 +00:00
tsutsui
cf97a4b35d Add TCPv4/UDPv4 RX hardware checksum support for i82559 and later chips
which don't have EXT_RFA and IPCB support. From hme(4) driver and
FreeBSD's fxp(4). Tested on i82559.

XXX: Probably we should have a common function to parse RX packet headers
XXX: to handle a raw checksum value and share it among hme(4) and gem(4) etc.
2009-03-07 15:03:25 +00:00
tsutsui
ee11921a7a Add an `else' missed in rev 1.49 otherwise RX hardware checksum on hme(4)
is not activated at all. Ok'ed by christos@, tested on macppc.
2009-03-07 00:12:36 +00:00
hauke
f971ff9cd3 Workaround from jmcneill for a panic at shutdown.
Fixes PR kern/40947 and should be pulled up to netbsd-5.
2009-03-06 17:10:41 +00:00
tsutsui
26c579d9c4 Use FXPF_EXT_RFA flag instead of FXPF_EXT_TXCB to see IPCB capability
because EXT_RFA for RX cksum is always available with IPCB for TX cksum
but i82558 and i82559 have only EXT_TXCB without IPCB.

Tested on the following fxp cards:
fxp0 at pci0 dev 14 function 0: Intel i82557 Ethernet, rev 2
fxp0 at pci0 dev 14 function 0: i82559 Ethernet, rev 8
fxp0 at pci0 dev 14 function 0: i82550 Ethernet, rev 12
2009-03-04 10:15:08 +00:00
cube
102a4f0ad3 I smell rotting code. (Give a chance to the user to at least set the flags
of the interface, if not use it because it otherwise doesn't work.)
2009-02-23 00:05:44 +00:00
mrg
ce8a6e2599 - remove FXPF_IPCB flag. it should always/only be used with the code
conditional on FXPF_EXT_TXCB, so, replace all uses with that
- for the pci frontend, reestablish some flags lost the the prior
  changes and simplify one of the cases

this fixes PR 40677 and may fix PR 40431.
2009-02-20 05:49:34 +00:00
jmcneill
dc02b079e4 Remove vesafb-specific hacks. 2009-02-19 00:39:25 +00:00
mlelstv
c94f3d9355 Don't release CCB twice. Found by code inspection. 2009-02-16 18:05:19 +00:00
bouyer
73920b4161 More printf format fixes. 2009-02-13 23:31:23 +00:00
bouyer
c54134b00b When an error is reported on a write, data may have been transfered
to the device's cache anyway and so cmdh_prdbc reports a completed
transfer. If we use it to update ata_bio->bcount this has 2 conseqences:
- the automatic LBA48 workaround doesn't qick in because bcount is used
  to compute the last sector of the transfer (wd(4) part of kern/40569)
- wd(4) will report a B_ERROR buffer with a b_resid of 0, which panics
  a DIAGNOSTIC kernel
Fix by ignoring cmdh_prdbc if we had a write with errors, and in this case
leave ata_bio->bcount at its initial value.

While there use NOERROR instead of 0 for ata_bio->error (cosmetic).

thanks to Matthias Scheler for tests.
2009-02-12 11:44:11 +00:00
rumble
0e95582ed1 WD33C93 has only two registers, which often times aren't mapped to adjacent
bus space locations. Map them individually, instead.
2009-02-12 06:24:45 +00:00
rumble
4ef2271e2d If sc_dmamode is set to SBIC_CTL_NO_DMA, then actually don't do DMA. Now
PIO mode actually works.
2009-02-12 06:20:58 +00:00
dyoung
613d59f38b Define some bitfields that come from a reference driver. 2009-02-06 02:02:26 +00:00
tsutsui
191f7dda19 - u_int8_t -> uint8_t
- use ANSI function decls
2009-02-02 15:59:20 +00:00
bouyer
c768d4a900 One more device_t/softc split fallout (a missing device_private()). 2009-01-29 12:14:40 +00:00
bouyer
9b761cfd2a As ic_ident is from 2 to ICP_NCCBS + 2, we need more than just ICP_NCCBS
sense structures in icp_scr map; otherwise we'll compute an offset past the
allocated memory (and past the end of the dmap map) from the ic_ident.
To be safe use ICP_NCCB_RESERVE instead of 2; as I'm not sure why
ICP_NCCB_RESERVE is 4.
2009-01-29 12:13:30 +00:00
sborrill
25201bad1e Correct PHY types (5 is LP, _not_ N). 2009-01-28 14:49:10 +00:00
tsutsui
398fb3fdca - use device_t and cfdata_t
- rename variables for readability after device_t/softc split
- use proper pointer types

No binary changes.
2009-01-27 11:26:15 +00:00
bjh21
11aab16b02 Split device_t from wd33c93_softc. Reviewed by cube; tested on sgimips
by tsutsui.
2009-01-25 15:23:42 +00:00
bjh21
1cd868fdf2 The introduction of config_stdsubmatch() lost an important feature of
upc_submatch() whereby it made sure that the correct driver attached.
Since this didn't really belong in the submatch function anyway,
reintroduce it in the match functions for upc's children.

This allows my A5000 to find at least one of its hard disks.
2009-01-25 14:34:14 +00:00
christos
bf9ab82c0e Make this compile &foo[0] does not work for void * :-) Wojciech Galazka 2009-01-23 19:49:16 +00:00
bjh21
ce80665a62 Convert more printfs to aprint_* and use the latter more consistently. 2009-01-20 20:57:26 +00:00
mrg
71e27a6efb The PCI revision numbers are unique to a PCI vendor/product
ID pair.  Misuse of the revision numbers was causing some of the chip
features to be disabled on some integrated Intel chips.  So, move the
determination of the features into the bus frontend, where the
vendor/product ID is known.  (Note: sc_rev should be removed.  The
microcode patch stuff is also busted and needs to be fixed.)  Also,
poll the actual flow control status in inphy, rather than making
assumptions.

contributed anonymously.
2009-01-18 10:37:03 +00:00
mhitch
23a9d45ee2 When checking drive status, bump the pointer to the previous status
rather than using just drive 0 status.  Another drive with a different
status would cause the previous status state to flip-flop and repeatedly
output state change messages.
2009-01-16 05:40:50 +00:00
mhitch
258f66824c Another missed part of the device_t/softc split. Fixes ld(4) devices
on mlx(4) controller.
2009-01-16 04:20:28 +00:00
yamt
70de973662 g/c BUFQ_FOO() macros and use bufq_foo() directly. 2009-01-13 13:33:58 +00:00
cegger
c288f70f98 use new exported constants from net80211.
no functional change.
2009-01-10 13:03:19 +00:00
cegger
13175d24c8 BCM4328 has MAC rev 12.
XXX Driver now tells me, this chip has unsupported PHY type 4.
2009-01-10 12:57:50 +00:00
macallan
d6ded78b71 Fix previous screwup.
This is the real bwi driver.
Ported by Taylor R. Campbell
2009-01-09 20:49:42 +00:00
macallan
c83792f07e A driver for Broadcom BCM4302 wlan controllers, otherwise known as
Airport Extreme.
Ported from Dragonfly and OpenBSD by Urban Boquist
2009-01-09 19:50:24 +00:00
yamt
b1fea83762 remove extra semicolons. 2009-01-03 03:43:21 +00:00
cegger
dcf705893e use M_ZERO on malloc() and remove subsequent bzero(). 2008-12-19 18:49:37 +00:00
cegger
9b87d582bd kill MALLOC and FREE macros. 2008-12-17 20:51:31 +00:00
christos
9a5d3f2817 replace bitmask_snprintf(9) with snprintb(3) 2008-12-16 22:35:21 +00:00
tsutsui
3eda3c7d85 Revert part of previous that reverted part of rev 1.14
which didn't affect the bug. (use __func__ to print function names)
2008-12-13 17:32:53 +00:00
alc
a4c7f1185e Doh! What should have happened happens ...
Restore the check to see if the chip does MIC correctly when
WME is turned on. Btw, define IEEE80211_C_WME_TKIPMIC and fix build :/
2008-12-11 06:04:01 +00:00
alc
5d561f943e Sync ath(4) with the new HAL, mostly based on <jmcneill>'s patches.
Everything should be fine again !
2008-12-11 05:45:29 +00:00
kenh
95793981bc The wrong sense of the UIP register is used to test for a pending clock
update; this test is now correct.

mc146818_settime_ymdhms has been refactored to simply stop clock updates
while the time is being set.  Based on FreeBSD code and macros in
mc146868reg.h.
2008-12-11 00:17:21 +00:00
tsutsui
5352126149 Sync with src/sys/arch/amiga/dev/siop.c rev 1.59:
> Deal with unrecognized SCSI message byte - restart script to clear the
> ACK.  No longer hangs the driver when an unhandled message byte is seen.
2008-12-09 14:11:11 +00:00
pooka
37e35e961c Warn about large struct on stack in comment. 2008-12-08 11:23:39 +00:00
alc
8c6c22b7f1 Add support for a 8168C/8111C revision
- also disable jumbo frame on this adapter following the FreeBSD driver
 - merge redundant call to aprint_error_dev
2008-12-08 03:24:08 +00:00
tsutsui
48640c6ca2 Wrap long lines. 2008-12-05 11:17:38 +00:00
tsutsui
f345c7c20a Don't pass uint8_t values to le16toh() in fxp_rx_hwcksum().
fxp(4)'s RX hwcksum results weren't used at all on big endian machines.

Checked by i82550 and vmstat -ev on macppc GENERIC kernel with
options INET_CSUM_COUNTERS,TCP_CSUM_COUNTERS,UDP_CSUM_COUNTERS.
2008-12-04 16:40:47 +00:00
tsutsui
0ef29d0844 Add a missed htole32() on the previous ip4csum-tx bug workaround. 2008-12-04 16:32:34 +00:00
tsutsui
2377d7c38d Sort Tx/Rx macro in previous. 2008-12-04 15:22:01 +00:00
ad
20d9c21a59 PR kern/40099 device_t/softc split broke cac(4)/ld(4): panic: iostat_unbusy 2008-12-04 11:48:14 +00:00
tsutsui
69a8a901bb Fix typo in comment. 2008-12-03 15:36:11 +00:00
tsutsui
540babdae2 Add a workaround for hardware ip4csum-tx bug and enable it.
Confirmed on i82550 rev 12 and UDP fragment packets by ttcp(1).
2008-12-03 15:34:38 +00:00
tsutsui
e6ada93fc6 Call BUS_DMASYNC_PREREAD more strictly on polling DMA descriptors. 2008-12-03 14:21:15 +00:00
bouyer
99f68f2ca2 cpu_intr_p() doesn't account for software interrupts (e.g. callouts) so
we can't use it here. Rssurect ATACH_TH_RUN, backing out
src/sys/dev/ata/ata.c 1.101
src/sys/dev/ata/ata_wdc.c 1.90
src/sys/dev/ata/atavar.h 1.77
src/sys/dev/ic/wdc.c 1.255
src/sys/dev/scsipi/atapi_wdc.c 1.108
Should fix kern/39927 and kern/39725.
2008-11-16 19:31:21 +00:00
phx
3e7e644efc Added missing #include <net/if_ether.h> for ether_ioctl(). 2008-11-12 21:15:49 +00:00
ad
0efea177e3 Remove LKMs and switch to the module framework, pass 1.
Proposed on tech-kern@.
2008-11-12 12:35:50 +00:00
dyoung
de87fe677d *** Summary ***
When a link-layer address changes (e.g., ifconfig ex0 link
02🇩🇪ad:be:ef:02 active), send a gratuitous ARP and/or a Neighbor
Advertisement to update the network-/link-layer address bindings
on our LAN peers.

Refuse a change of ethernet address to the address 00:00:00:00:00:00
or to any multicast/broadcast address.  (Thanks matt@.)

Reorder ifnet ioctl operations so that driver ioctls may inherit
the functions of their "class"---ether_ioctl(), fddi_ioctl(), et
cetera---and the class ioctls may inherit from the generic ioctl,
ifioctl_common(), but both driver- and class-ioctls may override
the generic behavior.  Make network drivers share more code.

Distinguish a "factory" link-layer address from others for the
purposes of both protecting that address from deletion and computing
EUI64.

Return consistent, appropriate error codes from network drivers.

Improve readability.  KNF.

*** Details ***

In if_attach(), always initialize the interface ioctl routine,
ifnet->if_ioctl, if the driver has not already initialized it.
Delete if_ioctl == NULL tests everywhere else, because it cannot
happen.

In the ioctl routines of network interfaces, inherit common ioctl
behaviors by calling either ifioctl_common() or whichever ioctl
routine is appropriate for the class of interface---e.g., ether_ioctl()
for ethernets.

Stop (ab)using SIOCSIFADDR and start to use SIOCINITIFADDR.  In
the user->kernel interface, SIOCSIFADDR's argument was an ifreq,
but on the protocol->ifnet interface, SIOCSIFADDR's argument was
an ifaddr.  That was confusing, and it would work against me as I
make it possible for a network interface to overload most ioctls.
On the protocol->ifnet interface, replace SIOCSIFADDR with
SIOCINITIFADDR.  In ifioctl(), return EPERM if userland tries to
invoke SIOCINITIFADDR.

In ifioctl(), give the interface the first shot at handling most
interface ioctls, and give the protocol the second shot, instead
of the other way around. Finally, let compatibility code (COMPAT_OSOCK)
take a shot.

Pull device initialization out of switch statements under
SIOCINITIFADDR.  For example, pull ..._init() out of any switch
statement that looks like this:

        switch (...->sa_family) {
        case ...:
                ..._init();
                ...
                break;
        ...
        default:
                ..._init();
                ...
                break;
        }

Rewrite many if-else clauses that handle all permutations of IFF_UP
and IFF_RUNNING to use a switch statement,

        switch (x & (IFF_UP|IFF_RUNNING)) {
        case 0:
                ...
                break;
        case IFF_RUNNING:
                ...
                break;
        case IFF_UP:
                ...
                break;
        case IFF_UP|IFF_RUNNING:
                ...
                break;
        }

unifdef lots of code containing #ifdef FreeBSD, #ifdef NetBSD, and
#ifdef SIOCSIFMTU, especially in fwip(4) and in ndis(4).

In ipw(4), remove an if_set_sadl() call that is out of place.

In nfe(4), reuse the jumbo MTU logic in ether_ioctl().

Let ethernets register a callback for setting h/w state such as
promiscuous mode and the multicast filter in accord with a change
in the if_flags: ether_set_ifflags_cb() registers a callback that
returns ENETRESET if the caller should reset the ethernet by calling
if_init(), 0 on success, != 0 on failure.  Pull common code from
ex(4), gem(4), nfe(4), sip(4), tlp(4), vge(4) into ether_ioctl(),
and register if_flags callbacks for those drivers.

Return ENOTTY instead of EINVAL for inappropriate ioctls.  In
zyd(4), use ENXIO instead of ENOTTY to indicate that the device is
not any longer attached.

Add to if_set_sadl() a boolean 'factory' argument that indicates
whether a link-layer address was assigned by the factory or some
other source.  In a comment, recommend using the factory address
for generating an EUI64, and update in6_get_hw_ifid() to prefer a
factory address to any other link-layer address.

Add a routing message, RTM_LLINFO_UPD, that tells protocols to
update the binding of network-layer addresses to link-layer addresses.
Implement this message in IPv4 and IPv6 by sending a gratuitous
ARP or a neighbor advertisement, respectively.  Generate RTM_LLINFO_UPD
messages on a change of an interface's link-layer address.

In ether_ioctl(), do not let SIOCALIFADDR set a link-layer address
that is broadcast/multicast or equal to 00:00:00:00:00:00.

Make ether_ioctl() call ifioctl_common() to handle ioctls that it
does not understand.

In gif(4), initialize if_softc and use it, instead of assuming that
the gif_softc and ifp overlap.

Let ifioctl_common() handle SIOCGIFADDR.

Sprinkle rtcache_invariants(), which checks on DIAGNOSTIC kernels
that certain invariants on a struct route are satisfied.

In agr(4), rewrite agr_ioctl_filter() to be a bit more explicit
about the ioctls that we do not allow on an agr(4) member interface.

bzero -> memset.  Delete unnecessary casts to void *.  Use
sockaddr_in_init() and sockaddr_in6_init().  Compare pointers with
NULL instead of "testing truth".  Replace some instances of (type
*)0 with NULL.  Change some K&R prototypes to ANSI C, and join
lines.
2008-11-07 00:20:01 +00:00
matt
17996c3ca8 Simplify NOERS case. Revert most changes back to 1.283. 2008-10-25 17:50:29 +00:00
tsutsui
9cb64a72eb Fix a botch in an FIFO check for 16650. 2008-10-25 15:21:57 +00:00
he
833cc988ed Replace a "type" with "sc->sc_type" to make this build again for cobalt
(and I'm sure a few others as well).
2008-10-25 10:05:43 +00:00
matt
f759cc96ec Add support for 16550 chips without an Enhanced Register Set. 2008-10-24 04:43:08 +00:00
bouyer
3e37931111 Change mfi_mgmt() to take a mfi_ccb and scsipi_xfer as argument, as
mfi_scsi_io does. Do not tsleep in mfi_mgmt waiting for completion;
let the caller handle it. If mfi_mgmt() is called with a non-NULL scsipi_xfer
have mfi_mgmt_done() wake it up, else wake up the mfi_ccb.
mfi_poll()/mfi_post() is up to the caller.

mfi_scsipi_request(): handle SCSI_SYNCHRONIZE_CACHE_10 as we do for other
commmands: have mfi_mgmt() fill in the ccb, queue of poll the ccb and
return.

Introduce mfi_mgmt_internal() which behaves like mfi_mgmt() did (tsleep
waiting for completion). Use it for internal and ioctl management
requests.

Fix kern/39297 from Greg Oster (mfi calls tsleep() from mfi_intr()),
tested by Mark Davies.
2008-10-23 21:00:06 +00:00
jmcneill
48100f10e4 Calculate maxdispoffset rather than hard-coding it. Fixes scrolling in
80x25 mode.

XXX This doesn't handle odd modes like 80x30 on 640x480, but the driver
didn't allow that selection previously so at least it's an improvement
over the previous behaviour.
2008-10-19 17:47:38 +00:00
jmcneill
0215b24d60 vga_cnattach: calling wsdisplay_screentype_pick with a NULL type will
select the first entry in the list, which overrides the selected screen
type. Only call it a second time if the original selection is invalid.
2008-10-19 17:20:38 +00:00
bouyer
b54b5daec9 kern/39757 from mishka@:
Bump CISS_MAX_CDB from 12 to 16 bytes. For volumes larger than 2TB,
the scsipi layer will have to use 16 bytes SCSI commands, which would be
rejected by ciss. The cdb buffer already 16 bytes long, and a look at the
FreeBSD driver shows there's no reasons to limit SCSI commands to 12 bytes.
2008-10-18 18:53:20 +00:00
pgoyette
54a63b92b0 Fix up the bus-independant probe code. Patch from njoly@ 2008-10-13 12:44:46 +00:00
pgoyette
eacec974a3 Add an i2c attachment for the LM78 family of temp sensor/fan control
Tested by Martin Husemann
2008-10-12 13:17:28 +00:00
bouyer
473d83f87f Make sure the adapter is ready to accept FISs before bringing the PHY up.
Wait for the BSY bit to clear in the status register.
Makes the cdrom drive probe properly on a ATI SB600 controller in AHCI
mode.
2008-10-03 13:02:08 +00:00
bouyer
2887906e27 Kill ATACH_TH_RUN and use cpu_intr_p() instead. 2008-10-02 21:05:17 +00:00
sborrill
85b692fb65 Add support for >2TB arrays and implement raw I/O mode which is a
requirement for this.

N.B. Still to do - move dump on ld to 64-bit disk addresses
2008-10-02 08:21:57 +00:00
jdc
102e2c2e6b Read the correct error status register on SBus cards.
Don't set infinite burst on SBus cards.
Changes based on information in the `Sbus GEM Specification':
  http://mediacast.sun.com/users/Barton808/media/gem_sbus-1.pdf

SBus-based GEM cards (i.e. Sun X1140A) now work!
Tested with a X1140A card in a U1 and in a U2.
Thanks for martin@ for testing.
2008-09-15 19:50:28 +00:00
jdc
4bd69c5b5b Minor corrections to the SBus definitions, from the `Sbus GEM Specification':
http://mediacast.sun.com/users/Barton808/media/gem_sbus-1.pdf
2008-09-15 19:43:24 +00:00
jakllsch
1630e9c193 A few cleanups for siisata(4)
No functional changes intended (except maybe un-reseting the chip a bit later
in attach).

 - pass fewer arguments to local functions where arguments can be derived from
   an existing argument
 - some coding style fixes
 - more abstraction for PRB activation and deactivation
 - bus_dma(9) properification in error cases
 - undefine SIISATA_DEBUG, and cleanup variables used only for DEBUG_PRINT()s
2008-09-14 21:53:49 +00:00
tron
362b2f2b14 Complete device_t/softc split for the ld(4) attachments. This should
prevent crashes while attaching a drive.

Patch supplied by Juan RP in PR kern/39468.
2008-09-09 12:45:39 +00:00
gmcgarry
0de5da9678 Replace most gcc-specific __attribute__ uses with BSD-style sys/cdef.h
preprocessor macros.
2008-09-08 23:36:53 +00:00
he
7f923d38fb Adopt a fix from OpenBSD, revision 1.30 in their CVS repository.
To paraphrase:
  Some ciss(4) firmwares use different physical drive addressing, resulting
  in bioctl(8) functions not being available.
Tested on both types of controller.
2008-09-04 19:03:14 +00:00
mhitch
baf8265fa5 Limit the number of luns to 1, since the SCSI device ciss(4) presents
doesn't appear to luns and later controllers would respond to probe
requests for luns > 0.
2008-09-04 16:47:04 +00:00
rjs
59e0539a4a Make it work again for platforms that can do single byte operations.
Fix to PR kern/38757.
2008-09-03 20:36:24 +00:00
christos
91ca465c78 device_t changes, pmf, minor knf. 2008-08-27 05:33:47 +00:00
tsutsui
70350ebf56 Fix typo in comment. 2008-08-23 15:46:47 +00:00
tnn
7ebba3a956 Add support for the Realtek 8102E/8102EL PCIe 10/100 Ethernet devices.
From FreeBSD.
2008-08-23 14:27:45 +00:00
simonb
82bb1c2ff8 Add a flags argument to the ld(4) flush handlers, and call these with a
"poll" flag when called from ld_shutdown().

This is the infrastructure part of kern/38655 - in itself it doesn't
fix the panic referenced in that PR.

XXX: At least ld_twa.c and perhaps ld_iop.c and ld_icp.c need to
check for this new poll flag and do something useful.
2008-08-11 06:43:37 +00:00
dillo
7767511f21 Increase delay after channel reset from 100ms to 500ms, suggested by bouyer.
Fixes unreliable drive detection on NVIDIA MCP67.
2008-08-01 17:41:54 +00:00
ws
f83cc7d5ab Calling fxp_init within the interrupt handler results in
a hang (continuous assertion of FXP_SCB_STATACK_RNR).
Instead do it in the ioctl routine after receiving a
signal from the interrupt handler.
2008-07-31 12:28:28 +00:00
christos
aa389c698d Use more timespecs internally. From Alexander Shishkin and me.
Welcome to 4.99.70, 30 more to go for 100.
2008-07-15 16:18:08 +00:00
matt
cfd3ec1da9 Remove OMAP gunk in com_activate, it's not needed.
Spotted by Matthias Drochner.
2008-07-14 15:40:55 +00:00
joerg
bcdf6fccac - device/softc split 2008-07-09 20:07:19 +00:00
joerg
52c17c8946 - device/softc split for ath(4) 2008-07-09 19:47:23 +00:00
joerg
2f3ebaa053 - device/softc split 2008-07-09 19:08:44 +00:00
joerg
85f9c6ce1a - device/softc split for fxp(4) 2008-07-09 17:07:28 +00:00
tsutsui
163f9db0b9 Split device_t/softc with misc cosmetic changes. 2008-07-06 14:32:56 +00:00
tsutsui
bc6f8d1486 Split device_t/softc with misc cosmetic changes. 2008-07-06 13:29:50 +00:00
drochner
363285ca02 split device/softc (tested with an@pcmcia) 2008-07-03 18:10:07 +00:00
plunky
c4df96ad44 change licence of my old code to two-clause BSD licence
remove my name from advertising list
2008-07-02 10:16:20 +00:00
perry
10cfc49bff __FUNCTION__ -> __func__ 2008-06-30 00:46:41 +00:00
gmcgarry
7085b9f922 Array range designated initializers are a gcc extension. Replace with
explicit initialization with zeros, although it probably isn't necessary.
2008-06-24 10:57:45 +00:00
gmcgarry
7bb601e861 Rearrange pdq_boolean_t, pdq_type_t and pdq_state_t so that enums are defined
before their typedefs and prototypes.  Fixes compilation with pcc.
2008-06-24 10:12:06 +00:00
gmcgarry
cb3e0547b7 Change gcc variadic macros to c99 variadic macros. 2008-06-24 10:09:24 +00:00
gmcgarry
7d3d745b26 status is unsigned. 2008-06-24 10:08:43 +00:00
gmcgarry
1a58d52748 Fix prototype of ahd_send_async(). Pull in dev/ic/aic7xxx_cam.h to get ac_code. 2008-06-24 10:07:40 +00:00
he
bc897d8e45 Typo correction to restore buildability. 2008-06-17 16:27:30 +00:00
dyoung
fac54884d4 Repair a discrepancy between the 802.11 standard and ath(4) operation
where transmit fragmentation is concerned.

Extract from ath_tx_start() the code for subtracting padding from
the packet length, creating subroutine deduct_pad_bytes().  Note
that the arithmetic in deduct_pad_bytes() is suspicious.

Use deduct_pad_bytes() to repair the computation of the 802.11
Duration field for fragments.  The computation used to leave out
the FCS, among other things.

Some discrepancies between ath(4) operation and the standard may
still remain.  According to my observations, the gaps between
transmitted fragments may be approximately 8 microseconds too long.
2008-06-17 02:01:58 +00:00
nonaka
84993899e8 fix compile failure. 2008-06-15 13:42:03 +00:00
mjf
7e2a8aea3b Automatically detect the amount of installed RAM by reading the memory
bank registers from the PCI host bridge. Previously the RAM size was
hardcoded to 64MB.

Also fill out ibm82660reg.h with more definitions from the PowerPC to
PCI Bridge and Memory Controller User's Manual.

Many thanks to Tim Rightnour for helping with this patch.
2008-06-14 12:01:28 +00:00
cegger
1c5d6ce502 use device_lookup_private to get softc 2008-06-12 22:30:30 +00:00
dyoung
5614135da2 Elaborate on a comment. 2008-06-12 20:42:10 +00:00
cegger
669c3672ce - use device_lookup_private to get softc
- ansify
2008-06-11 20:33:12 +00:00
drochner
5e7d2c641f don't use cfdriver_t->cd_devs directly 2008-06-11 16:09:16 +00:00
kiyohara
c3b43ec571 Support use PCI Clock(SF_CHIP_USEPCIC). We can set the value "use_pciclock"
by prop_dictionary_set_bool().
2008-06-11 02:09:16 +00:00
cegger
fc8fd752ef device_private(device_lookup()) -> device_lookup_private()
ok cube@
2008-06-10 22:53:08 +00:00
tsutsui
1f459d82b5 Replace device_lookup() with device_lookup_private() on getting softc
for future device_t/softc spilt.
2008-06-08 12:43:51 +00:00
bouyer
36a9122525 For ATAPI, in addition to storing the short sense, report a SCSI_CHECK
condition, to that the scsipi layer will issue a request sense.
2008-06-07 12:56:57 +00:00
dyoung
b9a1c75c4b Fix typo in comment. 2008-06-06 17:39:56 +00:00
drochner
54ccefda99 Reduce polling of the keyboard controller status by a factor of 1000.
While on real hardware hardware a poll cycle takes time in the
microsecond order of magnitude, a "legacy-free" system which emulates
the KBC in BIOS code takes milliseconds -- I'm seeing a multi-minute
delay in booting where the KBC is probed. So poll less and use delay()
to compensate so that the total wait time stays about the same.
2008-06-04 16:29:14 +00:00
mrg
c2b95373bf remove clause #3 from my license where there are no other
copyright holders involved.
2008-05-29 14:51:25 +00:00
mhitch
72715a9ae8 Add bio(4) support, heavily from OpenBSD. The driver doesn't know which
physical drives belong to which logical drive, so all the physical drives
will show up for logical drive 0, and also appear for logical drives that
are rebuilding so that the rebuild state will show the physical drive
being rebuilt.  Locking for the scratch buffer is currently missing - system
quickly quits responding when I try to lock the buffer with mutex_{enter,exit}().
2008-05-25 20:08:34 +00:00
ad
5e4b324300 Properly fix the "hanging in tty" bug that was worked around with cv_wakeup()
some time again.
2008-05-25 19:22:21 +00:00
chs
56f22e2d1f include uvm/uvm_extern.h for trunc_page() on sparc
(where the page size isn't a compile-time constant).
2008-05-25 16:21:54 +00:00
jnemeth
3f1ee498b5 Import siisata(4) by Jonathan A. Kollasch.
The siisata driver supports the Silicon Image SteelVine family of SATA-II
     controllers, interfacing the hardware with the ata(4) and atapi(4) sub-
     systems.

     The following controllers are supported by the siisata driver:

           Silicon Image SiI3124 4-port PCI/PCI-X
           Silicon Image SiI3132 2-port PCI-Express x1
           Silicon Image SiI3531 1-port PCI-Express x1

     SATA Native Command Queueing is not yet supported.
     Device hot swapping is not yet supported.
     Silicon Image's Software RAID is not yet supported by the
             ataraid(4) driver.

Approved by: core (christos), releng (bouyer)
2008-05-23 21:11:40 +00:00
hauke
215d0dd444 Fix NetBSD version tag. 2008-05-23 10:46:10 +00:00
hauke
f5ede5dc2e Added driver for the Creative Systems Inc. Hurdler CPI parallel printer card.
Timecounter support for the Z8536 counters A + B is not complete, yet.

Reviewed by Martin Husemann.
2008-05-22 19:49:43 +00:00
dyoung
d825f046e4 Remove some #ifdef __FreeBSD__ code. 2008-05-16 22:11:51 +00:00
tsutsui
b87210fa51 Normalize my licenses. 2008-05-14 13:29:27 +00:00
christos
5b61e403a2 don't play with timevals directly, use the macros. From OpenBSD 2008-05-13 22:16:27 +00:00
ad
107b551a56 Include machine/cputypes.h explicitly. 2008-05-11 14:25:48 +00:00
mjacob
9ce916ad92 Make fc scratch acquisition something that can fail. Remove in_intr flag.
Otherwise synchronize with changes made due to other platforms.
2008-05-11 02:08:11 +00:00
martin
d6c07702bb Years in license are four digits 2008-05-10 11:52:20 +00:00
bouyer
a868052c66 Wait 100ms after we resseting the PHY and found that a device is preent.
Some device seems to need a bit of delay before being ready to accept a
command (such as my SATA cdrom drive)  May fix port-i386/38548.
As a bonus this makes the dmesg output prettier, by not mixing PHY
status with ATA/ATAPI probe.
2008-05-07 13:52:12 +00:00
jdc
fd15456f57 Correct Sbus register definitions. 2008-05-07 06:36:48 +00:00
jdc
cde723377a Add some Sbus-specific definitions (more registers and more values in the
Sbus Config register).
2008-05-06 21:09:34 +00:00
tsutsui
2925cedf26 - use RTK_IDR[0-5] registers to get MAC address on RTL8168C
- change sc_rev numbers to match quirk numbers used in Realtek's driver
- tweak some register definitions
Taken from Realtek's FreeBSD driver.

Untested yet on 8168C, but no bad sideeffect on older chips.
2008-05-06 11:45:00 +00:00
jmcneill
729313d52c Use 2-clause license. 2008-05-05 00:12:49 +00:00
rumble
6d44774c77 If a device transmit timeout occurs and sc_txintrperiod is greater than
one, throttle it down before the reset. This way the user need not know
the magic `hw.ath0.txintrperiod=1' fix if the default value is too high
for their machine.
2008-05-04 20:02:06 +00:00
martin
637bc2e71d Move TNF licenses to 2 clause form 2008-05-04 19:43:05 +00:00
xtraeme
dd178c786e mii_dev is a device_t now. 2008-05-04 17:14:41 +00:00
xtraeme
7db0e57765 device_t/softc split for all mii(4) devices, and other related
cosmetic changes.
2008-05-04 17:06:09 +00:00
xtraeme
db484efd57 device_t/softc split for spic(4) and other related cosmetic changes. 2008-05-04 16:13:35 +00:00