Commit Graph

16442 Commits

Author SHA1 Message Date
Ariff Abdullah
bba4862c64 Last major commit and updates for RELENG_7:
- Rework the entire pcm_channel structure:
  * Remove rarely used link placeholder, instead, make each pcm_channel
    as head/link of each own/each other. Unlock - Lock sequence due to
    sleep malloc has been reduced.
  * Implement "busy" queue which will contain list of busy/active
    channels. This greatly reduce locking contention for example while
    servicing interrupt for hardware with many channels or when virtual
    channels reach its 256 peak channels.

- So I heard you like v chan ... O RLY?
  Welcome to Virtual **Record** Channels (vrec, rec vchans, vchans for
  recording, Rec-Chan, you decide), the ultimate solutions for your
  nagging O_RDWR full-duplex wannabe (note: flash plugins) monopolizing
  single record channel causing EBUSY.  Vrec works exactly like Vchans
  (or, should I rename it to "Vplay" :) , except that it operates on the
  opposite direction (recording). Up to 256 vrecs (like vchans) are
  possible.

  Notes:
   * Relocate dev.pcm.%d.{vchans,vchanformat,vchanrate} to each of its
     respective node/direction:
       dev.pcm.%d.play.* for "play"   (cdev = dsp%d.vp%d)
       dev.pcm.%d.rec.*  for "record" (cdev = dsp%d.vr%d)
   * Don't expect that it will magically give you ability to split
     "recording source" (eg: 1 channel for cdrom, 1 channel for mic,
     etc). Just admit that you only have a *single* recording source /
     channel. Please bug your hardware vendor instead :)

- Bump maxautovchans from 4 to 16. For a full-fledged multimedia
  desktop/workstation with too many soundservers installed (esound,
  artsd, jackd, pulse/polypaudio, ding-dong pling plong mudkip fuh fuh,
  etc), 4 seems inadequate. There will be no memory penalty here, since
  virtual channels are allocate only by demand.

- Nuke/Rework the entire statically created cdev entries. Everything is
  clonable through snd own clone manager which designed to withstand many
  kind of abusive devfs droids such as:
      * while : ; do /bin/test -e /dev/dsp ; done
      * jot 16777216 0 | while read x ; do ls /dev/dsp0.$x ; done
      * hundreds (could be thousands) concurrent threads/process opening
	"/dev/dsp" (previously, this might result EBUSY even with just
	3 contesting threads/procs).
  o Reusable clone objects (instead of creating new one like there's no
    tomorrow) after certain expiration deadline. The clone allocator will
    decide whether to reuse, share, or creating new clone.
  o Automatic garbage collector.

- Dynamic unit magic allocator. Maximum attached soundcards can be tuned
  using tunable "hw.snd.maxunit" (Default to 512). Minimum is 16, and
  maximum is 2048.

- ..other fixes, mostly related to concurrency issues.

joel@ will do the manpage updates on sound(4).

Have fun.
2007-05-31 18:43:33 +00:00
Ariff Abdullah
f03f99e35f Last major commit and updates for RELENG_7:
Add few new files. The _real_ commit will follow shortly, so fasten
up your seatbelts, sit back and enjoy the ride..
2007-05-31 18:35:24 +00:00
Konstantin Belousov
9e223287c0 Revert UF_OPENING workaround for CURRENT.
Change the VOP_OPEN(), vn_open() vnode operation and d_fdopen() cdev operation
argument from being file descriptor index into the pointer to struct file.

Proposed and reviewed by:	jhb
Reviewed by:	daichi (unionfs)
Approved by:	re (kensmith)
2007-05-31 11:51:53 +00:00
Takanori Watanabe
345a0942e9 Use ACPICA defined value for notification rather than locally defined one. 2007-05-31 08:49:51 +00:00
Nate Lawson
e727574190 Remove "acpi_bus_number: can't get _ADR" message. It usually appears as
we traverse \_SB and \ in the namespace, which won't have _ADR anyway.
Use a proper extern instead of our own private copy.

MFC after:	1 week
2007-05-31 00:52:32 +00:00
Jack F Vogel
46dc55b582 A few small but significant fixes:
- Coverity Prevent(tm) CID 1906 a bogus use of bzero where unneeded.
 - ICH8 systems autoneg to 100 rather than 1000, this can also be
   seen in 82573, the logic was backwards.
 - On new 82575 quadports half duplex tx speed is slow... this was due
   to overwriting TCTL reg rather than adding bits.
2007-05-30 23:32:21 +00:00
Ariff Abdullah
4257f25c06 Don't rely on pcm_channel index numbering while doing sequential channel
allocation.
2007-05-30 16:15:01 +00:00
Kevin Lo
f1928b0cc9 Remove the volatile qualifier to apply to fxp_miibus_readreg(). 2007-05-30 03:46:04 +00:00
Warner Losh
965f1e2a4a Add more devices from the hps tree. These appear to have come from
OpenBSD's if_ral.c.

I didn't make the LINKSYS4 -> CISCOLINKSYS name change, nor did I
include the RALINK RT2573 that's supported by the rum(4) driver.  I
didn't merge any code changes either.
2007-05-29 20:05:13 +00:00
Sam Leffler
58769f5837 Drain task q items when transitioning to INIT state; this closes a
race seen on smp laptops when suspending where the rx task can be
entered after the interface is detach'd.

NB: use of taskqueue_drain while holding the softc mutex is problematic

Submitted by:	ambrisko
MFC after:	1 month
2007-05-29 16:13:59 +00:00
Robert Watson
97cd541437 Where I previously removed calls to kdb_enter(), now remove include of
kdb.h.

Pointed out by:	bde
2007-05-29 11:28:28 +00:00
Kip Macy
cebf6b9f64 Fix case of setting OACTIVE erroneously 2007-05-29 04:18:21 +00:00
Kip Macy
f0a542f819 Fix interrupt setup for the non-MSI-X case 2007-05-29 03:13:53 +00:00
Kip Macy
10faa56870 When building cxgb as a module make include paths relative to the driver's root.
This will make it possible to build the module out of tree against an older src tree.

MFC after: 3 days
2007-05-28 22:57:27 +00:00
Robert Watson
5e6868f3d4 Don't save SYSCTL_ADD_*() results in a local variable just to throw them
away; preserve the ones that are needed for further calls in the init
function and ignore the rest entirely.

Found with:	Coverity Prevent(tm)
CID:		563
2007-05-28 18:20:15 +00:00
Ariff Abdullah
2ba5e1edcc - Enable soft pcm volume flag early to ensure it not being clobbered
by the subsequent mix_setdevs() and friends.
- Minor style(9) declaration arrangement nit.

Requested by:	joeld
Submitted by:	pluknet <pluknet@gmail.com>
2007-05-28 16:22:07 +00:00
Ariff Abdullah
832345319a Fix broken "rec" and "igain" introduced by previous commit. Convert
reg to a full blown int since there's not much gain compacting it,
and we do need its signess.
2007-05-28 14:09:06 +00:00
Hidetoshi Shimokawa
3080596e7f We should better ignore a break on gdb port if gdb is not enabled. 2007-05-28 02:20:40 +00:00
Kip Macy
04ad339002 Tuning for small packet handling
- Double the number of descriptors that a single call to send can use
- Quadruple the number of descriptors that can be reclaimed per pass
- only run reclaim twice per second
- increase coalesce timer from 3.5us to 5us

fix printf warning on 64-bit platforms
2007-05-27 22:07:47 +00:00
Kip Macy
5dfb4c0b24 Don't bind queue to cpus if only one queue is in use 2007-05-27 22:04:30 +00:00
Robert Watson
e1e8f51b85 Universally adopt most conventional spelling of acquire. 2007-05-27 20:50:23 +00:00
Ariff Abdullah
79462204f1 Fix broken binary issues with latest gcc 4.x due to bitfield signess
mishaps for emu10k1 [1] and few other places.

Reported/Submitted/Tested by:	Ed Schouten <ed@fxq.nl> [1]
2007-05-27 20:12:51 +00:00
Joel Dahl
ccb43d8d2c Bring in a bunch of bug fixes and some code to support more chipsets.
Neither me nor Ariff have access to any of this hardware, so all tests
have been made by Konstantin and Artem.  Commit message mostly written
by Konstantin.

envy24:
- Add test code to support rear line-in input on 'Terratec DMX 6fire'
  audio card.  This code is also intended to be used in the future for
  support of cards, that have I2C-to-GPIO expanders wired between the
  control line of the audio codec and the Envy24, however such cards
  are too complex and i can't add that support without hardware sample
  of such board, i've already tried and failed.

envy24ht:
- Add support for 'AudioTrak Prodigy HD2'.
- Add support for 'AudioTrak Prodigy 7.1 XT'.
- Add support for 'ESI Juli@' (Works ok, DAC volume is hard-coded for
  the time being, so 'mixer vol ...' doesn't work, only 'mixer pcm
  ...' works). [1]
- Fix bug in the init data for M-Audio Revolution 5.1, that
  results in distorted sound.
- Add software volume control (now 'mixer pcm' works, thanks to Ariff).
- Add support for more samples rates - 176.4kHz and 192kHz.
- Fix problem with the 192kHz samples rate playback when 24.576MHz
  crystal is used on the board instead of 49.152MHz crystal.

spicds:
- Add support for Asahi Kasei flagship DAC - AK4396 (used in AudioTrak
  Prodigy HD2).

Submitted by:	Konstantin Dimitrov <kosio.dimitrov@gmail.com>
Tested by:	Artem Antonov [1]
Reviewed by:	ariff
2007-05-27 19:58:39 +00:00
Robert Watson
d53c5a8872 Rather than repeatedly setting and discarding local variable 'o' based
on the return values of various run-time sysctl additions, just ignore
the return value.

Found with:	Coverity Prevent(tm)
CID:		562
2007-05-27 18:54:58 +00:00
Hidetoshi Shimokawa
db72757973 Change default value of hw.firewire.dcons_crom.force_console to 0
for least astonishment.

MFC after: 3 days
2007-05-27 14:00:34 +00:00
Hidetoshi Shimokawa
207bcebe4b Make compile without GDB option.
MFC after: 3 days
2007-05-27 13:58:43 +00:00
Robert Watson
f0dde538b0 Rather than entering DDB with the message "unexpected error" and wedging
the card, panic explicitly if EN_DEBUG is enabled.  In the (default)
case of !EN_DEBUG, the driver resets the card.  Probably this case
shouldn't exist at all.
2007-05-27 12:45:05 +00:00
Sam Leffler
ee7d684055 silence some compiler complaints 2007-05-27 05:38:44 +00:00
Kip Macy
077ff26cbc fix compile warning by removing redundant LOG_ERR define 2007-05-27 04:39:29 +00:00
Kip Macy
b2dda71e61 set IFF_OACTIVE to avoid hangs when the tx ring fills up 2007-05-27 04:39:07 +00:00
Warner Losh
14eced725c A careful reading of the disclaimer that is required to download the
SD Simplified specification, as well as other SD and SDIO
implemenations I've examined, suggest this disclaimer may be required.
It is unclear to me exactly what the license would be for, or why it
might be required.  Err on the side of caution and include this
disclaimer so anybody deploying this code can judge for themselves.  I
have no further unformation about the details.
2007-05-26 05:23:36 +00:00
Andrew Gallatin
a0394e33a5 - Use m_getcl() rather than m_getjcl() when we're allocating 2KB
clusters.  This helps quite a bit on my low end machines (improves
performance by about 300Kpps when being blasted by a hardware
packet generator).
- Include one extended f/w counter forgotten in earlier commit

Sponsored by: Myricom Inc.
2007-05-25 19:38:32 +00:00
Kip Macy
d1b41c9b16 add missed header 2007-05-25 18:29:17 +00:00
Kip Macy
dbda4d7734 update license headers 2007-05-25 16:42:25 +00:00
Kip Macy
5e51a65917 add toe device header missed by previous commit 2007-05-25 16:17:59 +00:00
Xin LI
77a20b72ef Make the comparsion more obvious. 2007-05-25 13:13:12 +00:00
Kip Macy
d722cab49a (MFp4)
- upgrade to reflect state of 1.0.0.86
        - move from firmware rev 3.2 to 4.0.0
        - import driver bits for offload functionality
	- remove binary distribution clause from top level files as it
	  runs counter to the intent of purely supporting the hardware

MFC after: 3 days
2007-05-25 09:48:20 +00:00
Nate Lawson
93bfd059fd Add a sysctl, 'debug.acpi.suspend_bounce', that causes the system to bounce
back in a simulated resume instead of entering the requested suspend state.
This helps in testing drivers separately from the acpi suspend code.  To
test your drivers, set debug.acpi.suspend_bounce=1 and then run
acpiconf -s3 (or 4).

MFC after:	1 day
2007-05-25 05:26:21 +00:00
Hidetoshi Shimokawa
10f39c7d37 Include stand.h for loader.
MFC after: 3 days
2007-05-25 05:00:39 +00:00
Jack F Vogel
8a4787401a Fix for PR 112937, thanks to Ruslan Ermilov. I am still
a bit confused how the 'link flap' was connected to the
'get' rather than 'set' address, but this seems the right
thing to do here.
2007-05-24 18:11:11 +00:00
Jack F Vogel
ca2a8b584f Two minor fixes, keep old 82542 from using jumbo frames, and add
missing htole64 in encap code.

Reviewed by:Pdeuskar
Approved by:Pdeuskar
2007-05-23 20:41:20 +00:00
Andrew Gallatin
c792928f01 Add support for "hardware" vlan tag insertion & removal emulation
in the mxge driver so as to be able to do checksum offload
on vlans.  This is good enough to achieve 10GbE line rate on vlans.
2007-05-23 16:25:40 +00:00
Andrew Gallatin
bd82bbb145 Fix a typo in pcib_alloc_msi{x} which resulted in the
device's, not the bridge's, softc to be used to check the
PCIB_DISABLE_MSI flag.  This resulted in randomly allowing
or denying MSI interrupts based on whatever value the driver
happened to store at sizeof(device_t) bytes into its softc.

I noticed this when I stopped getting MSI interrupts
after slighly re-arranging mxge's softc yesterday.
2007-05-23 15:31:00 +00:00
Jung-uk Kim
e629eb82ba Remove an empty line. 2007-05-22 20:24:07 +00:00
Jung-uk Kim
0f89fde22c Remove BCM5704S specific tunable (hw.bge.fake_autoneg) and
auto-detect the condition.
2007-05-22 19:35:34 +00:00
Jung-uk Kim
186f842beb Rearrange DMA read/write control register settings based on document snippet
provided by davidch via glebius.

PR:		kern/96806
2007-05-22 19:22:58 +00:00
Jung-uk Kim
410c2bebd2 Remove stale alpha support code. 2007-05-22 19:11:39 +00:00
Jung-uk Kim
d5d2385773 Fix time out check in EEPROM read and move delays to give some settle time.
Submitted by:	mjacob
2007-05-22 18:51:05 +00:00
Jung-uk Kim
ca0ba1d16f Add delays in MI communication register R/W loops. 2007-05-22 18:16:23 +00:00
Andrew Gallatin
adae7080fb mxge cleanups:
- Remove code to use the special wc_fifo.  It has been disabled by default
  in our other drivers as it actually slows down transmit by a small amount

- Dynamically determine the amount of space required for the rx_done
  ring rather than hardcoding it.

- Compute the number of tx descriptors we are willing to transmit per
  frame as the minimum of 128 or 1/4 the tx ring size.

- Fix a typo in the tx dma tag setup which could lead to unnecessary
  defragging of TSO packets (and potentially even dropping TSO packets
  due to EFBIG being returned).

- Add a counter to keep track of how many times we've needed to
  defragment a frame.  It should always be zero.

- Export new extended f/w counters via sysctl

Sponsored by: Myricom, Inc.
2007-05-22 15:57:49 +00:00
Andrew Gallatin
053e637f86 Improve mxge receive performance:
- Update to the latest (1.4.18) f/w.  This f/w introduces a new
  receive mode which allows us to use FreeBSD's physically discontinuous
  MJUM9BYTES clusters.

- Switch the driver from chaining MJUMPAGESIZE clusters to using
  MJUM9BYTES clusters to avoid mbuf chaining overheads.  Due to this
  change, people running obsolete f/w images will be limited to an MTU of
  PAGE_SIZE - 16.

- Add (disabled by default) support for Large Receive Offload.

Sponsored by: Myricom, Inc.
2007-05-21 18:32:27 +00:00
Hidetoshi Shimokawa
bebdf94c45 Make sure fwsid is not NULL.
MFC after: 3 days
2007-05-21 12:17:54 +00:00
Matt Jacob
b8fdb7f911 Perhaps a better fix- make the called function do the (possible never reached)
initialization. Do a token amount of style cleanup.

Poked by: bde
2007-05-21 09:26:47 +00:00
Hidetoshi Shimokawa
9404513cfa MFp4: Simplify the bus probe routin using a kthread.
MFC after: 1 week
2007-05-21 02:18:50 +00:00
Matt Jacob
a443a26379 Initialize irql to something prior to calls that (might) set it.
Whined about: gcc 4.2
2007-05-20 16:59:37 +00:00
Matt Jacob
6c7d0cff3f Make gcc 4.2 happy by initiatlizing controller && channel prior
to a call to a function which *might* then initialize them.

MFC after:	3 days
2007-05-20 16:49:09 +00:00
Matt Jacob
c512bc298c Increase size of timer counter bitfield to accomodate the actual size of the
default timer value.

Discovered By: gcc 4.2

MFC after:	3 days
2007-05-20 16:43:35 +00:00
Joel Dahl
ea18b1d925 Fix randomly broken playback with Fortemedia FM801 XWave PCI soundcard.
PR:		kern/98898
Submitted by:	Johannes Weiner <hnazfoo@googlemail.com>
Approved by:	ariff
2007-05-19 13:19:32 +00:00
Joel Dahl
03756ceff7 Turn off the AK452X De-emphasis filter for 44.1KHz. This should fix some
sound quality problems.

PR:		kern/112688
Submitted by:	Stefan Ehmann <shoesoft@gmx.net>
Reviewed by:	Konstantin Dimitrov <kosio.dimitrov@gmail.com>
Approved by:	ariff
2007-05-19 11:06:43 +00:00
Joel Dahl
ecdbb0d42b Fix detection of PC-9821 V166 internal sound card.
PR:		kern/105600
Submitted by:	rotus <rotus@takamanohara.dyndns.org>
Approved by:	ariff
2007-05-19 10:53:01 +00:00
Scott Long
40ca137bbd Minor update to version 3.70.03.007 2007-05-19 10:12:58 +00:00
Alexander Kabaev
b27167c85e Remove local static redefinition of ucom_devclass. 2007-05-19 04:57:15 +00:00
Marcel Moolenaar
7db977fb07 The HP Diva RMP3 uses BAR 0x14. 2007-05-17 04:07:19 +00:00
Jack F Vogel
481dd885f8 Couple of changes, back down on last TSO change, instead make old
adapter list still capable, but only PCI-E adapters are now enabled.
The user can enable older PCI-X or PCI adapters using ifconfig.
Secondly, Arthur Hartwig pointed out my MSI change was not working
correctly, changed to something that now does. Thanks Arthur.
There was also a fundamental bug in the 82575 MSIX code, the MSIX
registers had to be mapped, opps :)

Rubber-stamped by: Pdeuskar
2007-05-17 00:14:03 +00:00
John Baldwin
81c8102c4c Don't completely skip pci_cfg_save() in the PCI nomatch routine if
the power_nodriver tunable is off.  pci_cfg_save() already checks the
tunable internally, and no other callers of pci_cfg_save() check the
tunable.

Reviewed by:	imp
2007-05-16 23:42:04 +00:00
John Baldwin
d193b870a5 Fix interrupt routing for some cards after the previous fix to clear BARs
in cardbus cards: update the saved copy of the PCIR_INTLINE register in
the PCI ivars in addition to the actual register.

Reviewed by:	imp
2007-05-16 23:40:08 +00:00
David Christensen
567590460f - Added TSO support
- Updated firmware to latest release (v3.4.8) to fix TSO + jumbo frame lockup
- Added MSI (hw.bce.msi_enable) and TSO (hw.bce.tso_enable) sysctls
- Fixed kernel panic when MSI is used and module is unloaded
- Added several new debug routines
- Removed slack space for RX/TX chains since it only covers sloppy coding
- Fixed a potential problem when programming jumbo MTU size in hardware
- Various other comment changes

MFC after:	4 weeks
2007-05-16 23:34:11 +00:00
Warner Losh
cfd1374177 Write 0 to all the bars in cardbus_cardbus_setup_regs. This is needed
because on at least my dc based cards there's garbage in there.  The
recent changes in the resource code appears to have unmasked this
problem...  At least dc now probes/attaches better than it did before.

Also, we no longer need to write to the cfg for the other registers.
2007-05-16 20:00:36 +00:00
Warner Losh
26432f7ba2 o Don't hold lock over bus_teardown_intr when we're waiting for the
thread to die, since that can cause deadlock with the ISR (in theory).
o Minor cleanup
o comment nit
2007-05-16 19:53:49 +00:00
Warner Losh
af3bdf60d5 Better message on cbb resource alloc failure 2007-05-16 18:44:56 +00:00
Warner Losh
4b3337405d Change PCIM_CIS_ASI_TUPLE to _CONFIG.
Add PCI_MAX_BAR_0
minor style nit.
Add PCIM_CIS_CONFIG_MASK
2007-05-16 18:42:38 +00:00
Warner Losh
7a528f5c2e Add some doxygen docs for pci_cfg_{save,restore}. 2007-05-16 18:41:42 +00:00
Scott Long
35ef86f285 Catch up to driver changes required for the mfip sub-driver. 2007-05-16 17:23:36 +00:00
Scott Long
f366931c86 Add the 'mfip' sub-driver for gaining SCSI-passthrough access to devices
on an MFI controller.
2007-05-16 17:19:47 +00:00
Nate Lawson
f1d16a11cb Fix a logic bug added in last commit where PNP0103 devices would no longer
be probed but table-based devs would be ok.  General style cleanup also.

MFC after:	5 days
2007-05-16 01:15:51 +00:00
Jack F Vogel
0ac5a4cc2b This delta adds two bug fixes: one that makes HW Offload logic in
legacy codepath match the 82575, without this we were seeing bridging
fail on 82546 adapters. Secondly, I have limited TSO to PCI Express
adapters, I meant to do this and it got dropped in the earlier delta.
Next, I am dropping in the latest shared code from our development
team, consensus was that this should be done frequently, so I am :)

Approved by: pdeuskar
2007-05-16 00:14:23 +00:00
Takanori Watanabe
fffe371da3 Add ACPI HPET table support.
Reviewed by:njl
2007-05-15 08:41:05 +00:00
Warner Losh
0e1466ac89 First cut at making detach work. also add sdh as a possible mmc bridge.
Submitted by: Andrea Bittau
(Andrea may have updated patches, but I've tested these)
2007-05-15 05:49:14 +00:00
Warner Losh
78f8edfb44 Don't need mmc_mode ivar 2007-05-15 05:46:58 +00:00
Scott Long
e62c19b256 Eliminate M_TEMP. 2007-05-14 22:01:03 +00:00
Matt Jacob
abeda21e8d Temp workaround for config_intrhook_establish running the hook
right away.
2007-05-13 17:45:00 +00:00
Christian Brueffer
3f054080e6 Add missing curly braces.
Approved by:	rwatson (mentor)
2007-05-12 05:56:58 +00:00
Christian Brueffer
c9960ef732 ALTQify.
Submitted by:	J.R. Oldroyd
Reviewed by:	mlaier
Approved by:	rwatson (mentor)
MFC after:	1 week
2007-05-12 05:56:10 +00:00
Christian Brueffer
224aecbcdf Remove compat ifdefs for FreeBSD versions < 500014, makes the code
quite a bit easier to read.

Approved by:	rwatson (mentor)
MFC after:	1 weeks
2007-05-12 05:53:53 +00:00
Jack F Vogel
4e341d7ed1 Mistake in the logic deciding what adapters need
to map the IO BAR. Causing the driver to fail on
th 82542.

Reviewed by:pdeuskar
Approved by:pdeuskar
2007-05-11 21:36:08 +00:00
Hidetoshi Shimokawa
c6cf3e202a - Initialize login->id and fix problem for non-zero login id.
- Increase maxopenings for multiple lun/initiators.

MFC after: 3 days
2007-05-11 14:51:13 +00:00
Matt Jacob
f58a08937b Bad merge. 2007-05-11 13:47:28 +00:00
Matt Jacob
0230a28bf4 Fix pointy-hat problem with BUS_DMA_ROOTARG macro that caused problems for sparc64.
Candidate for immediate MFC.

Noticed by: Everyone-maxim contacted.
2007-05-11 06:28:26 +00:00
Scott Long
4d190d01ab The version string scheme embeds the freebsd major release version,
something that I wasn't aware of with the last import.  Adjust the
string accordingly for 7-CURRENT.
2007-05-10 15:36:58 +00:00
Scott Long
ddfae47b9d Collapse the mfi_ld object. Add an ioctl to help management apps map
array Id's to FreeBSD device names.
2007-05-10 15:33:41 +00:00
Stephen McKay
5bdc94fa35 Make a missing or empty VPD non-fatal, as it was prior to rev 1.131.
With this change, my D-Link DGE-530T rev A1 is operational again.
2007-05-10 13:10:34 +00:00
Ariff Abdullah
a6f9c6fb5f Don't hold mutex while releasing bus resources. 2007-05-10 01:46:51 +00:00
Kevin Lo
eb6e110a7a - Remove dependency on deprecated if_watchdog ABI.
- Move amrr code into net80211 itself.
- Handle ->INIT state transition in ural_newstate() to eliminate the race.

Tested with a ASUS WL-167g.
2007-05-09 09:32:41 +00:00
Scott Long
4439f8b4b6 Introduce a driver for the Highpoint RocketRAID 3xxx series of controllers.
The driver relies on CAM.

Many thanks to Highpoint for providing this driver.
2007-05-09 07:07:26 +00:00
Scott Long
4511a5c893 Import version 3.60.03.006 of the TWA driver:
This patch does the following:

- Remove un-necessary code that is not even compiling into the driver
 under TW_OSL_NON_DMA_MEM_ALLOC_PER_REQUEST defines.
- Remove bundled firmware image and associated "files" entry for tw_cl_fwimg.c
- Remove bundled firmware flashing routines. We now have tw_update userspace
 FreeBSD controller flash utility.
- Fix driver crash on load due to shared interrupt.
- Fix 2 lock leaks for Giant lock.
- Fix CCB leak.
- Add support for 9650SE controllers.

Many thanks to 3Ware/AMCC for continuing to support FreeBSD.
2007-05-09 04:16:32 +00:00
Jack F Vogel
9d483ba8a9 A couple bug fixes that I've had internally at Intel. First is a long
time workaround for problems with 82571 adapters and LAAs, one port
getting reset can cause the other to have its RAR[0] also reset,
thus overwriting an LAA. This fix works around it by also keeping
the address in the last array member.

The other bug is specific to the new 575 adapter, its transmit code
logic in handling hwassists was too crude, it broken when doing
bridges. I am much happier with the new logic,we may want to change
the legacy path at some point to something similar.

Reviewed by:	pdeuskar
Approved by:	pdeuskar
2007-05-09 00:41:45 +00:00
Maxim Konovalov
717d7ba708 o Add AnyData ADU-E100H modem. Sort a list of ubsa(4) supported devices.
PR:		usb/95803
Submitted by:	Jindrich Fucik
Tested by:	R.Mahmatkhanov
MFC after:	2 weeks
2007-05-08 18:51:40 +00:00
Andrew Gallatin
e0501fd040 - Add handling of MXGEFW_CMD_UNKNOWN in mxge_send_cmd().
- Convert mxge_send_cmd result handling to a switch rather
  than adding a new elseif for MXGEFW_CMD_UNKNOWN

Sponsored by: Myricom Inc.
2007-05-08 18:45:43 +00:00
Mark Santcroos
4b1ff978df Set the debug.acpi.acpi_ca_version sysctl even if ACPI support is not
available.
2007-05-08 14:31:49 +00:00
Andrew Gallatin
8fe615ba76 Firmware update & improvements to firmware selection:
- Update to latest (1.4.17) firmware.

- Use the new MXGEFW_CMD_UNALIGNED_TEST (added in firmare 1.4.16) to
  have the firmware tell us if the PCIe chipset supports aligned PCIe
  completions.

- Hard to maintain, and frequently out of date whitelist of PCIe
  chipsets known to produce aligned completions removed, as it has been
  replaced in its role of selecting the correct firmware to run by the
  use of MXGEFW_CMD_UNALIGNED_TEST.

- Break the dma test out of mxge_reset() and into its own function
  (mxge_dma_test()) so it can be used by both the normal DMA test, and
  to run the unaligned test.

- Improved support for enabling ECRCs

Sponsored by: Myricom Inc.
2007-05-08 14:19:43 +00:00
Kevin Lo
e43719c485 Do not set address early. It fix problems when SET_ADDR_FAILED happens
on the hubs.

Reviewed by: imp
2007-05-08 03:25:05 +00:00
John Baldwin
f11825148f Fix a typo in a bootverbose printf.
MFC after:	3 days
Submitted by:	yongari
2007-05-07 18:29:37 +00:00
Yaroslav Tykhiy
e8ae99894a Finish VLAN_MTU support in nve(4). The interface appears to be able
to handle long frames in its default mode, so setting the respective
bit in if_capenable is enough.

Tested by:	yongari
2007-05-07 09:45:31 +00:00
Ariff Abdullah
64a113269c buf_addr should be bus_addr_t rather than u_int32_t. 2007-05-07 02:46:48 +00:00
Dag-Erling Smørgrav
c8285e3723 Unbreak the build on 64-bit architectures as well. 2007-05-06 21:06:08 +00:00
Ariff Abdullah
0e86bad6e3 PCMMKMINOR() bit twiddling, so we can have:
- 2048 unique sound cards (dsp0 -> dsp2047)
    (used to be 15)
  - 32 unique device types  (dspW, audio, mixer, sndstat, .. 32th)
    (used to be 15)
  -  256 unique cloneable devices (dsp%d.0 -> dsp%d.255)
    (unchanged)
2007-05-06 16:46:23 +00:00
Dag-Erling Smørgrav
f679c6ff12 Unbreak the build. 2007-05-06 14:25:52 +00:00
Kevin Lo
0738dfc386 Add support for Ralink Technology RT2501USB/RT2601USB devices.
Reviewed by: sam, sephe
Obtained from: OpenBSD
2007-05-06 10:07:21 +00:00
Pawel Jakub Dawidek
1bfd71cfc5 File d_ident field with disk's serial number.
No answer from:	sos
2007-05-06 01:20:06 +00:00
Matt Jacob
d0a68c2747 Make this driver MP safe and still be a multi-release driver.
Obtained from:	99% of the work done by Scott Long.
MFC after:	3 days
2007-05-05 20:18:24 +00:00
Matt Jacob
0a70657fcc Make this an MP safe driver but also still be multi-release.
Seems to work on RELENG_4 through -current and also on sparc64
now. There may still be some issues with the auto attach/detach
code to sort out.

MFC after:	3 days
2007-05-05 20:17:23 +00:00
Ariff Abdullah
3419bf5a7d Fix (or rather workaround) Intel 440MX Errata #36
- http://www.intel.com/design/chipsets/specupdt/245051.htm

AC97 Soft Audio and Soft Modem Master Abort Errata

Issue:
  Use of either soft audio or soft modem on an Intel® 82443MX PCISet
  based platform running a 100 MHz Processor System Bus and an AC97 codec
  may result in failures. The system continues to function normally while
  the AC97 hardware may not resume and may require a cold-boot to
  recover. As a result of the failure, the Master Abort Status bit will
  be set in the audio or modem function PCI header space.

Workaround:
  Force uncacheable DMA on both BDL and pcm buffers.

Tested by:	Emil Holmstr|m <emil@linux.se>
2007-05-05 09:18:05 +00:00
Ariff Abdullah
71e3af015d Miscellaneous changes and fix:
- Remove explicit call to pmap_change_attr(), since we now have proper
  and functional definition of BUS_DMA_NOCACHE.
- Enable PCI(e) bus snooping for non i386/amd64 as an alternative for
  uncacheable DMA.
- Codecs changes:
  * Analag Device -> Analog Devices, AD1988.
  * New codec: VIA VT1708 and VT1709, Realtek ALC262, ALC861-VD and
    ALC885.
  * Various fixups for Conexant Waikiki, fix recording (read: microphone)
    on various Analog Devices codecs due to vendor BIOS mess, various
    quirks for several ASUS laptops/boards.
- Fix connection list handling, closely following the specification to
  handle range of nids.
- Basic Jack sense polling infrastructure for possible hardwares with
  broken unsolicited response interrupt.

Ideas/Submitted/Tested by:	Andriy Gapon <avg@icyb.net.ua>,
                          	#freebsd-azalia, many.
2007-05-05 09:17:36 +00:00
David Christensen
d2b9bc428c MFC after: 2 weeks
Updated copyright date to 2007.

Tested with BCM5706 A3.

Added ID for BCM5708 B2.

Removed unused driver version string.

Modified BCE_PRINTF macro to automatically fill-in the sc pointer.

Fixed a kernel panic when the driver was loaded as a module from the
command-line because the MII bus pointer was null (i.e. the MII bus
hadn't been enumerated yet).

Added fix proposed by Vladimir Ivanov <wawa@yandex-team.ru> to prevent
driver state corruption when releasing the lock during the ISR in
bce_rx_intr() to send packets up the stack.

Added new TX chain and register read sysctl interfaces for debugging.

Cleaned up formatting for various other debug routines.

Added a new statistic maintained by firmware which tracks the number
of received packets dropped because no receive buffers are available.
2007-05-04 23:14:19 +00:00
Poul-Henning Kamp
e1bb13cd30 Since if_gem is being touted as one of our more architecturally
correct network drivers with respect to busmaster DMA, go over it
with at duster to make other aspects of it a role model:

Eliminate the pci specific softc, it serves no rational purpose.

Use convenience resource allocation/deallocation functions to save
code and errorhandling.

Switch from bus_space_{read|write}_%u() to bus_{read|write}_%u()
functions and forget about tags and handles, the resource will know
about those, should they be needed.  This also eliminates a number
of inconsistently named local variables.
2007-05-04 19:15:28 +00:00
Robert Watson
c018682fbf $FreeBSD$ tags are not compilable C code; wrap in either __FBSDID() or
in comments for .c and .h files respectively.  Jack may want to clean up
style or other aspects once he's up and about again, but this gets the
kernel compiling.
2007-05-04 13:30:44 +00:00
Ariff Abdullah
53bc1d83c0 Fix use-after-free for DMA tag. Destroy DMA tag later.
Submitted by:	Yuriy Tsibizov
2007-05-04 12:38:46 +00:00
Jack F Vogel
89290aa383 Merge in the new driver (6.5.0) of Intel. This has a new
shared code infrastructure that is family specific and
modular. There is also support for our latest gigabit
nic, the 82575 that is MSI/X and multiqueue capable.

The new shared code changes some interfaces to the core
code but testing at Intel has been going on for months,
it is fairly stable.

I have attempted to be careful in retaining any fixes that
CURRENT had and we did not, I apologize in advance if any
thing gets clobbered, I'm sure I'll hear about it :)

Approved by pdeuskar
2007-05-04 00:00:12 +00:00
John Baldwin
9310f22692 Update __FreeBSD_version check for MFC of pmap_mapbios(). 2007-05-02 18:43:51 +00:00
John Baldwin
e706f7f0c7 Revamp the MSI/MSI-X code a bit to achieve two main goals:
- Simplify the amount of work that has be done for each architecture by
  pushing more of the truly MI code down into the PCI bus driver.
- Don't bind MSI-X indicies to IRQs so that we can allow a driver to map
  multiple MSI-X messages into a single IRQ when handling a message
  shortage.

The changes include:
- Add a new pcib_if method: PCIB_MAP_MSI() which is called by the PCI bus
  to calculate the address and data values for a given MSI/MSI-X IRQ.
  The x86 nexus drivers map this into a call to a new 'msi_map()' function
  in msi.c that does the mapping.
- Retire the pcib_if method PCIB_REMAP_MSIX() and remove the 'index'
  parameter from PCIB_ALLOC_MSIX().  MD code no longer has any knowledge
  of the MSI-X index for a given MSI-X IRQ.
- The PCI bus driver now stores more MSI-X state in a child's ivars.
  Specifically, it now stores an array of IRQs (called "message vectors" in
  the code) that have associated address and data values, and a small
  virtual version of the MSI-X table that specifies the message vector
  that a given MSI-X table entry uses.  Sparse mappings are permitted in
  the virtual table.
- The PCI bus driver now configures the MSI and MSI-X address/data
  registers directly via custom bus_setup_intr() and bus_teardown_intr()
  methods.  pci_setup_intr() invokes PCIB_MAP_MSI() to determine the
  address and data values for a given message as needed.  The MD code
  no longer has to call back down into the PCI bus code to set these
  values from the nexus' bus_setup_intr() handler.
- The PCI bus code provides a callout (pci_remap_msi_irq()) that the MD
  code can call to force the PCI bus to re-invoke PCIB_MAP_MSI() to get
  new values of the address and data fields for a given IRQ.  The x86
  MSI code uses this when an MSI IRQ is moved to a different CPU, requiring
  a new value of the 'address' field.
- The x86 MSI psuedo-driver loses a lot of code, and in fact the separate
  MSI/MSI-X pseudo-PICs are collapsed down into a single MSI PIC driver
  since the only remaining diff between the two is a substring in a
  bootverbose printf.
- The PCI bus driver will now restore MSI-X state (including programming
  entries in the MSI-X table) on device resume.
- The interface for pci_remap_msix() has changed.  Instead of accepting
  indices for the allocated vectors, it accepts a mini-virtual table
  (with a new length parameter).  This table is an array of u_ints, where
  each value specifies which allocated message vector to use for the
  corresponding MSI-X message.  A vector of 0 forces a message to not
  have an associated IRQ.  The device may choose to only use some of the
  IRQs assigned, in which case the unused IRQs must be at the "end" and
  will be released back to the system.  This allows a driver to use the
  same remap table for different shortage values.  For example, if a driver
  wants 4 messages, it can use the same remap table (which only uses the
  first two messages) for the cases when it only gets 2 or 3 messages and
  in the latter case the PCI bus will release the 3rd IRQ back to the
  system.

MFC after:	1 month
2007-05-02 17:50:36 +00:00
John Baldwin
361cf3bd02 Use more specific local variable pointers to narrow some expressions.
MFC after:	1 week
2007-05-02 16:21:18 +00:00
Scott Long
ae780f57f6 MPSAFE atapi-cam 2007-05-02 15:30:24 +00:00
Scott Long
2472e51e46 Streamline locking in ciss_free() 2007-05-02 04:44:31 +00:00
Jung-uk Kim
fe09b799f1 Reflect MFC of pci_find_extcap().
MFC after:	3 days
2007-05-01 19:18:12 +00:00
Marcel Moolenaar
bd3032d144 Define the miibus ivars as a structure, instead of as a vector of
pointers. A structure is more readable and less error-prone. It
also avoids problems when a function pointer doesn't have the
same width as a void pointer.
2007-05-01 18:21:24 +00:00
Marius Strobl
5ffa507dce Fix bugs in the Sun -> AT keycode translation table which caused the
Props key to act as Again and the Paste and Copy keys to be inverted.
2007-05-01 14:14:52 +00:00
Marius Strobl
e3b78ec974 Remove invalid BUS_DMA_ALLOCNOW when creating a tag which is used for
a "static" memory allocation only.
2007-05-01 11:50:11 +00:00
Christian Brueffer
8d2896ac91 Remove pre-5.0 compat cruft.
Approved by:	rwatson (mentor)
MFC after:	1 week
2007-05-01 11:17:29 +00:00
Scott Long
975b731815 MPSAFE ciss driver 2007-05-01 05:13:15 +00:00
Pyun YongHyeon
787b3ade61 If we've got watchdog timeouts try to get more packets going after
resetting the hardware.
2007-05-01 03:40:57 +00:00
Pyun YongHyeon
7ef4ec5d34 Honor link up/down state in stge_start().
While I'm here move MAC control settings to stge_link_task, a task
queue which handles link state and duplex/flow controls.
2007-05-01 03:35:48 +00:00
Pyun YongHyeon
eb7a67da1a Use our own timer for watchdog instead of if_watchdog/if_timer
interface.
2007-05-01 03:15:04 +00:00
Marius Strobl
2f9f08b635 - Take advantage of mii_phy_add_media() for adding media and setting
sc->mii_anegticks according to whether the respective BGE chip
  supports Fast Ethernet only or also Gigabit Ethernet.
- At least the BGE chips I've tested with wedge when isolating them
  so document this as the reason for setting MIIF_NOISOLATE and
  remove the unused (and partially even #ifdef'ed out) isolation
  related code. Add code that panics if we encounter a non-zero MII
  instance as generally there's no way a PHY requiring MIIF_NOISOLATE
  can be handled gracefully in a multi-PHY configuration (it's ok for
  the internal PHY of single-PHY-only-NIC to not support isolation
  though).
- Additionally set MIIF_NOLOOP as loopback doesn't seem to work
  either and remove the #ifdef'ed out code for adding respective
  media. The MIIF_NOLOOP flag currently triggers nothing but
  hopefully will be respected by mii_phy_setmedia() later on.

Reviewed by:	jkim, yongari
MFC after:	1 month
2007-04-30 22:35:33 +00:00
Marius Strobl
08013fd336 - Add support/quirks for the on-board BGEs found in Sun Blade 1500
Blade 2500, Fire V210 and probably some other sparc64 machines.
  These chips are typically not fitted with an EEPROM which means
  that we have to obtain the MAC address via OFW and that some chip
  tests will just always fail.
  These changes are based on the respective code found in OpenBSD
  with some additional info obtained from OpenSolaris and some style
  suggestions by jkim@. They also have the desired side-effect of
  respecting the 'local-mac-address?' system configuration variable
  for the affected BGEs.
- In bge_attach() factor out calling bge_release_resources() before
  going to the fail label into the fail label as well as replace a
  magic 6 with ETHER_ADDR_LEN.

Reviewed by:	yongari (before style changes), jkim
2007-04-30 21:55:27 +00:00
Takanori Watanabe
0f23397d3f Add MELCO PC-OP-RS Universal remote ID. 2007-04-30 16:15:19 +00:00
Hidetoshi Shimokawa
0cf4488ab4 MFp4: Improve asynchronous packet receive process.
- Wake up DMA engine after adding a new receive buffer.
- Skip buffers which have unknown state after error.
- More rigid error detection.

MFC after: 1 week
2007-04-30 14:06:30 +00:00
Hidetoshi Shimokawa
2c70b09005 MFp4:
- Update state in fw_xferq_dorain() after removed from the send queue.
- Remove unnecessary 'goto err;".

MFC after: 1 week
2007-04-30 13:51:13 +00:00
Hidetoshi Shimokawa
0892f4c5ec MFp4: Fix broken userland API for async packets.
- Introduce fw_xferlist_add/remove().
- Introduce fw_read/write_async().
- Remove unused FWACT_CH.

MFC after: 1 week
2007-04-30 13:41:40 +00:00
Hidetoshi Shimokawa
5cc9512ae2 MFp4: Fix typo in recv spd.
MFC after: 1 week
2007-04-30 12:55:03 +00:00
Hidetoshi Shimokawa
6b3ecf71ea MFp4: Add a sysctl knob to disable cycle master mode and add some comments.
MFC after: 1 week
2007-04-30 12:38:50 +00:00
Hidetoshi Shimokawa
78b1168bd8 MFp4: remove unused fw_asybusy().
MFC after: 1 week
2007-04-30 12:30:21 +00:00
Hidetoshi Shimokawa
89cad4614f MFp4: Simplify tlabel handling
- Remove struct tl_label and runtime malloc() for it.
- Include tl_lable list in struct fw_xfer.
- Don't free unallocated tlabel.

MFC after: 1 week
2007-04-30 12:26:29 +00:00
Hidetoshi Shimokawa
ad9cf50615 Initialize configuration ROM before a bus reset.
MFC: after 3 days
2007-04-30 10:50:53 +00:00
Thomas Quinot
057f398585 (atapi_action, case XPT_SCSI_IO): Enable DMA only for READ and WRITE commands
as some combinations of chipset, controller and target do not behave
 correctly when DMA is enabled for other commands.

PR:		kern/103602
MFC after:	2 weeks
2007-04-30 09:33:57 +00:00
Thomas Quinot
e651554bf6 (atapi_cb): Fix test for the presence of sense data. An incorrect condition
was being tested, which would result in a system hang in some configurations.

PR:		kern/112119
Reviewed by:	scottl
MFC after:	3 days
2007-04-30 09:26:43 +00:00
Andrew Gallatin
9b03b0f3c0 -Fix an mbuf leak caused by a cut&paste bug where the small ring's mbufs
were never freed, but the big ring was freed twice.
-Don't supply rx hw csums for frames which are padded beyond the
 length specified in the ip header.  If the padding is non-zero,
 the hw csum will be incorrect for such frames.

Sponsored by: Myricom
2007-04-27 13:11:50 +00:00
Ollivier Robert
825f8b5050 Use the same timeout parameters for BIO_FLUSH as with the other commands.
This workaround the problem in Parallels/VMWare where the emulated drivers are
slower, especially with ATA_FLUSHCACHE.  The problem appears much more
frequently with ZFS which use it a lot more.

Approved:	sos, pjd
2007-04-26 12:59:20 +00:00
Kip Macy
64c43db51c Default to using a single queue as this is currently the only way to achieve
line rate
2007-04-26 08:38:00 +00:00
Kip Macy
ea5143feaf Disable mbuf chain collapsing - it is currently causing an mbuf leak 2007-04-26 08:36:59 +00:00
John Baldwin
147c0ad0a1 Use a tighter check to see if a resource allocation request is for a
specific request and thus should first try to be allocated from the
sys_resource pool.  This avoids using the sys_resource pool for wildcard
requests that have bounded ranges coming from cbb(4) and Host-PCI pcib(4)
drivers.

Tested by:	Andrea Bittau <a.bittau of cs.ucl.ac.uk fame>
Sleuthing by:	Andrea Bittau as well
2007-04-25 16:22:18 +00:00
John Baldwin
d68b1825b7 - HT 2.00b added a new flag to the MSI mapping HT capability to indicate
that the MSI mapping window is fixed at 0xfee00000 and the capability
  does not include two more dwords used to program the address.  Supporting
  this mostly results in quieting spurious warnings during boot about
  non-default MSI mapping windows.
- HT 2.00b also added a new HT capability type, so support that in pciconf.

MFC after:	3 days
Tested by:	jmg
2007-04-25 14:45:46 +00:00
Pyun YongHyeon
dd936d524b Work around GMAC hardware hang bug.
It seems that valid pause frames(Tx flow control) cause GMAC to hang
such that it resulted in watchdog timeout. As a work around don't
flush Rx MAC FIFO if we've received pause frames.

Tested by:	Harald Schmalzbauer (h DOT schmalzbauer AT omnisec DOT de)
2007-04-25 01:20:31 +00:00
Pyun YongHyeon
b2313f5861 Disable TSO support.
Under certain circumtances, if TSO is active, Yukon II generates
corrupted IP packets. All corrupted IP packets I noticed were the the
last segmented packet in a TSO request. The corrupted packet resulted
in retransmission of the damaged packet which in turn decreased network
performance dramatically.
Unfortunately it seems that there is no way to workaround this bug
as TSO is completely handled in hardware. Disable TSO until we find a
working workaround or a new silicon revision that doesn't have this
hardware bug.
2007-04-25 01:17:44 +00:00
Pyun YongHyeon
3326191f71 Fix TCP header size calculation logic which is used for setting
TSO MTU.
2007-04-25 01:13:38 +00:00
Markus Brueffer
9cf7411649 Utilize led_create_state in order to preserve the status of the ThinkLight
on driver attach.

PR:		kern/112044
Submitted by:	Henrik Brix Andersen <henrik@brixandersen.dk>
Approved by:	emax (mentor) (earlier version)
2007-04-24 23:09:37 +00:00
Hidetoshi Shimokawa
e340a7ac14 Configuration ROM length should be unsigned.
MFC: 1 week
2007-04-24 12:15:05 +00:00
Sepherosa Ziehau
3629c47471 Nuke unnecessary setting of ural(4)'s security registers. ural(4) only
supports software encrypt/decrypt.

The nuked code itself is quite problematic, as pointed out by sam@ ---
wk->wk_keyix should be replaced by the loop count.

Tested with WEP/TKIP/CCMP/no-protection.

Approved by:	sam@ (mentor)
Noticed by:	Hans Petter Selasky <hselasky@c2i.net>
2007-04-24 11:18:55 +00:00
Poul-Henning Kamp
ea60845d09 Make it possible to specify an initial state for the LED.
Requested by:	Henrik Brix Andersen <henrik@brixandersen.dk>
PR:	112008
2007-04-23 12:42:15 +00:00
Poul-Henning Kamp
98b2967900 Add VLAN capability.
Submitted by:	Slawa Olhovchenkov <slw@zxy.spb.ru>
2007-04-23 12:19:02 +00:00
Sam Leffler
b298baf298 make dev.ath.N.ledpin have an immediate effect
PR:		kern/111810
Submitted by:	Henrik Brix Andersen <henrik@brixandersen.dk>
MFC after:	1 week
2007-04-23 05:57:06 +00:00
Poul-Henning Kamp
2efc0f7f47 Remove the old software bit-banging MII interface, we started using
the Rhines shiftregisters in four years ago (1.60).
2007-04-22 15:58:56 +00:00
Poul-Henning Kamp
28a811cd5b Remove further cobwebs: Two layers of pointless substructures. 2007-04-22 15:48:29 +00:00
Poul-Henning Kamp
5d83ecf965 Initialize the physical next pointer in the tx descriptors when we
initialize instead of in the start routine.
2007-04-22 15:09:03 +00:00
Poul-Henning Kamp
27de12a9c2 Don't rename fields with #define.
Collapse two semantically identical structs.
Add missing vr_ prefix.
2007-04-22 14:57:05 +00:00
Poul-Henning Kamp
c8ea76936e Run if_vr(4) through FlexeLint and clean some of the cobwebs found. 2007-04-22 12:55:36 +00:00
Kip Macy
5f1e4ae331 Free cluster if we fail to create the dmamap.
Fixes CID 1829
Found by: Coverity
2007-04-20 05:16:42 +00:00
Kip Macy
527888d7c0 Eliminate CID 1842 by comparing against (type != EXT_MBUF) => refcnt != NULL 2007-04-20 05:12:54 +00:00
Kip Macy
f297a9d336 Fix memory leak in m_collapse (CID 1843)
Found by: Coverity
Submitted by: jhb
2007-04-20 05:06:02 +00:00
Ariff Abdullah
9d2d90cb79 Unbreak module / driver attach breakage. Both snd_envy24 and snd_envy24ht
mistakenly rely on wrong snd_spicds version.
2007-04-20 01:28:51 +00:00
Scott Long
7628acd8ee Up until now, the free SCB pool received only a small initial allocation,
and new SCBs were allocated on demand later if needed.  This has two
problems.  First, allocating SCBs involves allocating contiguous memory,
and if memory is exhausted then the VM will try to page out to satisfy
the request, leading to recursion and deadlock.  The second problem is
that it can cause lock order reversals due to parts of the VM still being
under Giant.

Fix the problem be allocating the full pool at driver attach, when it is
safe to do so.
2007-04-19 18:53:52 +00:00
Ariff Abdullah
fd7390d640 - AC97 quirk / patch cleanups. Most quirks doesn't work in general sense
and should only be applied on certain specific card / vendor, hence the
  addition of ac97_getsubvendor().
- Fix low volume issue on several MSI laptops through ALC655 quirk.

Reported/Tested by:	Christian Mueller
                   	<raptor-freebsd-multimedia@xpls.de>
MFC after:		1 week
2007-04-19 13:54:22 +00:00
Sepherosa Ziehau
b03cfe2396 - Fix mbuf/node leakage in drivers' raw_xmit().
- For ural(4):
  o  Fix node leakage in ural_start(), if ural_tx_mgt() fails.
  o  Fix mbuf leakage in ural_tx_{mgt,data}(), if usbd_transfer() fails.
  o  In ural_tx_{mgt,data}(), set ural_tx_data.{m,ni} to NULL, if
     usbd_transfer() fails, so they will not be freed again in ural_stop().

Approved by:	sam (mentor)
2007-04-19 13:09:57 +00:00
Joseph Koshy
382d30cdd8 Fix witness(4) warnings about mutex use.
Group mutexes used in hwpmc(4) into 3 "types" in the sense of
witness(4):

 - leaf spin mutexes---only one of these should be held at a time,
   so these mutexes are specified as belonging to a single witness
   type "pmc-leaf".

 - `struct pmc_owner' descriptors are protected by a spin mutex of
   witness type "pmc-owner-proc".  Since we call wakeup_one() while
   holding these mutexes, the witness type of these mutexes needs
   to dominate that of "sleepq chain" mutexes.

 - logger threads use a sleep mutex, of type "pmc-sleep".

Submitted by:	wkoszek (earlier patch)
2007-04-19 08:02:51 +00:00
Ariff Abdullah
2e334adf6a sndbuf_alloc() now accept dmaflags argument which will be forwarded to
internal bus_dmammem_alloc() for greater flexibility on setting up DMA /
page attributes.
2007-04-18 18:26:41 +00:00
Ariff Abdullah
e492b75981 Break ABI / module compatibility for the upcoming sndbuf_alloc() changes. 2007-04-18 18:20:48 +00:00
Scott Long
8008a935a7 Revert a driver API change to xpt_alloc_ccb that isn't necessary. Fix a
couple of associated error checks.
2007-04-18 04:58:53 +00:00
Pyun YongHyeon
eed497bbe5 Don't reinitialize the hardware if only PROMISC flag was changed.
Previously whenever PROMISC mode turned on/off link renegotiation
occurs and it could resulted in network unavailability for serveral
seconds.(Depending on switch STP settings it could last several tens
seconds.)

Reported by:	Prokofiev S.P.  < proks AT logos DOT uptel DOT net >
Tested by:	Prokofiev S.P.  < proks AT logos DOT uptel DOT net >
2007-04-18 00:40:43 +00:00
Poul-Henning Kamp
4898b3a557 Add support for hw-assisted checksums on 6105M.
Sponsored by: Soekris Engineering
2007-04-17 22:59:54 +00:00
Poul-Henning Kamp
c859cda5eb No need to throw tag+handle around on the stack. 2007-04-17 17:32:39 +00:00
Poul-Henning Kamp
1c04bd82a5 Improve the if_vr driver ever so slightly.
The 6105M and 6102 does not have the DWORD alignment problem, so
don't m_defrag() every packet in the transmit path for those.

More stringent usage of tx-descriptor ring and its flags.

Tested on 6102 and 6105M, other chips may also be able to run
without the m_defrag() but I have neither hardware nor docs to
find out.

Sponsored by:	Soekris Engineering
2007-04-17 12:23:57 +00:00
Scott Long
032b0a17dc Basic MPSAFE locking for the AHC and AHD drivers. 2007-04-17 06:26:25 +00:00
Warner Losh
1a13e01f7f Don't use spinlocks here. The iicbus transactions can take a long
time, and this prevents interrupts (say for Hz/hardclock) from
happening.  Time stands still during the transfers...
2007-04-17 05:48:35 +00:00
Pawel Jakub Dawidek
6b3d6017e8 s/destory/destroy/ (except for the code in contrib/). 2007-04-16 12:31:35 +00:00
Kip Macy
d302816a12 PHYS_TO_VM_PAGE requires explicit vm_page.h include on sparc64 2007-04-15 22:17:10 +00:00
Matt Jacob
07589439e5 Use %j and args cast to uintmax_t to print bus_addr_t && length args. 2007-04-15 19:03:45 +00:00
Kip Macy
2b6dbb2afa Add pmap includes needed by i386 2007-04-15 15:30:45 +00:00
Scott Long
2b83592fdc Remove Giant from CAM. Drivers (SIMs) now register a mutex that CAM will
use to synchornize and protect all data objects that are used for that
SIM.  Drivers that are not yet MPSAFE register Giant and operate as
usual.  RIght now, no drivers are MPSAFE, though a few will be changed
in the coming week as this work settles down.

The driver API has changed, so all CAM drivers will need to be recompiled.
The userland API has not changed, so tools like camcontrol do not need to
be recompiled.
2007-04-15 08:49:19 +00:00
Kip Macy
ba68b814cc suck in more of busdma to enable more efficient mappings
kill redundant INVARIANTS check
2007-04-15 05:46:34 +00:00
Kip Macy
d43f50b93a Add sysctl for disabling/enabling mbuf chain collapsing
remove map creation before calling bus_dmamap_load_mvec_sg
2007-04-15 05:45:10 +00:00
Kip Macy
52c81add3c Implement ZERO_COPY_SOCKETS check in a way that doesn't make LINT unhappy 2007-04-15 04:55:39 +00:00
Kip Macy
51580731ae Add support for mbuf iovec in the TX path 2007-04-14 20:40:22 +00:00
Kip Macy
642046797b add reference count pointer to mbuf iovec
implement robust version of m_collapse
add support for sf_buf
add fix for m_iovappend
add calls to m_sanity under INVARIANTS
fix m_freem_vec to correctly travese the mbuf iovec chain
2007-04-14 20:38:38 +00:00
Maxim Konovalov
b274ce9ef2 o Extend the list of supported CDMA-2000 terminals.
Submitted by:	R.Mahmatkhanov
MFC after:	10 days
2007-04-13 18:15:07 +00:00
Kip Macy
aa84193acf restore sense to get_imm_packet
MFC after: 3 days
2007-04-12 04:48:54 +00:00
Kip Macy
98d6fba71d switch over to per-txq dma tag to facilitate parallelism on TX
MFC after: 3 days
2007-04-12 04:31:44 +00:00
Kip Macy
dd782506d8 explicitly check TSO flag
don't clear and then set M_PKTHDR, m_gethdr sets it correctly
improve error handling on m_gethdr failure

MFC after: 3 days
2007-04-12 03:33:30 +00:00
Kip Macy
23ed7b513f Add ETHER_HDR_LEN to hardware accepted mtu
MFC after: 3 days
2007-04-12 03:07:24 +00:00
John Baldwin
e403490aa6 Fix m_freem_vec() to actually traverse the mbuf chain. This avoids
double free's and an infinite loop.

CID:		1834
Found by:	Coverity Prevent (tm)
2007-04-11 13:47:24 +00:00
Pyun YongHyeon
b5898b804f Add work around for hardware Tx checksum offload bug in Yukon II.
Yukon II generated corrupted TCP checksum for short TCP packets
that's less than 60 bytes in size(e.g. window probe packet, pure ACK
packet etc). Padding the frame with zeros to make the frame minimum
ethernet frame size didn't work at all. Instead of dropping Tx
checksum offload support we calculate TCP checksum with S/W method
when we encounter short TCP frames.
Fortunately it seems that short UDP datagrams appear to be handled
correctly by Yukon II.

While I'm here simplify ethernet/VLAN header size calculation logic.

PR:	111384
2007-04-11 00:47:29 +00:00
Marius Strobl
5abeece6ab Let brgphy(4) attach for the Broadcom BCM5755 ASIC based chipsets
as well.

Obtained from:	OpenBSD
MFC after:	1 week
2007-04-10 20:43:23 +00:00
Robert Watson
cc807dbd0a Remove unnecessary suser() check in the sysctl to set up ath_hal
logging: the sysctl framework will already have checked for privilege
if a sysctl value is being set.

Discussed a long time ago with:	sam
2007-04-10 15:48:45 +00:00
Kip Macy
a53b1c1753 throw sun4v into the check while we're at it 2007-04-09 17:05:54 +00:00
Kip Macy
3a0a4ac13d busdma tags are opaque on all architectures except sparc64
for now simply don't compile/use on sparc64
2007-04-09 17:01:23 +00:00
Kip Macy
dc5a36e241 Add missing paren 2007-04-08 22:56:18 +00:00
Søren Schmidt
ae4ce3ceef OK, this is not my day, fix the former fix :/ 2007-04-08 21:53:52 +00:00
Søren Schmidt
f27a14650f Hopefully unbreak the 64bit DMA support this time. 2007-04-08 19:18:51 +00:00
Kip Macy
cae1990513 remove stale variable reference 2007-04-08 18:02:37 +00:00
Kip Macy
db2faf119f add busdma function for mapping mbuf iovecs
change m_collapse to return an error code
2007-04-08 15:59:07 +00:00
Søren Schmidt
cd945eed47 Dont zero out 64BIT flag on DMA ops. 2007-04-08 15:31:39 +00:00
Kip Macy
c0a24dd4aa Convert driver RX path over to using mbuf iovec 2007-04-08 15:04:19 +00:00
Kip Macy
a8d9a363f5 Add driver private mbuf iovec support routines 2007-04-08 14:56:16 +00:00
Ariff Abdullah
319276aac0 Disable cmi_midiattach(). The implementation is incomplete, and causing
various interesting memory leak issues.
2007-04-08 07:52:27 +00:00
Matt Jacob
7b88fb86e3 Hide bus reset announcements within bootverbose.
MFC after:	3 days
2007-04-07 18:15:52 +00:00
Søren Schmidt
fe2fb53542 Add 64bit addressing support to SiI 3132/3124 2007-04-06 17:36:35 +00:00
Søren Schmidt
2cfcfef1fc Remove debug gunk. 2007-04-06 16:21:34 +00:00
Søren Schmidt
16194fc40b Add support for 64bit addressing to AHCI and Marvell controllers.
Munged into ATA shape and Marvell specifics my yours truely.

Submitted by: jhb
2007-04-06 16:18:59 +00:00
Pawel Jakub Dawidek
93caf77f95 Use strcasecmp() from libkern. 2007-04-06 11:21:01 +00:00
Pyun YongHyeon
ad6d01d151 If we've encountered unrecognized chipset don't access hardware
anymore. Previously it tried to access interrupt register to disable
interrupts which could result in hang if the hardware was not
properly initialized by system BIOS/ACPI.

Tested by:	Benjamin Hansmann (benjamin.hansmann AT rub dot de)
MFC after:	3 days
2007-04-06 02:02:07 +00:00
Marcel Moolenaar
9760f68ca0 Add PCI IDs for the HP RMP3 serial port. This is often used as
the serial console.

MFC after: 1 week
2007-04-05 19:15:46 +00:00
Robert Watson
5e3f7694b1 Replace custom file descriptor array sleep lock constructed using a mutex
and flags with an sxlock.  This leads to a significant and measurable
performance improvement as a result of access to shared locking for
frequent lookup operations, reduced general overhead, and reduced overhead
in the event of contention.  All of these are imported for threaded
applications where simultaneous access to a shared file descriptor array
occurs frequently.  Kris has reported 2x-4x transaction rate improvements
on 8-core MySQL benchmarks; smaller improvements can be expected for many
workloads as a result of reduced overhead.

- Generally eliminate the distinction between "fast" and regular
  acquisisition of the filedesc lock; the plan is that they will now all
  be fast.  Change all locking instances to either shared or exclusive
  locks.

- Correct a bug (pointed out by kib) in fdfree() where previously msleep()
  was called without the mutex held; sx_sleep() is now always called with
  the sxlock held exclusively.

- Universally hold the struct file lock over changes to struct file,
  rather than the filedesc lock or no lock.  Always update the f_ops
  field last. A further memory barrier is required here in the future
  (discussed with jhb).

- Improve locking and reference management in linux_at(), which fails to
  properly acquire vnode references before using vnode pointers.  Annotate
  improper use of vn_fullpath(), which will be replaced at a future date.

In fcntl(), we conservatively acquire an exclusive lock, even though in
some cases a shared lock may be sufficient, which should be revisited.
The dropping of the filedesc lock in fdgrowtable() is no longer required
as the sxlock can be held over the sleep operation; we should consider
removing that (pointed out by attilio).

Tested by:	kris
Discussed with:	jhb, kris, attilio, jeff
2007-04-04 09:11:34 +00:00
Kip Macy
fa0521c0e9 Make DMA tags per-queue to facilate parallel mappings
Defer mbuf allocation and initialization until after data has already been
received in a cluster

This reduces cpu utilization somewhat, but it only improves the rx path.
Recent changes to TCP appear to make us rate limited by the TX path.

This is the first step in reducing mbuf management overhead for manipulating
clusters.

MFC after: 3 days
2007-04-04 05:29:18 +00:00
Andrew Gallatin
e39a0a37cf - Fix a bug in the TSO transmit routine where frames which had
been defragged and had their headers in the same cluster as their
payload would be fed to the NIC in header-sized chunks, and would
likely exceed the number of available transmit descriptors.

- If a TSO frame exceeds the number of available transmit descriptors,
don't leak busdmma resources when freeing it.

Sponsored by: Myricom Inc.
2007-04-03 10:41:33 +00:00
Kevin Lo
6d361569d5 Since the driver uses mutexes, remove splusb() and splx(). 2007-04-03 05:59:17 +00:00
Marcel Moolenaar
35777a2a79 Don't use a time-limiting loop that's defined in terms of the baudrate
in the putc() method.  Likewise, in the getc() method, don't check for
received characters with an interval defined in terms of the baudrate.
In both cases it works equally well to implement a fixed delay.  More
importantly, it avoids calculating a delay that's roughly 1/10th the
time it takes to send/receive a character. The calculation is costly
and happens for every character sent or received, affecting low-level
console or debug port performance significantly. Secondly, when the
RCLK is not available or unreliable, the delays could disrupt normal
operation.

The fixed delay is 1/10th the time it takes to send a character at
230400 bps.
2007-04-03 01:21:10 +00:00
Marcel Moolenaar
f8100ce2a7 Don't expose the uart_ops structure directly, but instead have
it obtained through the uart_class structure. This allows us
to declare the uart_class structure as weak and as such allows
us to reference it even when it's not compiled-in.
It also allows is to get the uart_ops structure by name, which
makes it possible to implement the dt tag handling in uart_getenv().
The side-effect of all this is that we're using the uart_class
structure more consistently which means that we now also have
access to the size of the bus space block needed by the hardware
when we map the bus space, eliminating any hardcoding.
2007-04-02 22:00:22 +00:00
Jung-uk Kim
0a55a034ba Enable MSI support on RELENG_6.
MFC after:	3 days
2007-04-02 19:09:06 +00:00
Ariff Abdullah
f505e02090 Revert busy refcount back to int. As a side note, multiple open
is still (and always) possible and does not change previous behaviour.

Requested by:	netchild
2007-04-02 10:24:15 +00:00
Ariff Abdullah
ff7499570c Disable seq_modevent(). The implementation is incomplete, and causing
memory leak during unload.
2007-04-02 06:03:47 +00:00
Pyun YongHyeon
75a1d5a086 Use our own timer for watchdog instead of if_watchdog/if_timer
interface.
2007-04-02 04:43:41 +00:00
Ariff Abdullah
3627e77dfa No need to track every closing instance, and put busy counter to rest
in its single bit coffin.
2007-04-02 03:46:25 +00:00
Scott Long
15735bec61 Freeze the simq, not the devq, if we run out of command slots. This fixes
the last round of reported instability in the rev 13/14 driver.

Approved by: Erich Chen
2007-04-02 03:31:37 +00:00
Ariff Abdullah
a9be51acfe Provide hint / tunable for possible asynchronous USB execution. Async
execution should help us avoiding potential deadlock and illegal locking
while sleeping in various mixer -> usb calls. To enable it, use
hint.uaudio.%d.async="1" or sysctl dev.uaudio.%d.async=1. Default is
disable, to remain compatible with old behaviour (with slight risk of
potential deadlock).
2007-04-02 03:25:39 +00:00
Ariff Abdullah
72e9d07fbf - Don't wakeup() unnecessarily, so the behavior of dead interrupt or
stalled DMA engine can be observed and predicted.
- Minor sysctl/tunable cleanup.
2007-04-02 03:03:06 +00:00
Matt Jacob
9a1b0d43c2 Temporarily desupport simultaneous target and initiator mode.
When the linux port changes were imported which split the
target command list to be separate from the initiator command
list and the handle format changed to encode a type in the handle
the implications to the function isp_handle_index (which only
the NetBSD/OpenBSD/FreeBSD ports use) were overlooked.

The fault is twofold: first, the index into the DMA maps
in  isp_pci is wrong because a target command handle with
the type bit left in place caused a bad index (and panic)
into dma map. Secondly, the assumption of the array
of DMA maps in either PCS or SBUS attachment structures is
that there is a linear mapping between handle index and
DMA map index. This can no longer be true if there are
overlapping index spaces for initiator mode and target
mode commands.

These changes bandaid around the problem by forcing us
to not have simultaneous dual roles and doing the appropriate
masking to make sure things are indexed correctly. A longer
term fix is being devloped.
2007-04-02 01:04:20 +00:00
Alexander Leidinger
02da6fa190 Handle errors from bus_setup_intr().
Found by:	Coverity Prevent (tm)
CID:		1066
2007-04-01 16:55:31 +00:00
Alexander Leidinger
c9be0e5d4d Tell a statistic checker that not checking the return value of the probing
of the mii phy is intended for this chip.

Found by:	Coverity Prevent (tm)
CID:		43
2007-04-01 14:15:26 +00:00
Alexander Leidinger
2acfcc2d4c Make it obvious that we don't care about the return value of
usbd_endpoint_count(), the failure case is handled implicit in the
following code.

Found by:	Coverity Prevent (tm)
CID:		56
2007-04-01 13:46:39 +00:00
John Baldwin
4e7f640dfb Optimize sx locks to use simple atomic operations for the common cases of
obtaining and releasing shared and exclusive locks.  The algorithms for
manipulating the lock cookie are very similar to that rwlocks.  This patch
also adds support for exclusive locks using the same algorithm as mutexes.

A new sx_init_flags() function has been added so that optional flags can be
specified to alter a given locks behavior.  The flags include SX_DUPOK,
SX_NOWITNESS, SX_NOPROFILE, and SX_QUITE which are all identical in nature
to the similar flags for mutexes.

Adaptive spinning on select locks may be enabled by enabling the
ADAPTIVE_SX kernel option.  Only locks initialized with the SX_ADAPTIVESPIN
flag via sx_init_flags() will adaptively spin.

The common cases for sx_slock(), sx_sunlock(), sx_xlock(), and sx_xunlock()
are now performed inline in non-debug kernels.  As a result, <sys/sx.h> now
requires <sys/lock.h> to be included prior to <sys/sx.h>.

The new kernel option SX_NOINLINE can be used to disable the aforementioned
inlining in non-debug kernels.

The size of struct sx has changed, so the kernel ABI is probably greatly
disturbed.

MFC after:	1 month
Submitted by:	attilio
Tested by:	kris, pjd
2007-03-31 23:23:42 +00:00
John Baldwin
4dc5078f81 Add constants for the fields in a BAR. Also, add two new macros
PCI_BAR_(IO|MEM)() that return true if the passed in value from a BAR
is for an IO or memory BAR, respectively.

Reviewed by:	imp
2007-03-31 21:39:02 +00:00
Matt Jacob
9f9e9ae3a7 Fix compilation problem (add a const) for pre-7.0 compiles. 2007-03-31 21:01:35 +00:00
John Baldwin
657d9f9f55 - Add missing constants for subclasses.
- Add a few progif constants as well.
2007-03-31 20:41:00 +00:00
Alexander Leidinger
c2bb6a54ef Tell interested readers of the source that the return value is not
checked by intend.

Found by:	Coverity Prevent (tm)
CID:		55
Reviewed by:	ariff
2007-03-31 13:38:12 +00:00
Hidetoshi Shimokawa
437a3435c5 Teardown interrupt only when sc->ih is not NULL.
MFC after: 3 days
2007-03-30 22:25:26 +00:00
Hidetoshi Shimokawa
b34b30c5af Free tlabel in fw_xfer_done(). 2007-03-30 15:43:56 +00:00
Hidetoshi Shimokawa
f8d062cf84 - Don't call fw_busreset() in firewire_attach().
This should fix the problem that the first bus reset is
sometimes ignored because of FWBUSRESET status.

MFC after: 3 days
2007-03-30 14:41:24 +00:00
Matt Jacob
c6048aee5d some minor error message cleanups 2007-03-29 21:29:26 +00:00
Maxim Konovalov
991555c9c0 o Revert last. The chip is already supported by puc(4).
Pointed out by:	marcel, Joseph Terner
2007-03-29 04:26:52 +00:00
Nate Lawson
5394d87e21 Re-enable the HPET timer after a resume.
Submitted by:	Andrea Bittau <a.bittau@cs.ucl.ac.uk>
MFC after:	3 days
2007-03-28 22:28:48 +00:00
Maxim Konovalov
747bef5b85 o Add MosChip 9835 PCI Dual UART PCI id.
PR:		kern/110967
Submitted by:	Joseph Terner
MFC after:	1 month
2007-03-28 18:56:27 +00:00
Marcel Moolenaar
ebecffe930 For embedded UARTs compatible with the ns8250 family it is possible
that the driver clock is identical to the processor or bus clock.
This is the case for the PowerQUICC processor. When the clock is
high enough, overflows happen in the calculation of the time it
takes to send 1/10 of a character, used in delay loops. Fix the
overflows so as to fix bugs in the delay loops that can cause either
insufficient delays or excessive delays.
2007-03-28 18:34:59 +00:00