Commit Graph

14931 Commits

Author SHA1 Message Date
Gleb Smirnoff
f67dea8260 Add device IDs for Linksys PCMPC200 Cardbus card.
PR:		kern/75582
Submitted by:	Gary Palmer
2006-06-07 12:26:23 +00:00
Pyun YongHyeon
ad25ff2b43 Fix watchdog timeout errors seen on a few systems.
SK-NET GENESIS document says reading SK_ISSR should stop generating
further interrupts(Since we drop a driver lock before invoking
ifp->if_input handler we should disable interrupts in ISR in order
to protect integrity of softc from subsequent interrupts). But it
seems that there is possibility of loosing interrupts between
reading SK_ISSR and determining which interrupts are reported.
To cope with the situation we continuously read SK_ISSR register
until there are no interrupts. However, it seems that the above
work around doesn't fix all cases. To protect watchdog handler
from triggering false alarm add a work around code which try to
reclaim pending Tx descriptors before resetting hardware. This
should fix occasional watchdog timeout errors seen on this driver.

Reported by:	Frank Behrens <frank AT pinky dot sax dot de >
Tested by:	Frank Behrens <frank AT pinky dot sax dot de >
2006-06-07 09:05:20 +00:00
Yoshihiro Takahashi
d6da5e88de Use the acpi_event_sleep_button_sleep() function instead of
the acpi_SetSleepState().

Submitted by:	njl
2006-06-06 15:20:06 +00:00
Pawel Jakub Dawidek
7a61da9984 Handle errors in the same way it is done in safe(4). 2006-06-06 13:58:12 +00:00
Pawel Jakub Dawidek
e8e715f669 Don't increase hst_obytes field twice - it is already done at the begining
of the function.
It was wrong anyway, because we also support uio's structures, not only
mbufs.
2006-06-06 13:32:26 +00:00
Gleb Smirnoff
9297f2a72e The procedure of raceless switching between polling mode and
taskqueued interrupt mode is going to be quite complex. Since
the polling mode is considered legacy feature for em(4) driver,
the decision is made to make polling and new interrupt handler
mutually exclusive, selected at compile time.

If kernel is compiled with DEVICE_POLLING, the fast taskqueued
interrupt handler code is disabled and the em_poll() and legacy
em_intr() functions are enabled. Otherwise, legacy functions
are disabled and only em_intr_fast() code is compiled.

Discussed with:		scottl
2006-06-06 08:03:49 +00:00
Tai-hwa Liang
334ee2771b Really fix the typo this time: it should be sc->sc_drvbpf to be verified,
not ic->ic_drvbpf.
2006-06-05 23:06:03 +00:00
Tai-hwa Liang
edc428baef Fixing a typo in rev1.196. 2006-06-05 22:59:14 +00:00
Matt Jacob
fcd9a16b1f Do some source && comment cleanup.
Clean out the abortive start to homegrown, per-mpt,
Domain Validation. This should really be done at a
higher level.

Use the PIM_SEQSCAN flag for U320- this seems to correct
cases of being unable to consistently negotiate U320 in
the cases where I'd seen this before.

Between this and other recent checkins, this driver is
pretty close to being ready for MFC.

Reviewed by:	scottl, ken, scsi@
MFC after:	1 week
2006-06-05 22:25:49 +00:00
Max Khon
3da2dc0763 Fix kernel panic in rt2661_tx_intr() if no frames has been sent.
Obtained from:	OpenBSD (sys/dev/ic/rt2661.c rev. 1.15)
2006-06-05 20:06:29 +00:00
Christian Brueffer
9522f75aea Add altq(4) support.
Reviewed by:	mlaier
Approved by:	rwatson (mentor)
MFC after:	2 weeks
2006-06-05 17:59:46 +00:00
Sam Leffler
f9fc583f17 move hal bus+tag externalization to the bus glue code where it belongs;
this is a noop on all current freebsd architectures

MFC after:	1 month
2006-06-05 17:51:20 +00:00
Marius Strobl
3a225e0b62 Revert the part of rev. 1.3 which changed the software style to be
set to ILACC rather than PCnet-PCI as VMware doesn't implement ILACC
compatibility, resulting in the VMware virtual machine to crash if
enabled. Add a comment regarding usage of ILACC vs. PCnet-PCI mode.

Reported and tested by:	gnn, wsalamon
2006-06-05 15:14:14 +00:00
Ian Dowse
c62502d1f6 Fix a number of cases where ugen would panic, especially when the
device went away while open or if you tried to change the config
number while devices were open. Based on the patch from the PR with
a number of changes as discussed with the submitter.

PR:		usb/97271
Submitted by:	Anish Mistry
2006-06-05 14:44:39 +00:00
Yoshihiro Takahashi
14ecccda0e Add Fn+F7 hotkey (suspend) support.
Tested by:	nork
2006-06-05 11:55:20 +00:00
Pawel Jakub Dawidek
f34a967b01 Use newly added functions to simplify the code. 2006-06-04 22:17:25 +00:00
Pawel Jakub Dawidek
1dc8d404ae Use defines from cryptodev.h. 2006-06-04 15:00:52 +00:00
Pawel Jakub Dawidek
082a4bab02 - Remove HMAC_BLOCK_LEN, it serves no purpose.
- Use defines of used algorithm instead of HMAC_BLOCK_LEN.
2006-06-04 14:49:34 +00:00
Ian Dowse
a48ddf5b85 Add a sleep lock that protects access to sequences of blocking
axe_cmd() calls. Without this the device can get confused if multiple
threads attempt these operations concurrently. The problem was
easily reproducible by running "ifconfig axe0" in a loop because
eventually it would conflict with axe_tick_task().

A similar approach is probably required in all USB ethernet drivers.
2006-06-04 14:42:38 +00:00
Pawel Jakub Dawidek
9a2f606177 Add support for the CRD_F_KEY_EXPLICIT flag for both encryption and
authentication operations.

Unfortunately I've no hardware, so I only compiled-tested it.
2006-06-04 14:14:35 +00:00
Pawel Jakub Dawidek
7028164944 Add support for the CRD_F_KEY_EXPLICIT flag for both encryption and
authentication operations.
2006-06-04 14:13:17 +00:00
Pawel Jakub Dawidek
3a5e30eaaf Don't forget to destroy the sc_freeqlock mutex on detach. 2006-06-04 13:45:04 +00:00
Nate Lawson
c73930f3d6 Clean up many of the debugging messages and move them under bootverbose.
Move the code for printing timer statistics into a test function instead of
an ifdef (accessible via the debug.acpi.hpet_test tunable).  Also use defines
for register offsets instead of magic values.

Courtesy of:	slow flight to HK
2006-06-04 08:04:19 +00:00
Warner Losh
f99cc4ad59 We don't have a ISA specific shutdown routine at this time, so remove
it.  We just moved it to be pci specific, so this was causing compile
problems (linking problems, so I didn't notice since I unwisely just
built the module).
2006-06-03 21:10:50 +00:00
Warner Losh
5a535f681f Since we turn off the interrupts, we don't need to disestablish
our ISR.
2006-06-03 21:05:36 +00:00
John Baldwin
1e2e70b1d6 - Switch on the full 32-bit device ID to avoid collisions between the
vendor-specific device ids across vendors.
- Include the revision in the dc_devs[] array instead of special casing
  the revid handling in dc_devtype().
- Use PCI bus accessors to read registers instead of pci_read_config()
  where possible.
- Use an 8-bit write to update the latency timer.
- Use PCIR_xxx constants and remove unused DC_xxx related to standard
  PCI config registers.

MFC after:	1 week
2006-06-03 20:41:55 +00:00
John Baldwin
344823993b Use PCI bus accessors rather than reading config registers directly to
get the subvendor device id.
2006-06-03 20:37:56 +00:00
Warner Losh
7490082f08 Move shutdown, and pci specific methods into pccbb_pci.c. Many more
are needed still.
2006-06-03 19:16:45 +00:00
Warner Losh
fc7119a71e The interrupt routine is pci specific. Move it into pccbb_pci.c. 2006-06-03 19:07:16 +00:00
Warner Losh
7dcc4efb74 Fix a couple printf's to be properly terminated.
Use a better name for the cbb thread.
2006-06-03 18:58:48 +00:00
Warner Losh
083f44a5a1 Succeed for writing bus value... nobody that calls must care :-( 2006-06-03 18:57:28 +00:00
Ian Dowse
3b63ffa20c Allow zero-length read/write operations to get through to the
hardware. Also set both the read and write timeouts from the
USB_SET_TIMEOUT ioctl.
2006-06-03 10:37:42 +00:00
Matt Jacob
9b58ff9636 allow this to compile cleanly under RELENG_4 2006-06-03 07:19:44 +00:00
Sam Leffler
ff046a6c6b add missed calls to bpf_peers_present 2006-06-02 23:14:40 +00:00
Christian S.J. Peron
16d878cc99 Fix the following bpf(4) race condition which can result in a panic:
(1) bpf peer attaches to interface netif0
	(2) Packet is received by netif0
	(3) ifp->if_bpf pointer is checked and handed off to bpf
	(4) bpf peer detaches from netif0 resulting in ifp->if_bpf being
	    initialized to NULL.
	(5) ifp->if_bpf is dereferenced by bpf machinery
	(6) Kaboom

This race condition likely explains the various different kernel panics
reported around sending SIGINT to tcpdump or dhclient processes. But really
this race can result in kernel panics anywhere you have frequent bpf attach
and detach operations with high packet per second load.

Summary of changes:

- Remove the bpf interface's "driverp" member
- When we attach bpf interfaces, we now set the ifp->if_bpf member to the
  bpf interface structure. Once this is done, ifp->if_bpf should never be
  NULL. [1]
- Introduce bpf_peers_present function, an inline operation which will do
  a lockless read bpf peer list associated with the interface. It should
  be noted that the bpf code will pickup the bpf_interface lock before adding
  or removing bpf peers. This should serialize the access to the bpf descriptor
  list, removing the race.
- Expose the bpf_if structure in bpf.h so that the bpf_peers_present function
  can use it. This also removes the struct bpf_if; hack that was there.
- Adjust all consumers of the raw if_bpf structure to use bpf_peers_present

Now what happens is:

	(1) Packet is received by netif0
	(2) Check to see if bpf descriptor list is empty
	(3) Pickup the bpf interface lock
	(4) Hand packet off to process

From the attach/detach side:

	(1) Pickup the bpf interface lock
	(2) Add/remove from bpf descriptor list

Now that we are storing the bpf interface structure with the ifnet, there is
is no need to walk the bpf interface list to locate the correct bpf interface.
We now simply look up the interface, and initialize the pointer. This has a
nice side effect of changing a bpf interface attach operation from O(N) (where
N is the number of bpf interfaces), to O(1).

[1] From now on, we can no longer check ifp->if_bpf to tell us whether or
    not we have any bpf peers that might be interested in receiving packets.

In collaboration with:	sam@
MFC after:	1 month
2006-06-02 19:59:33 +00:00
Matt Jacob
6dea56bafc Make the code able to compile again in RELENG_4. 2006-06-02 19:23:12 +00:00
Matt Jacob
5580ce963e More checkpointing on the way toward really (finally)
fixing speed negotiation.

Also fix the mpt_execute_req function to actually
match mpt_execute_req_a64. This may explain why
i386 users were having more grief.
2006-06-02 18:50:39 +00:00
Warner Losh
32b35e59a3 Zero out the devices when they are deleted. We can access the pointer after
the bus detaches which can lead to core dumps.  This is quite rare.
2006-06-02 06:33:35 +00:00
Matt Jacob
866fcf84ba Fix missing update to reflect change in scsi_inquiry data structure. 2006-05-31 14:33:23 +00:00
Matt Jacob
5a4c2d0e02 Pick reasonable alignment constraints so that we
don't ask too much of bus_dmamem_alloc/malloc.

Replace the device_printf calls in the memalloc
function mpt_prt.
2006-05-31 00:35:44 +00:00
Warner Losh
8cb2906936 Add a define for the Standard SD Host Controller Base Peripheral. 2006-05-30 21:36:12 +00:00
Jung-uk Kim
08945e887f Move SiS 760 to where it belongs.
PR:		98094
Submitted by:	Mike M < mmcgus at yahoo dot com >
2006-05-30 18:41:26 +00:00
Matt Jacob
6b5ec766e9 Don't set CAM_DEV_QFRZN when we get an ABORT_TASK. Just
by itself, this makes no sense.
2006-05-30 17:43:04 +00:00
Poul-Henning Kamp
77dfeead45 Fix various typos and brainos in last commit.
Submmited by:	Andrew Turner <andrew@fubar.geek.nz>
2006-05-30 07:56:57 +00:00
Paul Saab
f83695f5e9 Spin until a request structure is available in the ioctl path. 2006-05-30 06:42:02 +00:00
Matt Jacob
ec5fe39d39 Add acknowledgements to LSI-Logic for support 2006-05-29 20:34:28 +00:00
Matt Jacob
800d362b5d + Change some debug messages to MPT_PRT_NEGOTIATE level (so we
can see the results of SPI negotiation w/o being overwhelmed
with other crap).

+ For U320 devices, check against both Settings *and* DV flags before
deciding whether we need to skip actual SPI settings for a device.

+ Go back to creating a 'physical disk' side of a raid/passthru bus that
is limited to the number of maximum physical disks. Actually, this isn't
probably *quite* right yet for one RAID volume, and if we ever end up
with finding a device that supports more than one RAID volume (not likely),
it probably won't quite be right either.

The problem here is that the creating of this 'physical' passthru sim is
just a cheap way to leverage off the CAM midlayer to do our negotiation
for us on the subentities that make up a RAID volume. It almost causes
more trouble than it is worth because we have to remember which side
we're talking to in terms of forming commands and which target ids are
real and so on. Bleah.

+ Skip trying to actually do SPI settings for the RAID volumes on the
real side of the raid/passthru bus pair- this just confuses the issue.
The underlying real physical devices will have the negotiation performed
and the Raid volume will inherit the resultant settings. At the sime time,
non-RAID devices can be on the same real bus, so *do* perform negotiations
with them.

+ At the end of doing all of the settings twiddling, *ahem*, remember to
go update the settings on the card itself (dunno how this got nuked).

At this point, negotiations *seem* to be being done (again) correctly for
both RAID volumes and their subentities. And they seem to be *mostly*
now right for other non-RAID entities on the same bus (I ended up with
3 out of 8 other disks still at narror/async- haven't the slightest
idea why yes).

Finally, negotiations on a normal bus seem to work (again).

There's still more work coming into this area, but we're in the
final stretch.
2006-05-29 20:30:40 +00:00
Matt Jacob
a0e4c26aae Add a mpt_is_raid_volume function which will tell you whether
the passed target id is one of the RAID VolumeID. This result
is used to decide whether to try and do actual SPI negotiations
on the real side of the raid/passthru bus pair. The reason we
check this is that we can have both RAID volumes and real devices
on the same bus.
2006-05-29 20:20:45 +00:00
Matt Jacob
ac219b98bd Add a MPT_PRT_NEGOTIATION print level. 2006-05-29 20:15:29 +00:00
Ruslan Ermilov
2916c293b6 Fix build with -Wundef. 2006-05-29 17:37:41 +00:00