Commit graph

20070 commits

Author SHA1 Message Date
Pyun YongHyeon
eac2bf0ee0 MFC r202406:
Don't free mbuf chains when bge(4) fails to collapse the mbuf
  chains. This part of code is to enhance performance so failing the
  collapsing should not free TX frames. Otherwise bge(4) will
  unnecessarily drop frames which in turn can freeze the network
  connection.

  Reported by:	Igor Sysoev (is <> rambler-co dot ru)
  Tested by:	Igor Sysoev (is <> rambler-co dot ru)
2010-01-21 00:53:00 +00:00
Pyun YongHyeon
85f51ebea9 MFC r202294:
Add check for fiber mode for BCM5714 PHY. This PHY supports both
  copper and fiber interfaces over GMII so an explicit check is
  necessary to know whether it was configured for fiber interface.
  This change make BCM5715S work.

  Tested by:	olli
  PR:	kern/122551
2010-01-21 00:49:14 +00:00
Pyun YongHyeon
29a6686087 MFC r202293:
For controllers that has dual mode PHY(copper or fiber) interfaces
  over GMII, make sure to enable GMII. With this change brgphy(4) is
  used to handle the dual mode PHY. Since we still don't have a sane
  way to pass PHY specific information to mii(4) layer special
  handling is needed in brgphy(4) to determine which mode of PHY was
  configured in parent interface.
  This change make BCM5715S work.

  Tested by:	olli
  Obtained from:	OpenBSD
  PR:	kern/122551
2010-01-21 00:45:12 +00:00
Pyun YongHyeon
d92c7395bf MFC r202269:
Add BCM5754 PHY id that is found on Dell Studio XPS 16.
2010-01-21 00:37:14 +00:00
Konstantin Belousov
dc657f6117 MFC r198429, r198439, r198468, r201209, r201822, r201882:
Syncronize iwn(4) driver in stable/8 with HEAD.

Approved by:	rpaulo
2010-01-20 15:22:34 +00:00
Alexander Motin
6c35bbee61 MFC r201222:
Usually these controllers are able to automatically decode command code to
get required command protocol. But they have no idea about new commands,
such as DATA SET MANAGEMENT (TRIM). As soon as this info any way provided
by CAM, give controller specific instructions.
2010-01-19 13:36:12 +00:00
Alexander Motin
f288580266 MFC r200814:
Clear all ports interrupt status bits in single write. Clearing one by one
causes additional MSIs messages sent if several ports asked for attention
same time. Time window before clearing is not important, as these interrupts
are level triggered by interrupt source.
2010-01-19 13:33:31 +00:00
Alexander Motin
89dbf1bfd5 MFC r201993:
Report which of IXP700 legacy ATA channels are SATA.
2010-01-19 13:27:54 +00:00
Alexander Motin
4c75a1d302 MFC r200857:
Add support for Intel SCH PATA controller.

PR:             kern/140251
2010-01-19 13:26:45 +00:00
Alexander Motin
44f39e7d59 MFC r200817:
Spell AMD properly.
2010-01-19 13:25:31 +00:00
Alexander Motin
f59a7ba7ba MFC r200754:
Add VIA CX700/VX800 chipsets SATA/PATA support.

PR:             kern/121521
2010-01-19 13:24:11 +00:00
Alexander Motin
1c2e876f53 MFC r200753:
Fairly set master/slave shared PIO/WDMA timings on ITE 821x controllers.
Previous implementation could only limit mode, but not rise it back.
2010-01-19 13:21:25 +00:00
Alexander Motin
928e4114fe MFC r200655:
Serverworks OSB4 has no 0x4a (piomode) register, do not touch it.
Also OSB4 has some problems with UDMA transfers, limit it to WDMA2.
2010-01-19 13:07:25 +00:00
Alexander Motin
b136f43d44 MFC r201990:
- Report SATA in legacy emulation mode still as SATA.
- Make ATA XPT able to handle such case.
2010-01-19 13:00:33 +00:00
Andrew Thompson
300db511e2 MFC r202054
Add the Globetrotter GE40x.
2010-01-17 18:36:22 +00:00
Andrew Thompson
ebd4481685 MFC r201766
Remove unneeded includes.
2010-01-17 18:33:47 +00:00
Andrew Thompson
dd079737f0 MFC r201714
Fix debug printf on 64bit arches.
2010-01-17 18:33:05 +00:00
Andrew Thompson
09a54b8e79 MFC r201701
Add new umass quirks for Western Digital MYBook and JMicron JM20337.

PR:		usb/142225, usb/142228
Submitted by:	Thomas Ward, Yoshikazu GOTO
2010-01-17 18:32:20 +00:00
Andrew Thompson
9d25e8387f MFC r201681
Improve u3g device ejecting by providing additional methods for the eject
 command in the usb_msctest routines, as well as a general tidyup.
2010-01-17 18:31:27 +00:00
Andrew Thompson
6b5b582259 MFC r201680
scratch_size was incorrectly passed as language ID when retrieving the language
 ID table, this broke string retrieval on some devices.

Submitted by:	Hans Petter Selasky
Reported by:	Renato Botelho
2010-01-17 18:30:37 +00:00
Andrew Thompson
e8f0a2d170 MFC r201318
Add new device ID to uipaq driver

PR:		usb/141936
Submitted by:	HASHI Hiroaki
2010-01-17 18:29:30 +00:00
Andrew Thompson
bc4acc704f MFC r202181,202243,202270
Add a driver by Fredrik Lindberg for Option HSDPA USB devices. These differ
 from standard 3G wireless units by supplying a raw IP/IPv6 endpoint rather than
 using PPP over serial. uhsoctl(1) is used to initiate and close the WAN
 connection.

Obtained from:	Fredrik Lindberg <fli@shapeshifter.se>
2010-01-17 18:22:42 +00:00
Mitsuru IWASAKI
d077836245 MFC r201605: Update acpi_ibm syctl nodes on resume. 2010-01-17 06:24:09 +00:00
Alexander Motin
ea0c5a5936 Partially revert r202428. There is no bus_describe_intr() on RELENG_8. 2010-01-16 07:55:46 +00:00
Alexander Motin
392777822f MFC r202011:
While AHCI specification tells that multi-vector MSI doesn't use global IS
register, nVidia chipsets have different oppinion, requiring every interrupt
to be acknowledged there.

While there, add interrupt descriptions in multi-vector MSI mode.
2010-01-15 23:58:37 +00:00
Marius Strobl
5896e2fa27 MFC: r201009
Remove clause 3 from Izumi Tsutsui's licenses.

Obtained from:	NetBSD
2010-01-15 16:29:40 +00:00
Marius Strobl
b70d493910 MFC: r201008
Style changes

Obtained from:	NetBSD (mc146818reg.h)
2010-01-15 16:27:57 +00:00
Marius Strobl
2a2cbae7cb MFC: r201005, r201371
- Take advantage of bus_{read,write}_*(9).
- Set dow = -1 in mk48txx_gettime() because some drivers (for example
  the NetBSD and OpenBSD mk48txx(4)) don't set it correctly.
2010-01-15 15:47:31 +00:00
Marius Strobl
1051ec0b8a MFC: r201004
Remove clause 3 and 4 from TNF licenses.

Obtained from:	NetBSD
2010-01-15 15:42:14 +00:00
Marius Strobl
3425abf549 MFC: r201003
Style changes
2010-01-15 15:40:44 +00:00
Pyun YongHyeon
6b15d2af78 MFC r200950,200955,200965-200966,201767-201768
r200950:
  Implement RX interrupt moderation using one-shot timer interrupt.
  Unlike TX interrupt, ST201 does not provide any mechanism to
  suppress RX interrupts. ste(4) can generate more than 70k RX
  interrupts under heavy RX traffics such that these excessive
  interrupts make system useless to process other useful things.
  Maybe this was the major reason why polling support code was
  introduced to ste(4).
  The STE_COUNTDOWN register provides a programmable counter that
  will generate an interrupt upon its expiration. We program
  STE_DMACTL register to use 3.2us clock rate to drive the counter
  register. Whenever ste(4) serves RX interrupt, the driver rearm
  the timer to expire after STE_IM_RX_TIMER_DEFAULT time and disables
  further generation of RX interrupts. This trick seems to work well
  and ste(4) generates less than 8k RX interrupts even under 64 bytes
  UDP torture test. Combined with TX interrupts, the total number of
  interrupts are less than 10k which looks reasonable on heavily
  loaded controller.

  The default RX interrupt moderation time is 150us. Users can change
  the value at any time with dev.ste.%d.int_rx_mod sysctl node.
  Setting it 0 effectively disables the RX interrupt moderation
  feature. Now we have both TX/RX interrupt moderation code so remove
  loop of interrupt handler which resulted in sub-optimal performance
  as well as more register accesses.

r200955:
  Add suspend/resume support as well as basic WOL.
  While I'm here simplify SIOCSIFCAP handler.

r200965:
  Update if_iqdrops in case of RX buffer allocation failure.

r200966:
  ether_ifattach sets if_mtu, remove unnecessary code.

r201767:
  Fix EEPROM access code to return data in host byte order.
  EEPROM on ST201 always returns 16bits data with little endian
  format so conversion to host order is required.
  This change fixes inversed ethernet address on sparc64.

r201768:
  Make sure to store dma address of RX buffer in little endian form.
  This fixes the last bug which keeps ste(4) from working on sparc64.
2010-01-14 22:26:52 +00:00
Pyun YongHyeon
812b4b875d MFC r200904-200908,200910-200913
r200904:
  Don't reinitialize controller if driver is already running. This
  reduces number of link state UP/DOWN changes.

r200905:
  Reimplement controller reset. Datasheet says full reset takes about
  1ms. Since we switched to memory register mapping make sure to
  flush PCI posted write by reading the register again.
  While I'm here add additional delays in loop while driver waits the
  completion of the reset.

r200906:
  Overhaul RX filter programming.
   o Let RX filter handler program promiscuous/multicast filter as
     well as broadcasting.
   o Remove unnecessary register access.
   o Simplify ioctl handler and have set_rxfilter to handle
     IFF_PROMISC and IFF_ALLMULTI change instead of directly
     programming the controller.
   o Removed unnecessary error variable reinitialization in ioctl
     handler.
   o Add IFF_DRV_RUNNING check before programming multicast filter.
   o Configure maximum allowed frame length before enabling MAC.
     Datasheet didn't say the exact ordering of programming sequence
     but it looks more natural to set maximum allowed frame length
     first prior to enabling controller.

r200907:
  Don't report link status if driver is not running.

r200908:
  Report the correct result of mii_mediachg(). Previously it always
  used to return success without respect to the result.
  While I'm here use mii_mediachg() in ste_init_locked which allows
  driver to use currently configured media. ste_ifmedia_upd() is
  supposed to be called whenever user changes current media settings.

r200910:
  Implement hardware MAC statistics counter support. The counters
  could be accessed with dev.ste.0.stats sysctl node.

r200911:
  Remove unused duplicated register definition. It seems the
  definition was made to access STE_ASICCTL register as 16bits but
  ste(4) always access the register as 32bits so it was never used
  before.

r200912:
  Correct STE_COUNTDOWN register offset. The datasheet was wrong.

r200913:
  We don't need to generate DMA complete interrupt for every
  transmitted frames. So request interrupt for every 16th frames. Due
  to the limitation of hardware we can't suppress the interrupt as
  driver should have to check TX status register. The TX status
  register can store up to 31 TX status so driver can't send more
  than 31 frames without reading TX status register.
  With this change controller would not generate TX completion
  interrupt for every frame, so reclaim transmitted frames in
  ste_tick().
2010-01-14 22:15:51 +00:00
Pyun YongHyeon
0d9ae5891e MFC r200854,200856,200865,200873,200875,200877,200884
r200854:
  Add minimal dealy while ste(4) is waiting for the end of active DMA
  cycle.

r200856:
  Introduce sc_flags member variable and use it to keep track of
  link state and PHY related information.
  Remove ste_link and ste_one_phy variable of softc as it's not used
  anymore.
  While I'm here add IFF_DRV_RUNNING check in ste_start_locked().

r200865:
  Reimplement miibus_statchg method. Don't rely on link state change
  interrupt. If we want to use link state change interrupt ste(4)
  should also implement auto-negotiation complete handler as well as
  various PHY access handling. Now link state change is handled by
  mii(4) polling so it will automatically update link state UP/DOWN
  events which in turn make ste(4) usable with lagg(4).

  r199559 added a private timer to drive watchdog and the timer also
  used to drive MAC statistics update. Because the MAC statistics
  update is called whenever statistics counter reaches near-full, it
  drove watchdog timer too fast such that it caused false watchdog
  timeouts under heavy TX traffic conditions.
  Fix the regression by separating ste_stats_update() from driving
  watchdog timer and introduce a new function ste_tick() that handles
  periodic job such as driving watchdog, MAC statistics update and
  link state check etc.
  While I'm here clear armed watchdog timer in ste_stop().

r200873:
  Instead of relying on hard resetting of controller to stop
  receiving incoming traffics, try harder to gracefully stop active
  DMA cycles and then stop MACs. This is the way what datasheet
  recommends and seems to work reliably. Resetting controller while
  active DMAs are in progress is bad thing as we can't predict how
  DMAs touche allocated TX/RX buffers. This change ensures controller
  stop state before attempting to release allocated TX/RX buffers.
  Also update MAC statistics which could have been updated during the
  wait time of MAC stop.

  While I'm here remove unnecessary controller resets in various
  location. ste(4) no longer relies on hard controller reset to stop
  controller and resetting controller also clears all configured
  settings which makes it hard to implement WOL in near future.
  Now resetting a controller is performed in ste_init_locked().

r200875:
  Prefer memory space register mapping over io space. If memory space
  mapping fails fall back to old io space mapping.
  While I'm here use PCIR_BAR macro.

r200877:
  Prefer bus_write_{1,2,4}/bus_read_{1,2,4} to
  bus_space_write_{1,2,4}/bus_space_read_{1,2,4}.
  Remove unused ste_bhandle and ste_btag in softc.

r200884:
  Reimplement Tx status error handler as recommended by datasheet.
  If ste(4) encounter TX underrun or excessive collisions the TX MAC
  of controller is stalled so driver should wake it up again. TX
  underrun requires increasing TX threshold value to minimize
  further TX underruns. Previously ste(4) used to reset controller
  to recover from TX underrun, excessive collision and reclaiming
  error. However datasheet says only TX underrun requires resetting
  entire controller. So implement ste_restart_tx() that restarts TX
  MAC and do not perform full reset except TX underrun case.
  Now ste(4) uses CSR_READ_2 instead of CSR_READ_1 to read
  STE_TX_STATUS register. This way ste(4) will also read frame id
  value and we can write the same value back to STE_TX_FRAMEID
  register instead of overwriting it to 0. The datasheet was wrong
  in write back of STE_TX_STATUS so add some comments why we do so.
  Also always invoke ste_txeoc() after ste_txeof() in ste_poll as
  without reading TX status register can stall TX MAC.
2010-01-14 22:00:33 +00:00
Pyun YongHyeon
0f9ecfd9cc MFC r200853:
Add bus_dma(9) and endianness support to ste(4).
   o Sorted includes and added missing header files.
   o Added basic endianness support. In theory ste(4) should work on
     any architectures.
   o Remove the use of contigmalloc(9), contigfree(9) and vtophys(9).
   o Added 8 byte alignment limitation of TX/RX descriptor.
   o Added 1 byte alignment requirement for TX/RX buffers.
   o ste(4) controllers does not support DAC. Limit DMA address space
     to be within 32bit address.
   o Added spare DMA map to gracefully recover from DMA map failure.
   o Removed dead code for checking STE_RXSTAT_DMADONE bit. The bit
     was already checked in each iteration of loop so it can't be true.
   o Added second argument count to ste_rxeof(). It is used to limit
     number of iterations done in RX handler. ATM polling is the only
     consumer.
   o Removed ste_rxeoc() which was added to address RX stuck issue
     (cvs rev 1.66). Unlike TX descriptors, ST201 supports chaining
     descriptors to form a ring for RX descriptors. If RX descriptor
     chaining is not supported it's possible for controller to stop
     receiving incoming frames once controller pass the end of RX
     descriptor which in turn requires driver post new RX
     descriptors to receive more frames. For TX descriptors which
     does not support chaning, we exactly do manual chaining in
     driver by concatenating new descriptors to the end of previous
     TX chain.
     Maybe the workaround was borrowed from other drivers that does
     not support RX descriptor chaining, which is not valid for ST201
     controllers. I still have no idea how this address RX stuck
     issue and I can't reproduce the RX stuck issue on DFE-550TX
     controller.
   o Removed hw.ste_rxsyncs sysctl as the workaround was removed.
   o TX/RX side bus_dmamap_load_mbuf_sg(9) support.
   o Reimplemented optimized ste_encap().
   o Simplified TX logic of ste_start_locked().
   o Added comments for TFD/RFD requirements.
   o Increased number of RX descriptors to 128 from 64. 128 gave much
     better performance than 64 under high network loads.
2010-01-14 21:45:39 +00:00
Andrew Gallatin
1d2d3276c2 MFC: r202120:
Update mxge(4) firmware to 1.4.48b (latest available) from Myricom.
2010-01-14 21:30:06 +00:00
Andrew Gallatin
ed0e6c2a44 MFC r202121:
Use better default RSS hash (src + dst, rather than just src port)
2010-01-14 21:10:36 +00:00
Andrew Gallatin
3070a40c8a MFC 202119: Fix reporting of 10G Twinax media 2010-01-14 20:59:02 +00:00
Pyun YongHyeon
41c95608a0 MFC r200798,200801,200803-200804,200808,200810
r200798:
  Use ANSI function definations.

r200801:
   o Remove unnecessary return statement.
   o Remove register keyword.

r200803:
  s/u_intXX_t/uintXX_t/g

r200804:
  Remove trailing white spaces.

r200808:
  style(9)

r200810:
  Sort function prototyes.
2010-01-14 20:47:49 +00:00
Pyun YongHyeon
699df0c4fa Partial merge r199559:
- Add a private timer to drive the transmit watchdog instead of using
    if_watchdog and if_timer.
  - Fix some issues in detach for sn(4), ste(4), and ti(4).  Primarily this
    means calling ether_ifdetach() before anything else.
2010-01-14 20:38:40 +00:00
Marius Strobl
74794d0d58 MFC: r200926
Recognize the NS16552 found in PCIe-based sun4u machines.
2010-01-13 21:21:29 +00:00
Marius Strobl
cd93dd27dd MFC: r200874
Enroll these drivers in multipass probing. The motivation behind this
is that the JBus to EBus bridges share the interrupt controller of a
sibling JBus to PCIe bridge (at least as far as the OFW device tree
is concerned, in reality they are part of the same chip) so we have to
probe and attach the latter first. That happens to be also the case
due to the fact that the JBus to PCIe bridges appear first in the OFW
device tree but it doesn't hurt to ensure the right order.
2010-01-13 20:03:24 +00:00
Marius Strobl
d9d6b39c57 MFC: r200815, r200816
Provide and consume missing module dependency information.
2010-01-13 19:59:13 +00:00
Andrew Gallatin
a5905446f8 Sync mxge(4) with head:
r197391: Add support for TX throttling
r198250: Move mxge(4)'s NIC watchdog reset handler from
	 a callout to a taskqueue
r198303: Make mxge do a better job recovering from NIC h/w faults
r200845: Don't take the driver mutex in mxge_tick()
r201758: Remove extraneous semicolons
2010-01-11 20:32:51 +00:00
Fabien Thomas
40095a24ed MFC 201151:
Use VFS_{LOCK,UNLOCK}_GIANT() around the call to vrele().
2010-01-10 16:08:14 +00:00
Fabien Thomas
a267011a08 MFC 201023:
* Support the L1D_CACHE_LD event on Core2 processors.
 * Correct a group of typos: for Core2 programmable events, check
   user supplied umask values against the correct event descriptor
   field.
2010-01-10 16:04:32 +00:00
Fabien Thomas
cd56dc4253 MFC 201021:
Log process mappings for existing processes at PMC start time.
2010-01-10 16:00:00 +00:00
Pyun YongHyeon
b7cf4e03b6 MFC r200693:
Make sure to enable Next Page bit for IP1001. Otherwise the PHY
  fails to re-establishe 1000baseT link after downgrading to
  10/100Mbps link.
2010-01-09 01:17:31 +00:00
Pyun YongHyeon
50a44b8b9b MFC r200696,200740,200756,200758-200759,200972
r200696:
  Add rudimentary WOL support. While I'm here remove enabling
  busmastering/memory address in resume path. Bus driver will handle
  that.

r200740:
  Swap VGE_TXQTIMER and VGE_RXQTIMER register definition. Pending
  timer for Tx queue is at 0x3E.

r200756:
  Correct fragment bit definition in comments.

r200758:
  VT6130 datasheet was wrong. If VT6130 receive a jumbo frame the
  controller will split the jumbo frame into multiple RX buffers.
  However it seems the hardware always dma the frame to 8 bytes
  boundary for the split frames. Only the first part of the fragment
  can have 4 byte alignment and subsequent buffers should be 8 bytes
  aligned. Change RX buffer the alignment requirement to 8 bytes from
  4 bytes.

r200759:
  Disable jumbo frame support for PCIe VT6130/VT6132 controllers.
  Quite contrary to VT6130 datasheet which says it supports up to 8K
  jumbo frame, VT6130 does not seem to send jumbo frame that is
  larger than 4K in length. Trying to send a frame that is larger
  than 4K cause TX MAC hang.
  Even though it's possible to allow 4K jumbo frame for VT6130, I
  think it's meaningless to allow 4K jumbo frame. I'm not sure VT6132
  also has the same limitation but I guess it uses the same MAC of
  VT6130.

r200972:
  Remove wrong assertion.
2010-01-09 00:26:57 +00:00
Pyun YongHyeon
6f311c8682 MFC r200638:
Implement interrupt moderation scheme supported by VT61xx
  controllers. TX/RX interrupt mitigation is controlled by
  VGE_TXSUPPTHR and VGE_RXSUPPTHR register. These registers suppress
  generation of interrupts until the programmed frames counter equals
  to the registers. VT61xx also supports interrupt hold off timer
  register. If this interrupt hold off timer is active all interrupts
  would be disabled until the timer reaches to 0. The timer value is
  reloaded whenever VGE_ISR register written. The timer resolution is
  about 20us.

  Previously vge(4) used single shot timer to reduce Tx completion
  interrupts. This required VGE_CRS1 register access in Tx
  start/completion handler to rearm new timeout value and it did not
  show satisfactory result(more than 50k interrupts under load). Rx
  interrupts was not moderated at all such that vge(4) used to
  generate too many interrupts which in turn made polling(4) better
  approach under high network load.

  This change activates all interrupt moderation mechanism and
  initial values were tuned to generate interrupt less than 8k per
  second. That number of interrupts wouldn't add additional packet
  latencies compared to polling(4). These interrupt parameters could
  be changed with sysctl.
  dev.vge.%d.int_holdoff
  dev.vge.%d.rx_coal_pkt
  dev.vge.%d.tx_coal_pkt
  Interface has be brought down and up again before change take
  effect.

  With interrupt moderation there is no more need to loop in
  interrupt handler. This loop always added one more register access.
  While I'm here remove dead code which tried to implement subset of
  interrupt moderation.
2010-01-09 00:17:43 +00:00
Pyun YongHyeon
babaf83d9a MFC r200616-200617,200635,200639,200644
r200616:
  Add new flag VGE_FLAG_SUSPENDED to mark suspended state and
  remove suspended member in softc.

r200617:
  Add "Velocity" to probe message which will make it clearer which
  ethernet controller was recognized. VIA consistently calls
  "Velocity" family for gigabit ethernet controllers. For fast
  ethernet controllers they uses "Rhine" family(vr(4) controllers))
  and vr(4) already shows "Rhine" in probe message.

r200635:
  Remove unused VGE_ETHER_ALIGN definition.

r200639:
  Actually clear interrupts. Writing 0 has no effect.

r200644:
  Remove unused member variable of softc.
2010-01-09 00:12:59 +00:00
Pyun YongHyeon
2e04b85932 MFC 200615:
Add hardware MAC statistics support. This statistics could be
  extracted from dev.vge.%d.stats sysctl node.
2010-01-09 00:07:03 +00:00
Pyun YongHyeon
b907792655 MFC r200551-200552,200555,200558,200609,200613
r200551:
  Whenever link state change interrupt is raised, vge_tick() is
  called and vge(4) used to drive auto-negotiation timer(mii_tick) in
  vge_tick(). Therefore the mii_tick was not called for every hz such
  that auto-negotiation complete was never handled in vge(4).
  Use mii_pollstat to extract current negotiated speed/duplex instead
  of mii_tick. The latter is valid only for auto-negotiation case.
  While I'm here change the confusing function name vge_tick() to
  vge_link_statchg().

r200552:
  Report media change result to caller instead of returning success
  without regard to the result.

r200555:
  Don't report current link status if interface is not UP.
  If interface is not UP, the current link status wouldn't
  reflect the negotiated status.

r200558:
  Tell upper layer vge(4) supports long frames. This should be done
  after ether_ifattach(), as ether_ifattach() initializes it with
  ETHER_HDR_LEN.
  While I'm here remove setting if_mtu, it's already handled in
  ether_ifattach().

r200609:
  All vge(4) controllers support RX/TX checksum offloading for VLAN
  tagged frames so add checksum offloading capabilities. Also add
  missing VLAN hardware tagging control in ioctl handler and let
  upper stack know current VLAN capabilities.

r200613:
  Rewrite RX filter setup and simplify code.
  Now promiscuous mode and multicast handling is performed in single
  function, vge_rxfilter().
2010-01-09 00:02:40 +00:00
Pyun YongHyeon
b79a3f6583 MFC r200538,200540-200541,200543,200545,200548
r200538:
  Introduce vge_flags member in softc. The vge_flags member will
  record device specific bits. Remove vge_link and use vge_flags.
  While here, move clearing link state before mii_mediachg() as
  mii_mediachg() may affect link state.

r200540:
  Save PHY address by reading VGE_MIICFG register. For PCIe
  controllers(VT613x), we assume the PHY address is 1.
  Use the saved PHY address in MII register access routines and
  remove accessing VGE_MIICFG register.
  While I'm here save PCI express capability register which will be
  used in near future.

r200541:
  Add MSI support for VT613x controllers.

r200543:
  Increase output queue size from 64 to 255.

r200545:
  We don't have to reload EEPROM in vge_reset(). Because vge_reset()
  is called in vge_init_lock(), vge(4) always used to reload EEPROM.
  Also add more comment why vge(4) clears VGE_CHIPCFG0_PACPI bit.
  While I'm here add missing new line in vge_reset().

r200548:
  Sort function prototyes.
2010-01-08 22:26:24 +00:00
Pyun YongHyeon
ef22705259 MFC r200526-200527,200529,200531-200533,200536
r200526:
  Use PCIR_BAR instead of hard-coded value.

r200527:
  Fix typo in register definition.

r200529:
  Clear VGE_TXDESC_Q bit for transmitted frames. The VGE_TXDESC_Q bit
  seems to work like a tag that indicates 'not list end' of queued
  frames. Without having a VGE_TXDESC_Q bit indicates 'list end'. So
  the last frame of multiple queued frames has no VGE_TXDESC_Q bit.
  The hardware has peculiar behavior for VGE_TXDESC_Q bit handling.
  If the VGE_TXDESC_Q bit of descriptor was set the controller would
  fetch next descriptor. However if next descriptor's OWN bit was
  cleared but VGE_TXDESC_Q was set, it could confuse controller.
  Clearing VGE_TXDESC_Q bit for transmitted frames ensure correct
  behavior.

r200531:
  Use ANSI function definations.

r200532:
  Remove unnecessary return statement.

r200533:
  s/u_intXX_t/uintXX_t/g

r200536:
  style(9).
2010-01-08 22:08:18 +00:00
Pyun YongHyeon
bce2400f8c MFC r200525:
Overhaul bus_dma(9) usage and fix various things.
   o Separate TX/RX buffer DMA tag from TX/RX descriptor ring DMA tag.
   o Separate RX buffer DMA tag from common buffer DMA tag. RX DMA
     tag has different restriction compared to TX DMA tag.
   o Add 40bit DMA address support.
   o Adjust TX/RX descriptor ring alignment to 64 bytes from 256
     bytes as documented in datasheet.
   o Added check to ensure TX/RX ring reside within a 4GB boundary.
     Since TX/RX ring shares the same high address register they
     should have the same high address.
   o TX/RX side bus_dmamap_load_mbuf_sg(9) support.
   o Add lock assertion to vge_setmulti().
   o Add RX spare DMA map to recover from DMA map load failure.
   o Add optimized RX buffer handler, vge_discard_rxbuf which is
     activated when vge(4) sees bad frames.
   o Don't blindly update VGE_RXDESC_RESIDUECNT register. Datasheet
     says the register should be updated only when number of
     available RX descriptors are multiple of 4.
   o Use __NO_STRICT_ALIGNMENT instead of defining VGE_FIXUP_RX which
     is only set for i386 architecture. Previously vge(4) also
     performed expensive copy operation to align IP header on amd64.
     This change should give RX performance boost on amd64
     architecture.
   o Don't reinitialize controller if driver is already running. This
     should reduce number of link state flipping.
   o Since vge(4) drops a driver lock before passing received frame
     to upper layer, make sure vge(4) is still running after
     re-acquiring driver lock.
   o Add second argument count to vge_rxeof(). The argument will
     limit number of packets could be processed in RX handler.
   o Rearrange vge_rxeof() not to allocate RX buffer if received
     frame was bad packet.
   o Removed if_printf that prints DMA map failure. This type of
     message shouldn't be used in fast path of driver.
   o Reduce number of allowed TX buffer fragments to 6 from 7. A TX
     descriptor allows 7 fragments of a frame. However the CMZ field
     of descriptor has just 3bits and the controller wants to see
     fragment + 1 in the field. So if we have 7 fragments the field
     value would be 0 which seems to cause unexpected results under
     certain conditions. This change should fix occasional TX hang
     observed on vge(4).
   o Simplify vge_stat_locked() and add number of available TX
     descriptor check.
   o vge(4) controllers lack padding short frames. Make sure to fill
     zero for the padded bytes. This closes unintended information
     disclosure.
   o Don't set VGE_TDCTL_JUMBO flag. Datasheet is not clear whether
     this bit should be set by driver or write-back status bit after
     transmission. At least vendor's driver does not set this bit so
     remove it. Without this bit vge(4) still can send jumbo frames.
   o Don't start driver when vge(4) know there are not enough RX
     buffers.
   o Remove volatile keyword in RX descriptor structure. This should
     be handled by bus_dma(9).
   o Collapse two 16bits member of TX/RX descriptor into single 32bits
     member.
   o Reduce number of RX descriptors to 252 from 256. The
     VGE_RXDESCNUM is 16bits register but only lower 8bits are valid.
     So the maximum number of RX descriptors would be 255. However
     the number of should be multiple of 4 as controller wants to
     update 4 RX descriptors at a time. This limits the maximum
     number of RX descriptor to be 252.

PR:	kern/141276, kern/141414
2010-01-08 21:37:16 +00:00
Pyun YongHyeon
f2940816a8 MFC r200519-200522
r200519:
  Remove register keyword.

r200520:
  Prefer device_printf(9) to printf(9).

r200521:
  Fix spelling in comment.

r200522:
  Prefer bus_alloc_resource_any(9) to bus_alloc_resource(9).
2010-01-08 21:25:52 +00:00
Pyun YongHyeon
6d2fb73028 MFC r198987,199414,199543,200422
Partial merge r198987:
  Use device_printf() and if_printf() instead of printf() with an explicit
  unit number and remove 'unit' members from softc.

Partial merge r199414:
  Use the bus_*() routines rather than bus_space_*() for register operations.

r199543:
  Several fixes to this driver:
  - Overhaul the locking to avoid recursion and add missing locking in a few
    places.
  - Don't schedule a task to call vge_start() from contexts that are safe to
    call vge_start() directly.  Just invoke the routine directly instead
    (this is what all of the other NIC drivers I am familiar with do).  Note
    that vge(4) does not use an interrupt filter handler which is the primary
    reason some other drivers use tasks.
  - Add a new private timer to drive the watchdog timer instead of using
    if_watchdog and if_timer.
  - Fixup detach by calling ether_ifdetach() before stopping the interface.

r200422:
  Remove driver lock assertion in MII register access. This change
  was made in r199543 to remove MTX_RECURSE. These routines can be
  called in device attach phase(e.g. mii_phy_probe()) so checking
  assertion here is not right as caller does not hold a driver lock.
2010-01-08 21:15:09 +00:00
Gavin Atkinson
aab57f153b MFC r200994:
Set the locally-assigned bit in the randomly generated Ethernet address
  if we end up having to generate one.

PR:		kern/133239
Discussed with:	yongari
Approved by:	ed (mentor, implicit)
2010-01-08 10:13:27 +00:00
Pyun YongHyeon
02b41ac4df MFC r200088,200227-200228,200246,200264,201446
r200088:
  Add workaround to overcome hardware limitation which allows only a
  single outstanding DMA read operation. Most controllers targeted to
  client with PCIe bus interface(e.g. BCM5761) may have this
  limitation. All controllers for servers does not have this
  limitation.
  Collapsing mbuf chains to reduce number of memory reads before
  transmitting was most effective way to workaround this. I got about
  940Mbps from 850Mbps with mbuf collapsing on BCM5761. However it
  takes a lot of CPU cycles to collapse mbuf chains so add tunable to
  control the number of allowed TX buffers before collapsing. The
  default value is 0 which effectively disables the forced collapsing.
  For most cases 2 would yield best performance(about 930Mbps)
  without much sacrificing CPU cycles.
  Note the collapsing is only activated when the controller is on
  PCIe bus and the frame does not need TSO operation. TSO does not
  seem to suffer from the hardware limitation because the payload
  size is much bigger than normal IP datagram.
  Thanks to davidch@ who told me the limitation of client controllers
  and actually gave possible workarounds to mitigate the limitation.

r200227:
  Remove PHY isolate/power down code in bge_stop(). The isolation
  handler in brgphy(4) does not exist and brgphy(4) just resets the
  PHY and returns EINVAL as it has no isolation handler. I also agree
  on Marius's opinion that stop handler of every NIC driver seems to
  be the wrong place for implementing PHY isolate/power down.
  If we need PHY isolate/power down it should be implemented in
  brgphy(4) and users should administratively down the PHY.

r200228:
  Don't access jumbo frame related registers if controller lacks the
  feature. These registers are reserved on controllers that have no
  support for jumbo frame.
  Only BCM5700 has mini ring so do not poke mini ring related
  registers if controller is not BCM5700.

r200246:
  Partially revert r200228. For mini RCB case, bge(4) still have to
  disable mini ring withtout regard to mini ring support.

r200264:
  Create sysctl node(dev.bge.%d.focred_collapse) instead of
  hw.bge.forced_collapse. hw.bge.forced_collapse affects all bge(4)
  controllers on system which may not desirable behavior of the
  sysctl node. Also allow the sysctl node could be modified at any
  time.

r201446:
  Fix regression introduced in r198318. BCM5754/BCM5754M uses the
  same ASIC ID of BCM5758 such that r198318 incorecctly enabled TSO
  on BCM5754.BCM5754M controllers. BCM5754/BCM5754M needs a special
  firmware to enable TSO and bge(4) does not support firmware based
  TSO.
2010-01-07 00:55:07 +00:00
Pyun YongHyeon
56ab4ace6f MFC r199670-199671,199674,199679,199761,199807-199808
r199670:
  Fix two long standing bugs on bge(4). Most pre BCM5755 controllers
  have a DMA bug when buffer address crosses a multiple of the 4GB
  boundary(e.g. 4GB, 8GB, 12GB etc). Limit DMA address to be within
  4GB address for these controllers. The second DMA bug limits DMA
  address to be within 40bit address space. This bug applies to
  BCM5714 and BCM5715 and 5708(bce(4) controller). This is not
  actually a MAC controller bug but an issue with the embedded PCIe
  to PCI-X bridge in the device. So for BCM5714/BCM5715 controllers
  also limit the DMA address to be within 40bit address space.
  Special thanks to davidch@ who gave me detailed errata information.
  I think this change will fix long standing bge(4) instability
  issues on systems with more than 4GB memory.

r199671:
  Implement TSO for BCM5755 or newer controllers. Some controllers
  seem to require a special firmware to use TSO. But the firmware is
  not available to FreeBSD and Linux claims that the TSO performed by
  the firmware is slower than hardware based TSO. Moreover the
  firmware based TSO has one known bug which can't handle TSO if
  ethernet header + IP/TCP header is greater than 80 bytes. The
  workaround for the TSO bug exist but it seems it's too expensive
  than not using TSO at all. Some hardwares also have the TSO bug so
  limit the TSO to the controllers that are not affected TSO issues
  (e.g. 5755 or higher).
  While I'm here set VLAN tag bit to all descriptors that belengs to
  a frame instead of the first descriptor of a frame. The datasheet
  is not clear how to handle VLAN tag bit but it worked either way in
  my testing. This makes it simplify TSO configuration a little bit.

  Big thanks to davidch@ who sent me detailed TSO information.
  Without this I was not able to implement it.

r199674:
  Add missing function prototype in r199671.

r199679:
  Reduce status block size DMAed by controller. bge(4) uses single
  Tx/Rx/Rx return ring such that large part of status block was not
  used at all. All bge(4) controllers except BCM5700 AX/BX has a
  feature to control the size of status block. So use minimum status
  block size allowed in controller. This reduces number of DMAed
  status block size to 32 bytes from 80 bytes.

r199761:
  BGE_FLAG_40BIT_BUG should be set before creating DMA tags.

r199807:
  Make sure one shot MSI is enabled.

r199808:
  Fix typo which inversed the logic which in turn disabled MSI.
2010-01-07 00:44:54 +00:00
Pyun YongHyeon
eefce03276 MFC r199667-199668
r199667:
  Cache Rx producer/Tx consumer index as soon as we know status block
  update and then clear status block. Previously it used to access
  these index without synchronization which may cause problems when
  bounce buffers are used. Also add missing bus_dmamap_sync(9) in
  polling handler. Since we now update status block in driver, adjust
  bus_dmamap_sync(9) for status block.

r199668:
  For MSI case, interrupt is not shared and we don't need to force
  PCI flush to get correct status block update. Add an optimized
  interrupt handler that is activated for MSI case. Actual interrupt
  handling is done by taskqueue such that the handler does not
  require driver lock for Rx path. The MSI capable bge(4) controllers
  automatically disables further interrupt once it enters interrupt
  state so we don't need PIO access to disable interrupt in interrupt
  handler.
2010-01-06 23:42:15 +00:00
Pyun YongHyeon
1377b76a28 MFC 199663-199666
r199663:
  Due to newly added PCIe capabilities fallback code for finding the
  PCIe capability did not work right on recent controllers. Remove
  FreeBSD 6.x support code.

r199664:
  Use capability pointer to access PCIe registers rather than
  directly access them at fixed address. While I'm here don't touch
  other bits of PCIe device control register except max payload size.

r199665:
  Controller does not write Rx descriptors, remove BUS_DMASYNC_PREREAD.

r199666:
  Rearrange bge_start_locked to see we can send more frames by
  checking IFF_DRV_RUNNING and IFF_DRV_OACTIVE flags. Also if we
  have less than 16 free send BDs set IFF_DRV_OACTIVE and try it
  later. Previously bge(4) used to reserve 16 free send BDs after
  loading dma maps but hardware just need one reserved send BD. If
  prouder index has the same value of consumer index it means the Tx
  queue is empty.
  While I'm here check IFQ_DRV_IS_EMPTY first to save one lock
  operation.
2010-01-06 23:34:53 +00:00
Pyun YongHyeon
ed797ec921 MFC r199065,199115-199116,199153,199661-199662
r199065:
  Correct disabling checksum offloading for BCM5700 B0.

r199115:
  Add missing bus_dmamap_sync(9) before issuing kick command.

r199116:
  Zero out Tx/Rx descriptors before using them. Also add missing
  bus_dmamap_sync(9) after Tx descriptor initialization.

r199153:
  Controller does not update Tx descriptors(send BDs) after sending
  frames so remove unnecessary BUS_DMASYNC_PREREAD and
  BUS_DMASYNC_POSTREAD of bus_dmamap_sync(9).

r199661:
  Remove extra white space.

r199662:
  Fix typo introduced in r199011.
2010-01-06 23:26:09 +00:00
Pyun YongHyeon
1a03353586 MFC r198967,199009-199011,199014,199020,199035-199036,199054
r198967:
  Correct MSI mode register bits.

r199009:
  bge(4) already switched to use UMA backed page allocator and local
  memory allocator for jumbo frame was removed long time ago. Remove
  no more used macros.

r199010:
  Do bus_dmamap_sync call only if frame size is greater than
  standard buffer size. If controller is not capable of handling
  jumbo frame, interface MTU couldn't be larger than standard MTU
  which in turn the received should be fit in standard buffer. This
  fixes bus_dmamap_sync call for jumbo ring is called even if
  interface is configured to use standard MTU.
  Also if total frame size could be fit into standard buffer don't
  use jumbo buffers.

r199011:
  Reimplement Rx buffer allocation to handle dma map load failure.
  Introduce two spare dma maps for standard buffer and jumbo buffer
  respectively. If loading a dma map failed reuse previously loaded
  dma map. This should fix unloaded dma map is used in case of dma
  map load failure. Also don't blindly unload dma map and defer
  dma map sync and unloading operation until we know dma map for new
  buffer is successfully loaded. This change saves unnecessary dma
  load/unload operation. Previously bge(4) tried to reuse mbuf
  with unloaded dma map which is really bad thing in bus_dma(9)
  perspective.
  While I'm here update if_iqdrops if we can't allocate Rx buffers.

r199014:
  Fix I mssied in r199011. Rx ring index also should be updated.
  If we fill Rx ring full instead of half we can simplify this logic
  but this requires more experimentation.

r199020:
  Tell upper layer we support long frames. ether_ifattach()
  initializes it to ETHER_HDR_LEN so we have to override it after
  calling ether_ifattch().
  While I'm here remove setting if_mtu value, it's initialized in
  ether_ifattach().

r199035:
  Don't count input errors twice, we always read input errors from
  MAC in bge_tick. Previously it used to show more number of input
  errors. I noticed actual input errors were less than 8% even for
  64 bytes UDP frames generated by netperf.
  Since we always access BGE_RXLP_LOCSTAT_IFIN_DROPS register in
  bge_tick, remove useless code protected by #ifdef notyet.

r199036:
  Count number of inbound packets which were chosen to be discarded
  as input errors. Also count out of receive BDs as input errors.

r199054:
  Partially revert r199035.
  Revision 1.158 says only lower ten bits of
  BGE_RXLP_LOCSTAT_IFIN_DROPS register is valid. For BCM5761 case it
  seems the controller maintains 16bits value for the register.
  However 16bits are still too small to count all dropped packets
  happened in a second. To get a correct counter we have to read the
  register in bge_rxeof() which would be too expensive.
2010-01-06 23:02:35 +00:00
Pyun YongHyeon
2c8f00d0c7 MFC r198923-198924,198927-198928
r198923:
  Use correct dma tag for jumbo buffer.

r198924:
  Covert bge_newbuf_std to use bus_dmamap_load_mbuf_sg(9). Note,
  bge_newbuf_std still has a bug for handling dma map load failure
  under high network load. Just reusing mbuf is not enough as driver
  already unloaded the dma map of the mbuf. Graceful recovery needs
  more work.
  Ideally we can just update dma address part of a Rx descriptor
  because the controller never overwrite the Rx descriptor. This
  requires some Rx initialization code changes and it would be done
  later after fixing other incorrect bus_dma(9) usages.

r198927:
  Remove common DMA tag used for TX/RX mbufs and create Tx DMA tag
  and Rx DMA tag separately. Previously it used a common mbuf DMA tag
  for both Tx and Rx path but Rx buffer(standard ring case) should
  have a single DMA segment and maximum buffer size of the segment
  should be less than or equal to MCLBYTES. This change also make it
  possible to add TSO with minor changes.

r198928:
  Make bge_newbuf_std()/bge_newbuf_jumbo() returns actual error code
  for buffer allocation. If driver know we are out of Rx buffers let
  controller stop. This should fix panic when interface is run even
  if it had no configured Rx buffers.
2010-01-06 22:45:49 +00:00
Gavin Atkinson
ef80613c4b MFC r200820:
Support the tablet in (at least) the Toshiba Portege M200 Tablet PC.
  This device only appears on the ACPI bus, so isn't caught by the current
  entry for it in the uart(4) ISA attachment.

PR:		kern/140172
Reviewed by:	jhb, marcel
Approved by:	ed (mentor, implicit)
2010-01-06 20:40:41 +00:00
Jung-uk Kim
a0a23c9727 MFC: r200251
- Try pre-allocating all FIBs upfront.  Previously we tried pre-allocating
128 FIBs first and allocated more later if necessary.  Remove now unused
definitions from the header file[1].
- Force sequential bus scanning.  It seems parallel scanning is in fact
slower and causes more harm than good[1].  Adjust a comment to reflect that.
2010-01-06 20:28:47 +00:00
John Baldwin
e10b0dfd66 MFC 200847:
- Rename the __tcpi_(snd|rcv)_mss fields of the tcp_info structure to remove
  the leading underscores since they are now implemented.
- Implement the tcpi_rto and tcpi_last_data_recv fields in the tcp_info
  structure.
2010-01-05 17:04:14 +00:00
Alexander Motin
579a42937d MFC 200977:
Avoid false positive probe on ICH6 chipsets.
2010-01-05 14:03:46 +00:00
Alexander Motin
aaa35fa853 MFC 200991:
Teach twe driver to report array stripe size to GEOM.
2010-01-05 14:02:12 +00:00
Gavin Atkinson
dfb1009882 MFC r200993: Small spelling fix, "Ethetnet" -> "Ethernet"
Approved by:	ed (mentor)
2010-01-02 13:07:14 +00:00
Gavin Atkinson
d36f5405ca MFC 200637:
Don't panic due to unlocking an unowned mutex if we fail during attach.

PR:		kern/139053
Reviewed by:	scottl
Approved by:	ed (mentor)
2009-12-31 12:58:08 +00:00
Andrew Thompson
c774a6224a Sync usbdevs to fix the build.
Pointy hat:	me
2009-12-31 06:59:15 +00:00
Andrew Thompson
10280e6d17 MFC r201071
Compact USB_VENDOR_X and USB_PRODUCT_Y in the quirk tables.
2009-12-31 00:30:45 +00:00
Andrew Thompson
dc72f7b46c MFC r201028
Use macros to strip off USB_VENDOR_ and USB_PRODUCT_ from some id tables to make
 them more compact and readable.
2009-12-31 00:20:54 +00:00
Andrew Thompson
4ab13ae19c MFC r200887
Shorten the USB_QUIRK_ENTRY macro and undef it at the end, its only internal.
2009-12-31 00:19:52 +00:00
Andrew Thompson
596828bab2 MFC r200886
Move all Mass Storage Quirks over to the USB quirk module.

Submitted by:	Hans Petter Selasky
2009-12-31 00:19:16 +00:00
Andrew Thompson
d5b8cd8366 MFC r200885
Sync usb vendor/product defines to p4
2009-12-31 00:18:38 +00:00
Andrew Thompson
c13e362184 MFC r200827
Add missed usb product define in r200826.
2009-12-31 00:17:59 +00:00
Andrew Thompson
ba0bb08c53 MFC r200826
add new ID to UFTDI driver.

Submitted by:	YAMAMOTO, Shigeru
2009-12-31 00:17:09 +00:00
Andrew Thompson
a33c9e7236 MFC r200825
- add support for more than 2 audio channels. [1]
 - add support for more sample rates

Submitted by:	[1] ariff (earlier version), Hans Petter Selasky
2009-12-31 00:15:36 +00:00
Andrew Thompson
afc2c8aef9 MFC r200823
Add more OHCI pci ids.
2009-12-31 00:14:37 +00:00
Andrew Thompson
3a1f0cab5d MFC r200822
Add more EHCI pci ids.
2009-12-31 00:14:02 +00:00
Andrew Thompson
9d774551fc MFC r200658
Keep list sorted.
2009-12-31 00:13:24 +00:00
Andrew Thompson
71db0b9765 MFC r200657
Add a bunch of new 3G ids obtained from from various operating systems and
 Internet sources.
2009-12-31 00:12:38 +00:00
Andrew Thompson
ee4e4d544f MFC r200653
Use the EVENTHANDLER system to hook into the usb device configuration and
 perform a function such as ejecting a 3G autoinstaller disk. The eventhandler
 system properly tracks threads and is safe to unload, remove the
 setting/clearing of a function pointer in the kernel by u3g(4) which included a
 tsleep for safety.
2009-12-31 00:10:26 +00:00
Andrew Thompson
e065c35e2a MFC r200396
Wrap long lines.
2009-12-31 00:08:59 +00:00
Andrew Thompson
a1028b88ba MFC r200395
Add a quirk for the Curitel UM175 where setting multiplexing for call
 management over the data endpoint causes communication to die.

 Take this one step further and model it on the existing NetBSD quirk and import
 other device IDs from them.

Obtained from:	NetBSD
2009-12-31 00:08:17 +00:00
Andrew Thompson
65701ca05f MFC r200308
Fix hardware issue with FTDI chips: avoid sending a zero length packet due to
 hardware sending garbage on ZLPs.

Reported by:	Corey Smith
Submitted by:	HPS
2009-12-31 00:07:37 +00:00
Andrew Thompson
3656a8fb15 MFC r200307
Fix dwSignature for NCM mode and add extra debug output.
2009-12-31 00:06:52 +00:00
Andrew Thompson
bb1fb02ae2 MFC r200306
Add new device ids.

PR:		usb/140951, usb/140923
Submitted by:	Romain Tartiere, Brett Glass
2009-12-31 00:06:12 +00:00
Andrew Thompson
2510f6c6df MFC r200305
Correct name, 82801IJ -> 82801JI
2009-12-31 00:05:28 +00:00
Andrew Thompson
cd3192b39a MFC r200304
If the ID byte is non zero then we allow descriptors having multiple sizes.
2009-12-31 00:04:48 +00:00
Andrew Thompson
eed2c0622f MFC r200087
Add uhci/ehci controller ids.

Submitted by:	mitya_cabletv.dp.ua
2009-12-31 00:04:05 +00:00
Andrew Thompson
1749b20333 MFC r199332
Sort ID list by vendor.
2009-12-31 00:03:29 +00:00
Matt Jacob
82d11b0301 MFC of 198329: Check pointer for NULL before dereferencing it, not after. 2009-12-27 22:50:25 +00:00
Matt Jacob
fc946fd026 MFC 200620,200621: fix argument order to mtx_init call. 2009-12-27 22:49:34 +00:00
Rui Paulo
ea5454c586 MFC r200524:
Pass all IEs to net80211.

PR:		141376
Submitted by:	Paul <onemda at gmail.com>
2009-12-26 18:25:52 +00:00
Rui Paulo
91e379a2a8 MFC r198366:
Don't use BUS_DMA_ALLOCNOW as that causes the attachment to fail on
 Cambria boards.
2009-12-26 18:23:21 +00:00
Jaakko Heinonen
48c7a87696 MFC r198520, r198857: fdc(4) module unload fixes
PR:		kern/104079
Approved by:	trasz (mentor)
2009-12-23 11:35:25 +00:00
Alexander Motin
b57c18c4ed MFC r200375:
Add one more set of codec IDs.
2009-12-22 20:17:03 +00:00
Alexander Motin
989435a380 MFC r200414:
CFA support doesn't exclude FLUSH support.
2009-12-22 20:00:20 +00:00
Marius Strobl
9624f980b1 MFC: r200544
Set ATA_CHECKS_CABLE when appropriate.

Reviewed by:	mav
2009-12-21 20:17:34 +00:00
Pyun YongHyeon
83e8bd69b3 MFC r199563,199608-199613
r199563:
  Fix copy & paste error and remove extra space before colon.
r199608:
  Remove unnecessary structure packing.
r199609:
  Add initial endianness support. It seems the controller supports
  both big-endian and little-endian format in descriptors for Rx path
  but I couldn't find equivalent feature in Tx path. So just stick to
  little-endian for now.
r199610:
  Because we know received bytes including CRC there is no reason to
  call m_adj(9). The controller also seems to have a capability to
  strip CRC bytes but I failed to activate this feature except for
  loopback traffic.
r199611:
  Add IPv4/TCP/UDP Tx checksum offloading support. It seems the
  controller also has support for IP/TCP checksum offloading for Rx
  path. But I failed to find to way to enable Rx MAC to compute the
  checksum of received frames.
r199612:
  Add __FBSDID.
r199613:
  Only Tx checksum offloading is supported now. Remove experimental
  code sneaked in r199611.
2009-12-21 18:52:38 +00:00
Pyun YongHyeon
a7053a5568 MFC r199558,199561
r199558:
  Use bus_{read,write}_4 rather than bus_space_{read,write}_4.
r199561:
  Use capability pointer to access PCIe registers rather than
  directly access them at fixed address. Frequently the register
  offset could be changed if additional PCI capabilities are added to
  controller.
  One odd thing is ET_PCIR_L0S_L1_LATENCY register. I think it's PCIe
  link capabilities register but the location of the register does
  not match with PCIe capability pointer + offset. I'm not sure it's
  shadow register of PCIe link capabilities register.
2009-12-21 18:34:18 +00:00
Pyun YongHyeon
d44acd7311 MFC r199553,199556
r199553:
  Remove extra spce at the EOL.
r199556:
  style(9)
2009-12-21 18:28:37 +00:00
Pyun YongHyeon
73e0051db9 MFC r199550-199552:
r199550:
  Remove support code for FreeBSD 6.x versions.
r199551:
  Destroy driver mutex in device detach.
r199552:
  Add MSI support.
2009-12-21 18:16:07 +00:00
Pyun YongHyeon
3e05e771bd MFC r199548:
Remove complex macros that were used to compute bits values.
  Although these macros may have its own strength, its complex
  definition make hard to read the code.

  Approved by:  delphij
2009-12-21 18:07:15 +00:00
Ruslan Ermilov
3135744c59 MFC r200666: Fixed incorrect watchdog timeout setting.
PR:		kern/130512
2009-12-21 13:53:33 +00:00
Andriy Gapon
5e860e7b2f MFC r199969: amdsbwd: new driver for AMD SB600/SB7xx watchdog timer 2009-12-21 05:58:55 +00:00
Marius Strobl
b4aa1acbfb MFC: r200482, r200485
o Properly support M5229 revision 0xc7 and 0xc8:
  - These revisions no longer have cable detection capability.
  - The UDMA support bit of register 0x4b has been dropped without an
    replacement.
  - According to Linux it's crucial for working ATAPI DMA support to
    also set the reserved bit 1 of regsiter 0x53 with these revisions.
o Only set ATA_CHECKS_CABLE for chip versions that actually support
  cable detection, i.e. neither for ALI_OLD nor for ALI_NEW revisions
  >= 0xc7.
2009-12-20 01:44:47 +00:00
Marius Strobl
3759df8ec6 MFC: r200481
Specify the capability and media bits of the capabilities page in
native, i.e. big-endian, format and convert as appropriate like we
also do with the multibyte fields of the other pages. This fixes
the output of acd_describe() to match reality on big-endian machines
without breaking it on little-endian ones. While at it, also convert
the remaining multibyte fields of the pages read although they are
currently unused for consistency and in order to prevent possible
similar bugs in the future.
2009-12-20 01:38:01 +00:00
Konstantin Belousov
fb70e2f700 MFC r199355:
Add SI_KERNEL.

MFC r199418:
Fix pgsignal() call after signature change in r199355.
2009-12-19 12:06:12 +00:00
Andriy Gapon
4f1d01f565 MFC r200053,200091: ichsmb: drop default attachment to generic smbus hw
Note that r200091 completely overrides r200053 and the merge of the
former is recorded for bookkeeping only.
r200091 won't be merged to 'more stable' branche(s) because of the POLA.
2009-12-19 11:05:42 +00:00
Andriy Gapon
416d0d62ae MFC r200602: ichsmb: add another pci id 2009-12-19 10:52:32 +00:00
John Baldwin
5fe2bb8a58 MFC 200037:
ndis_scan_results() can sleep if the scan results are not ready when
ndis_scan() is called.  However, ndis_scan() is invoked from softclock()
and cannot sleep.  Move ndis_scan_results() to the ndis driver's scan_end
hook instead.
2009-12-18 18:30:49 +00:00
Marius Strobl
23c703cfc8 MFC: r200459
Unbreak the ata_atapi() usage. Since r200171 (MFC'ed in r200432) the
mode setting functions get a ata_device type device passed instead of
a ata_channel one, thus ata_atapi() has to be adjusted accordingly.

Reviewed by:	mav
2009-12-16 18:39:32 +00:00
Alexander Motin
2750344277 MFC r200607:
Large I/Os on Promise controllers reported to cause UDMA ICRC errors and
subsequent timeouts. Restore previous limit for now, at least until
I will have hardware to experiment.

PR:             kern/141438
2009-12-16 17:48:26 +00:00
Stanislav Sedov
8e11fcdb91 MFC r198318:
- On entrance to the rx_eof sync RX rings maps with POSTWRITE flag
    instead of POSTREAD: the hardware do not touch this memory (CPU
    updates it).  It is already synchronized as PREWRITE after the
    processing is done.
2009-12-15 10:16:57 +00:00
Stanislav Sedov
abc1e8de6c - MFC r197832, r197834, r197837:
- Add support for new BGE chips (5761, 5784 and 57780).  These chips uses new
    BGE_PCI_PRODID_ASICREV register to store the chip identifier and its revision.
  - Add new grouping macro for 7575+ chips (BGE_IS_5755_PLUS).
  - Add IDs for Fujitsu-branded Broadcom adapters.
2009-12-15 10:00:00 +00:00
Marcel Moolenaar
e88e64d392 MFC rev 200397:
Fix interrupt handling.

PR:		kern/140947
2009-12-14 17:42:40 +00:00
Robert Watson
d9adc7058d Merge r199798 from head to stable/8:
Fix comment typo.

  Submitted by: Marc Balmer <marc at msys.ch>
2009-12-14 13:23:33 +00:00
Robert Noland
cb9f09f873 MFC r198694,r198697
Some general cleanup of scatter/gather memory allocation

     - We don't need to check malloc return values with M_WAITOK
     - remove variables that we don't really need
     - cleanup the error paths by just calling drm_sg_cleanup()
     - fix drm_sg_cleanup() to be safe to call at any time
2009-12-13 15:03:54 +00:00
Robert Noland
5cba3b218f MFC 198332
Check pointer for NULL before dereferencing it, not after.

Originally committed by:	brueffer
2009-12-13 14:55:50 +00:00
Alexander Motin
71e7360ed9 MFC r200171, r200182, r200275, r200295, r200359:
Introduce ATA_CAM kernel option, turning ata(4) controller drivers into
cam(4) interface modules. When enabled, this option deprecates all ata(4)
peripheral drivers (ad, acd, ...) and interfaces and allows cam(4) drivers
(ada, cd, ...) and interfaces to be natively used instead.

As side effect of this, ata(4) mode setting code was completely rewritten
to make controller API more strict and permit above change. While doing
this, SATA revision was separated from PATA mode. It allows DMA-incapable
SATA devices to operate and makes hw.ata.(ata|atapi)_dma tunable work again.

Also allow ata(4) controller drivers (except some specific or broken ones)
to handle larger data transfers. Previous constraint of 64K was artificial
and is not really required by PCI ATA BM specification or hardware.

Submitted by:   nwitehorn (powerpc part)
2009-12-12 10:37:31 +00:00
Marcel Moolenaar
f695ba479e MFC rev 200045:
Include <sys/sysctl.h>, to get the declarations of ostype and
osrelease. Remove the duplicate declarations from this file.
2009-12-12 04:34:22 +00:00
Nathan Whitehorn
a8fb2bf194 MFC r199888:
Add support for interpreting taps on ADB touchpads as a button click.

Submitted by:	Andreas Tobler <andreast-list at fgznet dot ch>
2009-12-12 02:34:00 +00:00
Alexander Motin
248e8fd706 MFC r200353:
Limit maximum I/O size, depending on command set supported by device.
It is required to suppot non-LBA48 devices with MAXPHYS above 128K.
Same is done in ada(4).
2009-12-11 12:44:44 +00:00
Fabien Thomas
68d2ef77eb MFC 196739:
Add counters for the i7 architecture which were accidentally left
out of the original commit of i7 support.  These are all the counters
on pages A-32 and A-33 of the _Intel(R) 64 and IA32 Architectures
Software Developer's Manual Vol 3B_, June 2009.  Almost all
of these counters relate to operations on the L2 cache.
2009-12-11 12:36:02 +00:00
Alexander Motin
151681ac53 MFC r199846:
Add two Cirrus Logic codec IDs.
Add GPIO setting quirk for Apple MacBookPro5,5.

Submitted by:   ed
2009-12-11 01:06:30 +00:00
Marcel Moolenaar
d87439e7b6 MFC rev 200230:
Add support for the NetMos NM9865 family of Serial/Parallel ports.
2009-12-10 05:45:40 +00:00
Andrew Thompson
c9e072d090 MFC r199677
add support for MIDI devices without audio control stream.

Submitted by:	Hans Petter Selasky
2009-12-09 23:12:52 +00:00
Andrew Thompson
e4f658cee0 MFC r199576
remove volume alignment (was previously not correctly implemented)
2009-12-09 23:12:14 +00:00
Andrew Thompson
9d294893a4 MFC r199060
Improve support for High-speed USB audio devices.
 - fix issues regarding the mixer, where the interface number was not set in
   time.
 - fix wrong use of resolution parameter.

Submitted by:	Hans Petter Selasky
2009-12-09 23:11:27 +00:00
Andrew Thompson
40e55da3d1 MFC r196487
Remove redundant Giant reference. Giant will be dropped
 automatically when the mutex argument is NULL.
2009-12-09 23:10:32 +00:00
Andrew Thompson
c1b5138fc1 MFC r199816
Remove overuse of exclamation marks in kernel printfs, there mere fact a
 message has been printed is enough to get someones attention. Also remove the
 line number for DPRINTF/DPRINTFN, it already prints the funtion name and a
 unique message.
2009-12-09 22:42:40 +00:00
Andrew Thompson
fd29c5e00e MFC r199814
Disable interrupts after doing early takeover of the usb controller in case usb
 isnt actually compiled in (or kldloaded) as the controller could cause spurious
 interrupts.
2009-12-09 22:41:50 +00:00
Andrew Thompson
044745556c MFC r199718
Actually disable interrupts in ehci_detach().
2009-12-09 22:41:11 +00:00
Andrew Thompson
0ae254cb36 MFC r199676
Correct register access for USB device side operation on the musb controller.

Submitted by:	Hans Petter Selasky
2009-12-09 22:40:27 +00:00
Andrew Thompson
c7838bf992 MFC r199675
Provide tunables for some of the usb sysctls that affect boot behaviour.

Submitted by:	Andriy Gapon
2009-12-09 22:39:09 +00:00
Andrew Thompson
4cd01f7750 MFC r199673
Initialise variable before use.

Submitted by:	Hans Petter Selasky
2009-12-09 22:38:02 +00:00
Andrew Thompson
b7167d5d0d MFC r199672
Improve High Speed slot allocation mechanism by moving the computation to the
 endpoint rather than per xfer and provide functions around get/free of resources.

Submitted by:	Hans Petter Selasky
2009-12-09 22:37:06 +00:00
Andrew Thompson
62460f64ff MFC r199062
Correct Olympus quirk.

Submitted by:	Pavel Gubin
2009-12-09 22:36:16 +00:00
Andrew Thompson
2785d01590 MFC r199061
Add missing mtx_destroy().

Submitted by:	Sebastian Huber
2009-12-09 22:35:08 +00:00
Andrew Thompson
1250e0e321 MFC r199059
improve support for high speed isochronous endpoints which does not run 1:1,
 but needs intervalling 1:2, 1:4 or 1:8

Submitted by:	Hans Petter Selasky
2009-12-09 22:34:11 +00:00
Andrew Thompson
653a3d45c4 MFC r199057
ehci_init() will do reset and set the usbrev flag.  Fix problem where
 ehci_reset() was called before ehci_init().

PR:		usb/140242
Submitted by:	Sebastian Huber
2009-12-09 22:33:22 +00:00
Andrew Thompson
2265c34554 MFC r198776
- Add usb_fill_bulk_urb() and usb_bulk_msg() linux compat functions [1]
 - Don't write actual length if the actual length pointer is NULL [2]
 - correct Linux Compatibility error codes for short isochronous IN transfers
   and make status field signed.

Submitted by:	Leunam Elebek [1], Manuel Gebele [2]
2009-12-09 22:32:36 +00:00
Andrew Thompson
975199a5ac MFC r198774
Check unit number and provide string name for consdev.

Submitted by:	HPS
2009-12-09 22:31:45 +00:00
Andrew Thompson
c39d541d9f MFC r197761,r198194,r198862
updates device entries supported with the product name not magic numbers
 and sorts entries.  WUSB54GCV2 is added.

 overhauls urtw(4) for supporting RTL8187B devices properly that there
 was major changes to initialize RF chipset and set H/W registers and
 removed a lot of magic numbers on code.
2009-12-09 22:10:45 +00:00
Nathan Whitehorn
a4ca386425 MFC r199169:
Reduce probe priority of USB input devices to BUS_PROBE_GENERIC from
BUS_PROBE_SPECIFIC. This allows device-specific drivers like atp to
attach reliably.
2009-12-09 21:56:55 +00:00
Andrew Thompson
310ce38f75 MFC r199086,199151,199680,199948,200241
Driver for the Apple Touchpad present on MacBook (non-Pro & Pro).

Submitted by:	Rohit Grover <rgrover1 at gmail.com>
2009-12-09 21:47:42 +00:00
Alexander Motin
26952f96e5 MFC r200121:
Do not ignore device interrupt if bus mastering is still active. It is
normal in case of media read error and some ATAPI cases, when transfer size
is unknown beforehand. PCI ATA BM specification tells that in case of such
underrun driver should just manually stop DMA engine. DMA engine should
same time guarantie that all bus mastering transfers completed at the moment
of driver reads interrupt flag asserted.
This change fixes interrupt storms and command timeouts in many cases.

PR:             kern/103602, sparc64/121539, kern/133122, kern/139654
2009-12-09 17:20:10 +00:00
Alexander Motin
3ca1ec74ed MFC r200117:
On Soft Reset, read device signature from FIS receive area, instead of
PxSIG register. It works better for NVidia chipsets. ahci(4) does the same.

PR:             kern/140472, i386/138668
2009-12-09 17:11:09 +00:00
Alexander Motin
67c3bd2681 MFC r200223:
Explicitly acknowledge MSI completion, as required by SiI3124 datasheet.
It makes MSI working there. Later (and cheaper) PCIe chips (3132/3531)
still randomly crashing system in few seconds of high MSI rates, generating
something inaporopriate, like NMI or "Fatal trap 30".
2009-12-09 13:32:49 +00:00
Alexander Motin
0d8f2099fa MFC r200217:
SiI3124 has no SNotification register. Handle Asynchronous Notifications
there without it as good as possible.
2009-12-09 13:30:11 +00:00
Alexander Motin
240d980d7c MFC r200196:
Add Asynchronous Notification support for controllers without SNTF
capability by snooping SDB FIS receive area. It should be even faster
then regular way, but less reliable.
2009-12-09 13:27:06 +00:00
Andriy Gapon
66d19b8579 MFC r200052: ichsmb: add pci ids for some newer supported hardware 2009-12-08 15:14:55 +00:00
Fabien Thomas
86cff089e7 MFC 200060:
Use a better check for a valid kernel stack address when capturing
kernel call chains.
2009-12-07 20:49:49 +00:00
Fabien Thomas
29439ac7a1 MFC 198432:
Only claim that the PMC_CLASS_IAF PMCs are supported by a CPU if
there are PMCs on the CPU that belong to the class.
2009-12-07 20:40:48 +00:00
Navdeep Parhar
1dc03a9fc5 MFC r199237:
sc->rev and is_offload(sc) will always be 0 during probe.  Wait till
attach to get correct values.

(missed this one in r200175)
2009-12-06 01:59:06 +00:00
Navdeep Parhar
3b3920bc3c MFC r199237, r199238, r199239, r199240, r200003
r199237:
sc->rev and is_offload(sc) will always be 0 during probe.  Wait till
attach to get correct values.

r199238:
Make sure *some* edc is setup even for an unknown transceiver (assume
it is optical).

r199239:
The 10GBASE-T card should use an IPG of 1.  Also enable the check
for low power startup on this card.

r199240:
Don't disable the XGMAC's tx on ifconfig down.  It is unnecessary
and can cause false backpressure in the chip.  Fix a us/ms mixup
while here.

r200003:
T3 firmware 7.8.0 for cxgb(4)
2009-12-06 01:45:55 +00:00
Bjoern A. Zeeb
a1778929b7 MFC r197518:
lindev(4) [1] is supposed to be a collection of linux-specific pseudo
  devices that we also support, just not by default (thus only LINT or
  module builds by default).

  While currently there is only "/dev/full" [2], we are planning to see more
  in the future.  We may decide to change the module/dependency logic in the
  future should the list grow too long.

  This is not part of linux.ko as also non-linux binaries like kFreeBSD
  userland or ports can make use of this as well.

Suggested by:	rwatson [1] (name)
Submitted by:	ed [2]
Discussed with:	markm, ed, rwatson, kib (weeks ago)
Reviewed by:	rwatson, brueffer (prev. version)
PR:		kern/68961
2009-12-05 20:37:46 +00:00
Ed Maste
4816ae8d04 MFC r200001:
Fix parenthesis typo -- copy full frame pointer for userland callchain,
  not just one byte.

Submitted by:        Ryan Stone      rysto32 at gmail dot com
2009-12-05 17:07:43 +00:00
Pyun YongHyeon
9b96de9413 MFC r199565:
Move interface reinitialization down after disabling WOL in resume
  path.
2009-12-03 18:48:32 +00:00
Pyun YongHyeon
86032a4158 MFC r199564:
Minimize interface reinitialization by checking IFF_DRV_RUNNING
  flag. This fixes unnecessary interface UP/DOWNs during getting an
  IP address via DHCP.
2009-12-03 18:42:19 +00:00
Alexander Motin
06a7b83b5e MFC r199822:
Drop USB mass storage devices support from ata(4). It is out of the build as
long as I remember, and completely superseded by better maintained umass(4).
It's main idea was to optionally avoid CAM dependency for such devices, but
with move ATA to CAM, it is not actual any more.

No objections:  hselasky@, thompsa@, arch@
2009-12-02 10:47:11 +00:00
Alexander Motin
03b5c37446 MFC r199747, r199799, r199821:
- Extend XPT-SIM transfer settings control API. Now it allows to report to
SATA SIM number of tags supported by each device, implement ATA mode and
SATA revision negotiation for both SATA and PATA SIMs.
- Make ahci(4) and siis(4) to use submitted maximum tag number, when
scheduling requests. It allows to support NCQ on devices with lower tags
count then controller supports.
- Make PMP driver to report attached devices connection speeds.
- Implement ATA mode negotiation between user settings, device and
controller capabilities.
- Improve ATA mode/SATA revision control.
2009-12-02 10:32:34 +00:00
Fabien Thomas
baa1e3c69a MFC 199763:
- fix a LOR between process lock and pmc thread mutex
 - fix a system deadlock on process exit when the sample buffer
 is full (pmclog_loop blocked in fo_write) and pmcstat exit.
2009-12-01 23:06:17 +00:00
Fabien Thomas
7619fb0cbd MFC 198343:
Handle the case where there is only one PMC in the system.
2009-12-01 22:59:37 +00:00
Andriy Gapon
e9aa44c800 MFC r199016: acpi: remove 'magic' ivar
Note that the ivar itself is kept in the stable branches, only its use is
dropped.
2009-12-01 06:11:42 +00:00
Pyun YongHyeon
de75e77770 MFC r199413:
It seems generation of link state change of e1000phy(4) is not
  reliable on some Marvell PHYs. If msk(4) know it still does not
  have established link check whether msk(4) missed the link state
  change by looking into polled link state.

  Reported by:	Mel Flynn < mel.flynn+fbsd.current <> mailing.thruhere dot net >,
		Gleb Kurtsou <gleb.kurtsou <> gmail dot com >
  Tested by:	Gleb Kurtsou <gleb.kurtsou <> gmail dot com >
2009-11-29 20:19:24 +00:00
Pyun YongHyeon
75c4ab0ae9 MFC r199012:
Add preliminary Yukon Ultra 2 support(88E8057). The controller
  looks very similar to Yukon EC Ultra.

  Tested by:	kalin m ( kalin <> el dot net )
2009-11-29 19:58:35 +00:00
Pyun YongHyeon
30c8843f6a MFC 198996-198997.
r198996:
  Remove unnecessary header file.

r198997:
  It's normal to see Rx FIFO overruns under high network load and
  showing the message creates other side-effects. Remove the Rx
  FIFO overrun message in interrupt handler. msk(4) should recover
  from the FIFO overruns without any user intervention. Users can
  still check the Rx FIFO overrun counter from MAC MIB statistics
  maintained in driver(dev.msk.0.stats.rx.overflows).
2009-11-29 19:54:32 +00:00
Pyun YongHyeon
2ff1d99219 MFC 198814.
Add a check to know whether driver is still running after
  reacquiring driver lock in Rx handler. re(4) drops a driver lock
  before passing received frame to upper stack and reacquire the
  lock. During the time window ioctl calls could be executed and if
  the ioctl was interface down request, driver will stop the
  controller and free allocated mbufs. After that when driver comes
  back to Rx handler again it does not know what was happend so it
  could access free mbufs which in turn cause panic.

  Reported by:	Norbert Papke < npapk <> acm dot org >
  Tested by:	Norbert Papke < npapk <> acm dot org >
2009-11-29 19:49:21 +00:00
Pyun YongHyeon
cb08d589eb MFC 198813.
Add BCM5761 PHY id.
2009-11-29 19:46:15 +00:00
Pyun YongHyeon
4a288ceae9 MFC 197627.
Fix multicast handling. All Atheros controllers use big-endian form
  in computing multicast hash.

  PR:	kern/139137
2009-11-29 19:29:11 +00:00
Pyun YongHyeon
621838143b MFC 197600.
For AR8132 fast ethernet controller, do not report 1000baseT
  capability to mii(4). Even though AR8132 uses the same model/
  revision number of F1 gigabit PHY, the PHY has no ability to
  establish 1000baseT link. I have no idea why Atheros use the same
  device/model id for this PHY.
  With this change atphy(4) does not report 1000baseT media
  capability and manual 1000baseT configuration is also disabled
  which is more desirable behavior for 10/100Mbps PHY.
2009-11-29 19:25:15 +00:00
Pyun YongHyeon
02b6f045fe MFC 197592.
Add DGE-560SX(Yukon XL) to the supported device list. Many thanks
  to "Eugene Perevyazko <john <> dnepro dot net>" who kindly gave
  remote access to system with DGE-560SX.
2009-11-29 19:18:22 +00:00
Pyun YongHyeon
26ac5ae5da MFC 197591.
Add workaround for Yukon XL which has hardware bug that can't flush
  FIFO.
2009-11-29 19:15:08 +00:00
Pyun YongHyeon
4b4edd6101 MFC 197590.
Add hack to pass controller specific information to phy driver.
  Unlike most other PHYs there is no easy way to know which media
  type the PHY supports on Marvell PHYs. MIIF_HAVEFIBER flags is now
  passed via bus-specific instance variable of a device. While I'm
  here add 88E1112 specific work around to set SIGDET polarity low.
  Many thanks "Eugene Perevyazko <john <> dnepro dot net>" who kindly
  gave remote access to system with DGE-560SX.
2009-11-29 19:11:03 +00:00
Pyun YongHyeon
b76e9c0853 MFC 197589.
Fix MIB statistics clear routine. This should fix alignment errors on sparc64.

  Reported by:	Garrett Damore < gdamore <> opensolaris dot org >
2009-11-29 19:06:33 +00:00
Pyun YongHyeon
5bb9dc0d8f MFC 197588.
Some fiber PHY(88E1112) does not seem to set resolved speed so
  always assume we've got IFM_1000_SX.
2009-11-29 19:03:20 +00:00
Pyun YongHyeon
ee9449a145 MFC 197587.
Don't encode model id twice.

  Reported by:	Kristof Provost <kristof <> sigsegv dot be>
2009-11-29 18:59:43 +00:00
Pyun YongHyeon
e39d827775 MFC r197585.
Remove unnecessary device reinitialization.
2009-11-29 18:51:58 +00:00
Rafal Jaworowski
000d6fb9d9 MFC r199580:
tsec: Use IFQ_DRV macros for managing interface packet queue.

This lets tsec(4) work with ALTQ.

Submitted by:	Marcin Ligenza
2009-11-27 13:38:59 +00:00
Attilio Rao
08742bd257 MFC r199260:
Add sysctls in ahd(4) in order to keep track of different classes of
errors. So far 3 different classes are present (correctable,
uncorrectable and fatal) but more can be added easilly.

Sponsored by:	Sandvine Incorporated
2009-11-27 02:47:49 +00:00
Alexander Motin
c68cd0c40d MFC r199043:
Introduce hw.hptrr.attach_generic loader tunable to deny hptrr driver
attach chips with generic Marvell (non-HighPoint) PCI identification.
These chips are also supported by ata(4). Some vendors, like Supermicro,
are using same chips without providing HPT RAID BIOS.

PR:		kern/120842, kern/136750
2009-11-26 15:16:03 +00:00
Alexander Motin
0264833689 MFC r199645, r199646:
Fix Intel PATA UDMA timings setting, affecting write performance.
Binary divider value 10 specified in datasheet is not a hex 0x10.
UDMA2 should be 33/2 instead of 66/4, which is documented as reverved,
UDMA4 should be 66/2 instead of 66/4, which is definitely wrong.
Release over-agressive WDMA0 mode timings as close to spec as chip can.
2009-11-26 14:56:58 +00:00
Alexander Motin
052c5232f5 MFC r199749:
Use only lower byte of sectors_intr IDENTIFY word as sector count.
This fixes SET_MULTI error during boot on devices supporting less then
16 sectors per interrupt.
2009-11-26 14:50:01 +00:00
Alexander Motin
70f426fe84 MFC r199717:
Do not attach JMicrons with single PCI function. They are not working as
AHCI for some reason, even when declaring so. Let atajmicron configure
them for us and provide PATA support.
2009-11-26 08:29:02 +00:00
Rui Paulo
6772a8e0d0 MFC r199491:
Add WorldB SKU.
2009-11-25 14:54:58 +00:00
Kip Macy
7d326ccdfc remove gratuitous comment 2009-11-25 01:51:07 +00:00
Kip Macy
0039b95019 MFC core dump support 2009-11-25 01:50:17 +00:00
Alexander Motin
506ef9edb8 MFC r199258:
Add more codec IDs.
2009-11-23 09:28:16 +00:00
Alexander Motin
2c5d7e80c6 MFC r197611, r197640:
- Add some bits of HDMI/DisplayPort support from later specification updates.
It may be not enough to make them work, but at least should give some
information about these beasts.
- Add Realtek ALC887 codec ID.
2009-11-23 09:26:30 +00:00
Alexander Motin
c1ebbbc962 MFC r197018:
Add NVidia MCP89 HDA controller IDs.
2009-11-23 09:22:38 +00:00
Alexander Motin
95eaf85a77 MFC r197017:
Add Intel 82801JD (one more ICH10) HDA controller ID.
2009-11-23 09:21:35 +00:00
Alexander Motin
510e0aaa49 MFC r196762:
Improve HDA controller capabilities logging.
2009-11-23 09:20:33 +00:00
Alexander Motin
8f51326c68 MFC r199259, r199262, r199322:
Change the way in which AHCI+PATA combined controllers, such as JMicron
are handled. Instead of trying to attach two different drivers to
single device, wrapping each call, make one of them (atajmicron)
attach do device solely, but create child device for AHCI driver,
passing it all required resources. It is quite easy, as none of
resources are shared, except IRQ.
Add support for AHCI SATA parts of alike SATA+PATA MArvell controllers.
Add IDs of Marvell 88SX6102, 88SX6111. 88SX6141 controllers.

As result, it:
- makes drivers operation more independent and straitforward,
- allows to use new ahci(4) driver with such devices, adding support for
new features, such as PMP and NCQ, same time keeping legacy PATA support,
- will allow to just drop old ataahci driver, when it's time come.
2009-11-23 08:56:17 +00:00
Alexander Motin
0cde70967f MFC r198752:
Allow SATA1 SiI chips to do full-sized DMA. Specification tells that we may
release DMA constrants even more, but it require some additional handling.
2009-11-23 08:46:26 +00:00
Alexander Motin
555a8009dd MFC r198717:
- Remove most of direct relations between ATA(4) peripherial and controller
levels. It makes logic more transparent and is a mandatory step to wrap
ATA(4) controller level into ATA-native CAM SIM.
- Tune AHCI and SATA2 SiI drivers memory allocation a bit to allow bigger
I/O transaction sizes without additional cost.
2009-11-23 08:45:17 +00:00
Alexander Motin
7c1a88d4f8 MFC r199333:
Do not require payload data to be aligned. It is not mentioned in datasheet
and works fine in practice.
2009-11-17 21:28:59 +00:00
Alexander Motin
c263e77659 MFC r199278:
Check SNCQ HBA capability bit when reporting NCQ support to CAM.
2009-11-17 21:27:21 +00:00
Alexander Motin
99695a07ce MFC r199178:
- Move tagged queueing control from ADA to ATA XPT. It allows to control
  device command queue length correctly. First step to support < 32 tags.
- Limit queue for non-tagged devices by 2 slots for ahci(4) and siis(4).
- Implement quirk matching for ATA devices.
- Move xpt_schedule_dev_sendq() from header to source file.
- Move delayed queue shrinking to the more expected place - element freeing.
- Remove some SCSIsms in ATA.
2009-11-17 21:23:05 +00:00
Alexander Motin
4799e6b756 MFC r199176:
Add set of chip IDs, known to support AHCI.
2009-11-17 21:21:27 +00:00
Alexander Motin
f629df5749 MFC r199132:
Organize device IDs and add some more of them.
2009-11-17 21:20:19 +00:00
Alexander Motin
ecc2f2f455 MFC r198896:
Do not unarm callout on request completion and change slot selection
algorithm as done in ahci(4). This saves some CPU time on high request
rates.
2009-11-17 21:00:02 +00:00
Alexander Motin
d54c3c6363 MFC r198852:
- Rework timeout handling, to make it more graceful for devices sharing
controller port (with PMP). Wait for other commands completion/timeout
before initiating recovery.
- Handle timeouts and fatal errors with port hard-reset. The rest of
recovery will be done by XPT on receiving async event. More gracefull
per-device soft-reset recovery can be implemented later.
2009-11-17 20:59:00 +00:00
Alexander Motin
bf60b82344 MFC r198851:
- Handle timeouts and fatal errors with port hard-reset. The rest of
recovery will be done by XPT on receiving async event. More gracefull
per-device soft-reset recovery can be implemented later.
- Add workaround for ATI SB600/SB700 PMP probe related bug, to speedup boot.
2009-11-17 20:57:35 +00:00
Alexander Motin
e587ad07dc MFC r198426:
Reimplement device reset sequence in more controller-specific way.
2009-11-17 20:35:29 +00:00
Alexander Motin
47a0c6b476 MFC r198390:
Revert interrupt reason check order back.
ATAPI errors may set IF bit together with TFE.
2009-11-17 20:19:20 +00:00
Alexander Motin
2ab5a453f6 MFC r198321
Freeze device queue on error to permit periph driver to do proper recovery.
2009-11-17 19:42:06 +00:00
Alexander Motin
8f5dee240e MFC r198319:
On error, freeze device queue, to allow periph driver to do proper recovery.
Freeze SIM queue only in some cases, when it is needed to protect SIM.

Implement better command timeout detection logic for non-queued commands.
This fixes false positives when command with short timeout waiting for the
long one. For example, when hald tastes CD during burning process.

Read and clear SERR register on interrupt.
2009-11-17 19:40:39 +00:00
Alexander Motin
01007372f2 MFC r197838:
On command timeout handle frozen command first, to not run it inside
XXX_end_transaction().
2009-11-17 19:36:06 +00:00
Alexander Motin
db581aa0e3 MFC r198322:
Report real max_target = 15. SIM doesn't need to know that target 15 is PMP.
It is XPT business.
2009-11-17 14:49:35 +00:00
Alexander Motin
b06be4e00c MFC r196907:
To save small bit of CPU time, hide part of SNTF register read latency
behind other reads.
2009-11-17 14:47:40 +00:00
Bjoern A. Zeeb
422426a5f1 MFC r198049:
Immediately after clearing a pending callout that didn't make it due
  to the lock we hold, disable interrupts, and announce to the firmware
  that we are shutting down. Especially do this before disabling blocks.

  This makes some types of machines with asf enabled no longer hang upon
  boot, when we start configuring the interface.

PR:	i386/96382, kern/100410, kern/122252, kern/116328
2009-11-17 14:30:09 +00:00
Alexander Motin
b882e0398e MFC r199074:
Add more ICH10 chip IDs.
2009-11-17 12:30:06 +00:00
Alexander Motin
dfa1c364b8 MFC r198583:
Add some magic taken from OS X and Linux to support early revision K2
SATA controllers, like those found on the G5 Xserve.
2009-11-17 12:25:34 +00:00
Alexander Motin
3f2bdafd97 MFC r198582:
Turn off use of ATA_A_4BIT on modern hardware. This flag was already
obsoleted in 1996 by ATA-2, and crashes some modern hardware like some
revisions of the Serverworks K2 SATA controller. Even very ancient
hardware seems not to require it. In the unlikely event this causes
problems, the previous behavior can be re-enabled by defining
ATA_LEGACY_SUPPORT at the top of this file.
2009-11-17 12:23:14 +00:00
Alexander Motin
ba0e41c3cc MFC r198519:
Don't ignore the return value of g_modevent() in acd_modevent().
2009-11-17 12:18:14 +00:00
Andriy Gapon
7a04f19803 MFC r199015: ichwd: don't attach to isa pnp device(s) by accident 2009-11-17 09:35:13 +00:00
Jack F Vogel
95d8c74501 On a 32 bit kernel the igb driver may cause a page
fault panic due to a failed bounce page allocation
during RX mbuf setup. The large demand on bounce pages
is due to the alignment requirement in the tag. This
restriction was removed in the ixgbe driver with no
ill effects and so is being removed here also.
2009-11-16 18:58:45 +00:00
Stanislav Sedov
5b7c45037d - MFC r198320:
Introduce new option BCE_JUMBO_HDRSPLIT that allows user to enable header
  in bce(4) instead of (ab)using ZERO_COPY_SOCKETS that was not
  into if_bce.c anyway.  It is disabled by default.
2009-11-15 11:30:59 +00:00
Navdeep Parhar
bbec3bb581 MFC r197791
cxgb(4) updates, including:
- support for the new Gen-2, BT, and LP-CR cards.
- T3 firmware 7.7.0
- shared "common code" updates.
2009-11-12 00:20:31 +00:00
Navdeep Parhar
585be673c5 MFC r197043 2009-11-11 22:31:02 +00:00
Andrew Thompson
41de786582 MFC r199058
Integrate lost interrupts patch from the old USB stack.

 Some EHCI chips from VIA / ATI seem to trigger interrupts before writing back
 the qTD status, or miss signalling occasionally under heavy load.  If the host
 machine is too fast, we can miss transaction completion - when we scan the
 active list the transaction still seems to be active. This generally exhibits
 itself as a umass stall that never recovers.

 We work around this behaviour by setting up this callback after any softintr
 that completes with transactions still pending, giving us another chance to
 check for completion after the writeback has taken place

Submitted by:	Alexander Nedotsuko
2009-11-11 01:33:06 +00:00
Alexander Motin
58ad43feb1 MFC r198486, r199050:
Increase ATA command timeouts. Introduce define and kernel option
ATA_REQUEST_TIMEOUT to control it.

PR:		kern/111023
2009-11-10 22:37:44 +00:00
Xin LI
ce5c80071f MFC revision 199069:
Initialize the whole message unit's DMA buffer to zero, this fixes a panic
during boot when ARC1200 is being used with certain motherboard models.

This commit brings the driver to the same state of vendor's 1.20.00.16
release.  Many thanks to Areca for their continued support to FreeBSD.

This instant MFC was requested by re@ (kensmith) in preparation for
8.0-RC3.

Reported by:	Jirka Mikulas <jiri mikulas com>
Submitted by:	Erich Chen (Areca)
2009-11-10 00:34:25 +00:00
Ken Smith
973e10a816 MFC r198719:
> While certain supported Symbios/LSI SCSI chips (532c896, 53c1000, 53c1010)
> do support 64bit addresses, the current SCRIPTS code supports only 32bit
> addresses causing data corruption for buffer addresses >4GB. This problem
> affects 64bit machines with more than 4GB RAM or amd64 with 4GB and
> memory hole remapping.
> Work-around this problem with a bus_dma tag that requests bounce-buffers
> for addresses >4GB. This causes some overhead, but given the maximum SCSI
> bus speed of 160MB/s compared, the effect should hardly be noticeable.
> The problem was reported by Mike Watters (mike at mwatters net) who also
> verified that this fix cures the problem.
>
> Since this change is a NOOP on systems with less than 4GB RAM and fixes
> data corruption (in RAM and on disk) on systems with more than 4GB, I hope
> that this change is accepted for 8.0.

Requested by:	Stefan Esser (se at freebsd dot org)[1]
Reviewed by:	jhb, scottl

[1] Stefan requested this be part of 8.0 but has been unavailable to do
    the MFC since submitting the request.  We want to get 8.0-RC3 started
    so I'm doing the merges with re@ hat on.
2009-11-09 18:09:10 +00:00
Ulf Lilleengen
6ab1fc9fb1 MFC r198475:
- Add support for Marvell Yukon 88E8042 device.

Submitted by:   Mario Lobo <mlobo -at- digiart.art.br>
2009-11-08 17:59:55 +00:00
Alexander Motin
7d767be8c7 MFC r198818:
Add IDs for nVidia MCP65/77/79/89 SATA conntrollers.
2009-11-08 14:06:15 +00:00
Alexander Motin
cf236d24db MFC r198700:
Add support for different request block format used by Gen-IIe Marvell SATA.
This adds support for Marvell 6042/7042 chips and Adaptec 1430SA controller.

MFC r198718:
Allow newly added controllers to use full I/O sizes.
2009-11-06 10:56:43 +00:00
Alexander Motin
cdcdbef48e MFC r198407:
Do not differentiate 12/16 bytes ATAPI CCB formats when it is not needed.
2009-11-06 10:48:44 +00:00
Alexander Motin
74c174b9a7 MFC r197783:
- Revert r191568 partially.  Forcing AHCI mode by changing device subclass
and progif is evil.  It doesn't work reliably[1] and we should honor BIOS
configuration by the user.
- If the SATA controller is enbled but combined mode is disabled, mask off
the emulated IDE channel on the legacy IDE controller.

Pointed out by:	mav[1]
2009-11-06 10:45:37 +00:00
Christian Brueffer
c4e480716d MFC: r198684
Add support for Adaptec 39320LPE adapters.
2009-11-06 06:50:45 +00:00
Ed Maste
12fbadae8a MFC r198525:
Whitespace fixup: 8 spaces -> tab
2009-11-05 18:34:01 +00:00
Matt Jacob
699050d8d5 Unbreak SBus cards which have been broken (apparently) for a while.
Most of the pieces came from Marius- correct settings for channels
and resource management. The one piece missing was that you cannot
for SBus cards replace 32 bit operations with A64 operations- not
supported. This is an MFC of r198822.
2009-11-05 18:25:26 +00:00
Pyun YongHyeon
0b333599d5 MFC r197586:
It seems some 82559ER controllers do not support Rx checksum
  offloading. Datasheet said nothing about the limitation of 82559ER
  except WOL. Explicitly disable Rx checksum offloading for
  controllers that is known to lack the capability.

  PR:	kern/138135
  Tested by:	Gooderum, Mark < mgooderum <> websense dot com >
2009-11-04 18:31:43 +00:00
John Baldwin
6fd3786837 MFC 197772:
When the timeout backoff hits the maximum value, leave it capped at the
maximum value rather than setting it to the result of a boolean expression
that is always true.
2009-11-04 16:58:26 +00:00
Christian Brueffer
efab19fed7 MFC: r198546
Remove spurious `)`
2009-11-04 12:35:35 +00:00
Andrew Thompson
b64689e0fb MFC r198775
Fix a corner case where usbd_transfer_drain() can return too early if the
 callback has dropped the mutex, leading to a panic.

Submitted by:	HPS
2009-11-04 01:50:25 +00:00
Ed Maste
55dd54d73f MFC r197011:
Increase AAC_CMD_TIMEOUT from 30s to 120s to help avoid spurious
  "COMMAND 0x........ TIMEOUT AFTER .. SECONDS" messages.  Any commands
  that get truly stuck will still trigger the warning and the hardware
  health check, just a little bit later.
2009-11-02 16:54:23 +00:00
Ed Maste
af8e9d942c MFC r198541:
Do first controller time sync after 1 minute, as in Adaptec's vendor
  driver.
2009-11-02 16:22:59 +00:00
Robert Noland
de546efdad MFC 198696
Cleanup in r600_blit

     - Don't bother to assign vb until we know we have enough space
     - Add variables for sx2, sy2, dx2, dy2 so that these aren't
       calculated over and over, also reduce chance of errors.
     - Use switch to assign color/format
2009-11-02 16:02:16 +00:00
Robert Noland
1a4d349290 MFC 198695
A bit of cleanup work on radeon_freelist_get()

 * Fix the main loop to search all buffers before sleeping.
 * Remove dead code
2009-11-02 15:59:55 +00:00
Robert Noland
6400e3ac8c MFC 198692
Use system specified memory barriers rather than rolling our own.
2009-11-02 15:57:03 +00:00
Robert Noland
1675ae3b86 MFC 198691
Fix blitter support for RS880 chips
2009-11-02 15:53:32 +00:00
Andriy Gapon
ea9b1909f6 MFC 197450: number of cleanups in i386 and amd64 pci md code 2009-11-01 18:39:26 +00:00
Ed Schouten
f36e7051c7 MFC various commits back to stable/8:
SVN r197174:
  Make sure we never place the cursor outside the screen.

  For some vague reason, it may be possible that scp->cursor_pos exceeds
  scp->ysize * scp->xsize. This means that teken_set_cursor() may get
  called with an invalid position. Just ignore the old cursor position in
  this case.

  Reported by:  Paul B. Mahol <onemda gmail com>

SVN r198213:
  Make lock devices work properly.

  It turned out I did add the code to use the init state devices to set
  the termios structure when opening the device, but it seems I totally
  forgot to add the bits required to force the actual locking of flags
  through the lock state devices.

  Reported by:	ru

SVN r198215, r198217:
  Fix a typo in the jail(8) manpage.

  Submitted by: Jille Timmermans <jille quis cx>

SVN r198216:
  Fix qouting in a comment, to make it look more consistent

  Submitted by: Jille Timmermans <jille quis cx>

SVN r198223:
  Properly set the low watermarks when reducing the baud rate.

  Now that buffers are deallocated lazily, we should not use
  tty*q_getsize() to obtain the buffer size to calculate the low
  watermarks. Doing this may cause the watermark to be placed outside the
  typical buffer size.

  This caused some regressions after my previous commit to the TTY code,
  which allows pseudo-devices to resize the buffers as well.

  Reported by:  yongari, dougb
2009-11-01 10:30:30 +00:00
Christian Brueffer
b7ef6e29a5 MFC: r198327
Add a missing free() call.
2009-10-31 10:59:53 +00:00
Robert Noland
5a3d86c297 MFC r197950
Add pci id's for Intel G41 chipset
2009-10-30 16:43:28 +00:00
Robert Noland
6137518b87 MFC r197951
Add support for Intel G41 chipset
2009-10-30 16:37:58 +00:00
Robert Noland
357a8e800b MFC r196470-196471,197154-197155,197603-197606
Sync radeon drm support

This adds kernel support for r6/7xx 3D.
2009-10-30 16:32:35 +00:00
Robert Noland
d84490b532 MFC r196466
Add a read only sysctl tracking the hw.drm.msi tunable.
2009-10-30 16:14:17 +00:00
Robert Noland
1587b7fc87 MFC r196465
Clean up the handling of device minors
2009-10-30 16:12:28 +00:00
Robert Noland
e7d8e24d0a MFC r196464
Clean up the locking in drm_alloc_resource()
2009-10-30 16:06:32 +00:00
Andrew Thompson
bfa1f203df MFC r198373
Allow dumping the USB mouse reports via 'sysctl -b dev.ums.N.parseinfo',
 previously only available via bootverbose.

PR:		usb/137191
2009-10-29 23:28:48 +00:00
Andrew Thompson
906c96039d MFC r198257
Add support for newer WinChipHead CH341 chips, previously in the uch341 driver.
2009-10-29 23:27:40 +00:00
Andrew Thompson
83c0f67853 MFC r198153
Correct offset calcluation for the NCM implementation.
2009-10-29 23:27:00 +00:00
Andrew Thompson
6a8d0ac969 MFC r198152
Only poll ukbd if KDB is active.
2009-10-29 23:26:29 +00:00
Andrew Thompson
1ea6a20c73 MFC r198151
Workaround buggy BIOS code in USB regard. By doing the BIOS to OS handover for
 all host controllers at the same time, we avoid problems where the BIOS will
 actually write to the USB registers of all the USB host controllers every time
 we handover one of them, and consequently reset the OS programmed values.
2009-10-29 23:25:52 +00:00
Andrew Thompson
b0deb9099b MFC r197999 (hrs)
Fix the 106/109 USB Japanese keyboard "underscore" issue.
 Sun Type 6 USB keyboard support added in rev 1.46 conflicted with
 some scan codes used in Japanese keyboards because the scan code
 conversion routine was ambiguous for the overlapped codes.

PR:		ports/134005
2009-10-29 23:25:13 +00:00
Andrew Thompson
48bd741396 MFC r197573
Add back endpoint swap detection that was disabled in an earlier driver
 conversion.
2009-10-29 23:24:41 +00:00
Andrew Thompson
b56d97e2af MFC r197572
Add new FTDI IDs.
2009-10-29 23:24:10 +00:00
Andrew Thompson
e792954dba MFC r197570
Add experimental support for usb serial console and polled mode during DDB.
2009-10-29 23:23:34 +00:00
Andrew Thompson
6b48cd2444 MFC r197569
Add a config number quirk for the ELSA_MODEM1
2009-10-29 23:22:54 +00:00
Andrew Thompson
589c414bdf MFC r197568
add more device IDs
2009-10-29 23:22:23 +00:00
Andrew Thompson
9d2344fb86 MFC r197567
Allow setting of MAC address for AXE based ethernet adapters.
2009-10-29 23:21:52 +00:00
Andrew Thompson
381882bf15 MFC r197566
Increase the rx buffer size to 16384 bytes, this increases RX performance from
 50Mbps to 220Mbps on PLANEX GU-1000T.
2009-10-29 23:21:20 +00:00
Andrew Thompson
c21bee0c36 MFC r197565
- Remove SAMSUNG_YP_U2 now that it is in the cam layer
 - Add quirk from Tobias Grosser for Western Mypassword
2009-10-29 23:20:47 +00:00
Andrew Thompson
078da83100 MFC r197564
Add new usbdev entries for Marvell, FTDI, Option and Western.
2009-10-29 23:20:15 +00:00
Andrew Thompson
d66897e03e MFC r197563
Add basic support for USB Network Control Model (NCM) v1.0 to if_cdce.c.
2009-10-29 23:19:41 +00:00
Andrew Thompson
57866e6c93 MFC r197562
Add extra safety locking when clobbering xfer->flags_int.started in start and
 stop functions, because xfer->flags_int is also updated by the USB controller,
 under the controller lock.
2009-10-29 23:18:59 +00:00
Andrew Thompson
d81c7ac0fa MFC r197561
Correct buffer sizes used so that they match. The old code could give the
 impression that a overflow situation existed but was not possible.
2009-10-29 23:18:27 +00:00
Andrew Thompson
88f788a6c5 MFC r197559
Add support for USB language selection.

PR:		usb/138563
2009-10-29 23:17:54 +00:00
Andrew Thompson
9d168176f5 MFC r197558
Fix NULL-pointer dereference in usb_endpoint_foreach().

PR:		usb/138389
2009-10-29 23:17:23 +00:00
Andrew Thompson
f23c09d0b0 MFC r197556
Clear all interrupts rather than just SETUP packet.
2009-10-29 23:16:39 +00:00
Andrew Thompson
320dbc0942 MFC r197555
Simplify logic around setting EHCI_QH_DTC and expand some htohc32(temp.sc, 0)
 statements to zero.
2009-10-29 23:16:00 +00:00
Andrew Thompson
ffa540b752 MFC r197554
Import two PCI quirks from Linux

  - Add quirk for ATI SB600 and SB700 to free SMB controller
  - Correct schedule sleep time to 10us on the VIA ehci controller
2009-10-29 23:15:26 +00:00
Andrew Thompson
1063b450cd MFC r197553
- clean up USB detach logic. There seems to be some problems detaching multiple
   USB HUBs connected in series from the root.
2009-10-29 23:14:39 +00:00
Andrew Thompson
6333b36c43 MFC r196826
Make umass(4) pass device USB serial number to CAM, making it possible
 to e.g. retrieve it using camcontrol(8).
2009-10-29 23:14:06 +00:00
Andrew Thompson
6536a23656 MFC r196497
Remove redundant locking.
2009-10-29 23:13:36 +00:00
Andrew Thompson
f18778a473 MFC r196496
Add a reminder comment to optimize bus_dmamap_sync calls.
2009-10-29 23:13:02 +00:00
Andrew Thompson
edd4ee99cf MFC r196495
Add mass storage quirks.

PR:             usb/137138,usb/137226,usb/137789,usb/135372
2009-10-29 23:12:29 +00:00
Andrew Thompson
d92f7ea655 MFC r196494
- fix uvisor support, mostly correct buffer sizes used.
 - correct device info flag for SONY Cli NR70V
2009-10-29 23:11:48 +00:00
Andrew Thompson
d51a8c13ea MFC r196493
- Fix false positive uipaq probe
2009-10-29 23:11:13 +00:00
Andrew Thompson
2bb2691018 MFC r196492
- fix CDC ethernet matching order so that the match flags get correct.
2009-10-29 23:10:41 +00:00
Andrew Thompson
0627fc1870 MFC r196491
We used force all of the GPIO pins low first and then
 enable the ones we want. This has been changed to better
 match the ADMtek's reference design to avoid setting the
 power-down configuration line of the PHY at the same time
 it is reset.
2009-10-29 23:10:11 +00:00
Andrew Thompson
9fd6caea70 MFC r196490
- FIFO's are always opened separately in read and write direction even if the
   actual device is opened for read and write. Fix fflags check so that the UFM
   and URIO drivers work.
2009-10-29 23:09:37 +00:00
Andrew Thompson
61908699b5 MFC r196488
- allow disabling "root_mount_hold()" by setting a sysctl/tunable at boot
 - remove some redundant initial explore code
2009-10-29 23:09:02 +00:00
John Baldwin
ff5bfa3ef6 MFC 197439:
Extract the code to find and map the MADT ACPI table during early kernel
startup and genericize it so it can be reused to map other tables as well:
- Add a routine to walk a list of ACPI subtables such as those used in the
  APIC and SRAT tables in the MI acpi(4) driver.
- Move the routines for mapping and unmapping an ACPI table as well as
  mapping the RSDT or XSDT and searching for a table with a given signature
  out into acpica_machdep.c for both amd64 and i386.
2009-10-29 16:00:27 +00:00
John Baldwin
983998573b MFC 197649:
Do not hold the ACPI A/C adapter lock when changing the power profile.
2009-10-29 15:28:05 +00:00
John Baldwin
9ad4b9fbd2 MFC 197648:
Split the 'video' ACPI lock up into two locks to resolve a LOR with the
sysctl lock.  The 'video' lock now protects the 'bus' of video output
devices attached to a graphics adapter.  It is used when iterating over
the list of outputs, etc.  The 'video_output' lock is used to lock the
output-specific data similar to a driver lock for the individual video
outputs.
2009-10-29 15:24:57 +00:00
John Baldwin
9e14139d9b MFC 196840:
Fill the reverse RSS map with 0xff's so that the subsequent loop to
calculate the values will work properly.
2009-10-29 15:17:59 +00:00
John Baldwin
50d356311a MFC 197460:
Remove unnecessary locking from attach().  This fixes a LOR between the
acpi_ibm lock and the sysctl lock.
2009-10-29 15:13:36 +00:00
Alexander Motin
f39d3da87e MFC rev. 198487:
Round timeout up when converting CAM milliseconds to ATA seconds.
2009-10-29 10:38:17 +00:00
Alexander Motin
963069c15e MFC rev. 198488:
Report SATA speeds to CAM, to not confuse users with low numbers logged.
2009-10-29 10:35:50 +00:00
Alexander Motin
e180821780 MFC rev. 198481, 198482:
Add two more VIA SATA chip IDs.

PR:		kern/135057
2009-10-29 10:05:08 +00:00
Alexander Motin
9149cb69ab Fix SATA on nVidia MCP55 chipset. It needs some short time to allow BAR(5)
memory access.

PR:		amd64/128686, amd64/132372, amd64/139156
2009-10-29 09:45:48 +00:00
Andrew Thompson
b1c3c31d58 MFC r198307
Change from CAM_TID_INVALID to CAM_SEL_TIMEOUT error code when the usb device
 has been yanked, this works around a cam recounting bug when
 CAM_DEV_UNCONFIGURED is set late in the detach. In certain conditions the
 reference to the XPT device would not be released which would cause the usb
 explore thread to sleep forever on "simfree", preventing any new usb devices to
 be found/ejected on the bus.

Approved by:	re (kib)
2009-10-21 19:48:27 +00:00
Weongyo Jeong
6fb7173c2b MFC r198098:
fixes a TX hang bug that it could happen when if_start callback didn't
  be restarted by full of the output queue.

  Tested by:      bsduser <bsd at acd.homelinux.org>

MFC r198099:
  fixes a TX hang that could be possible to happen when the trasfers are
  in the high speed that some drivers don't call if_start callback after
  marking ~IFF_DRV_OACTIVE.

Approved by:	re (kib)
2009-10-20 17:50:36 +00:00
Stanislav Sedov
ea95296ce8 - Disable ASF by default in STABLE_8. This causes a lot
of problems on non-DELL branded machines with IPMI
  support.  The proposed fix was committed to HEAD but has
  not received much test coverage yet.

Discussed with:	bz
Approved by:	re (kensmith)
2009-10-20 16:41:23 +00:00
Marcel Moolenaar
879632020a MFC change 197721:
Fix RTS/CTS flow control, broken by the TTY overhaul.  The new TTY
interface is fairly simple WRT dealing with flow control, but
needed 2 new RX buffer functions with "get-char-from-buf" separated
from "advance-buf-pointer" so that the pointer could be advanced
only when ttydisc_rint() succeeded.

Approved by:	re (kib)
2009-10-10 18:24:54 +00:00
Coleman Kane
4718640084 MFC: r197403, r197644, r197654, and r197659
Fix some unexpected potential NULL de-references in kernel mode due to
usage of pre-8.0 wifi operations with the ndis driver wrapping a Win32/64
wifi driver.

Submitted by:	Paul B Mahol <onemda@gmail.com>
Approved by:	re
2009-10-06 16:05:06 +00:00
Pyun YongHyeon
0baf4d9450 MFC r197461:
Use __NO_STRICT_ALIGNMENT to determine whether de(4) have to apply
  alignment fixup code for received frames on strict alignment
  architectures.

MFC r197463:
  Consistently use bus_addr_t.

MFC r197464:
  Destroy dmamap in dma cleanup.

MFC r197465:
  Align Tx/Rx descriptors on 32 bytes boundary instead of PAGE_SIZE.
  Also align setup descriptor on 32 bytes boundary. Tx buffer have no
  alignment limitation so create dmamap without alignment
  restriction[1]. Rx buffer still seems to require 4 bytes alignment
  limitation but we can simply use MCLBYTES for size to map the
  buffer instead of TULIP_DATA_PER_DESC as the buffer is allocated
  with m_getcl(9).
  de(4) supports up to TULIP_MAX_TXSEG segments for Tx buffers,
  increase maximum dma segment size to TULIP_MAX_TXSEG * MCLBYTES.
  While I'm here remove TULIP_DATA_PER_DESC as it is not used anymore.

  This should fix de(4) breakage introduced after r176206.
  Submitted by:	jhb [1]
  Reported by:	WATANABE Kazuhiro < CQG00620 <> nifty dot ne dot jp >
  Tested by:	WATANABE Kazuhiro < CQG00620 <> nifty dot ne dot jp >,
		Takahashi Yoshihiro < nyan <> jp dot freebsd dot org >
Approved by:	re (kib)
2009-10-05 19:29:25 +00:00
Andrew Gallatin
c005a51c4e MFC:197645
Two more mxge watchdog fixes

1) Restore the PCI Express control register after a watchdog
   reset.  This is required because the device will come out
   of watchdog reset with the pectl reg at its default state,
   and important BIOS configuration (like max payload size)
   could be lost.

2) Call mxge_start_locked() for every tx queue before dropping
   the lock in the watchdog handler.   This is required, as
   the queue's buf ring may have filled during the reset.

Approved by:	re (kib)
2009-10-05 14:28:23 +00:00
Andrew Thompson
3a3dfbf8c4 MFC r197682
EHCI Hardware BUG workaround

 The EHCI HW can use the qtd_next field instead of qtd_altnext when a short
 packet is received. This contradicts what is stated in the EHCI datasheet.
 Also the total-bytes field in the status field of the following TD gets
 corrupted upon reception of a short packet!  We work this around in software by
 not queueing more than one job/TD at a time of up to 16Kbytes! The bug has been
 seen on multiple INTEL based EHCI chips.  Other vendors have not been tested
 yet.

 - Applications using /dev/usb/X.Y.Z, where Z is non-zero are affected, but not
   applications using LibUSB v0.1, v1.2 and v2.0.
 - Mass Storage (umass) is affected.

Approved by:	re (kib)
2009-10-04 19:03:32 +00:00
Andrew Gallatin
264d14d30d MFC 197395: Improve mxge watchdog routine's ability to reliably reset a failed NIC
Approved by: re (kib)
2009-09-28 23:48:16 +00:00
Marius Strobl
238bc19306 MFC: r197401
- According to Linux, the ALi M5451 can do 31-bit DMA instead of just
  30-bit like the reset of the controllers supported by this driver.
  Actually ALi M5451 can be setup up to generate 32-bit addresses by
  setting the 31st bit via the accompanying ISA bridge, which allows
  it to work in sparc64 machines whose IOMMU require at least 32-bit
  DMA. Even though other architectures would also benefit from 32-bit
  DMA, enabling this bit is limited to sparc64 as bus_dma(9) doesn't
  generally guarantee that a low address of BUS_SPACE_MAXADDR_32BIT
  results in a buffer in the 32-bit range.
- According to Tatsuo YOKOGAWA's ali(4), the the DMA transfer size of
  ALi M5451 is fixed to 64k and in fact using the default size of 4k
  causes the chip to overrun the mapping, triggering uncorrectable
  DMA errors on sparc64.
- The 4DWAVE DX and NX require the recording buffer to be 8-byte
  aligned so adjust the bus_dma_tag_create(9) accordingly.
- Unlike the rest of the controllers supported by this driver, the
  ALi M5451 only has 32 hardware channels instead of 64 so limit the
  loop in tr_intr() accordingly. [1]

Submitted by:	yongari [1]
Reviewed by:	yongari (superset of what is committed)
Approved by:	re (kib)
2009-09-25 19:59:18 +00:00
Alexander Motin
b8b5722c5d Remove constraint, requiring request data to fulfill controller's
alignment requirements. It is busdma task, to manage proper alignment by
loading data to bounce buffers.

PR:		kern/127316
Reviewed by:	current@
Tested by:	Ryan Rogers
Approved by:	re (kib)
2009-09-25 18:07:23 +00:00
Marius Strobl
54577e2314 - Add missing bus_dmamap_sync(9) calls for the work DMA map. Previously
the work area was totally unsynchronized which means this driver only
  had a chance of working on x86 when no bounce buffers were involved,
  which isn't that likely given that support for 64-bit DMA is currently
  broken throughout ata(4).
- Add necessary little-endian conversion of accesses to the work area,
  making this driver work on big-endian hosts. While at it, use the
  alignment-agnostic byte order encoders in order to be on the safe side.
- Clear the reserved member of the SG list entries in order to be on the
  safe side. [1]

Submitted by:	yongari [1]
Reviewed by:	yongari
Approved by:	re (kib)
2009-09-25 16:45:27 +00:00
John Baldwin
424b2e64a2 MFC 197415:
The elements in the component arrays may be direct Package objects rather
than references to objects.  In that case, simply use the Package directly.

Approved by:	re (kib)
2009-09-25 15:14:11 +00:00
John Baldwin
b10d205de2 MFC 197406:
Don't reread the command register to see if enabling I/O or memory
decoding "took".  Other OS's that I checked do not do this and it breaks
some amdpm(4) devices.  Prior to 7.2 we did not honor the error returned
when this failed anyway, so this in effect restores previous behavior.

Approved by:	re (kib)
2009-09-25 14:58:00 +00:00
John Baldwin
4e36c32793 MFC 197350:
Re-remove the IBM0057 ID used for PS/2 mouse controllers.  The asl for the
61p includes the hotkey device as IBM0068 and the mouse as IBM0057 similar
to other systems.

Approved by:	re (kensmith)
2009-09-23 15:56:09 +00:00
Rui Paulo
d414bb00bb MFC 197190:
Make the sudden motion sensor work on older models and add a bit of
 debugging.

 Submitted by:	Christoph Langguth <christoph at rosenkeller.org>

Approved by:	re (kib)
2009-09-22 20:31:32 +00:00
Andriy Gapon
1a7268649b MFC r197099: pci(4): don't perform maximum register number check
Different sub-kinds of PCI buses may have different rules and
thus it is up for the bus backends to do proper input checks.
For example, PCIe allows configuration register numbers < 0x1000,
while for PCI proper the limit is 0x100.
And, in fact, the buses already do the checks.

Reviewed by:	jhb
Approved by:	re (kib)
2009-09-19 08:13:10 +00:00
Andriy Gapon
04793894d4 MFC r197077: pci: remove definitions of duplicate constants
Suggested by:	jhb
Reviewed by:	jhb
Approved by:	re (kib)
2009-09-17 12:41:27 +00:00
Scott Long
24048b0cb3 Merge rev 197263:
- Enable MSI support (MSIX support was already present)
- Performance improvements

Approved by:	re
Obtained from:	Yahoo!
2009-09-17 05:30:55 +00:00
Scott Long
053351cec3 Merge r197260, r197261, r197262
- Prevent a panic on modern controllers by increasing CISS_MAX_PHYSTGT to 256
- Fix MSI and PERFORMANT interrupt programming.  Fixes hang on boot.
- Fix locking bugs in ioctl handler

Most of this has been soaking at Yahoo for several months, if not longer.  The
quick MFC is due to the impending 8.0-RC1 build.

Approved by:	re
Obtained from:	Yahoo!
2009-09-17 05:27:32 +00:00
Rafal Jaworowski
e9667e8ff1 MFC r196531-196534,196536
Clean up Marvell platform code.

Introduce SheevaPlug support.

   - The device is based on Marvell 88F6281 system on chip.
   - More info about the platform at http://www.plugcomputer.org

   - To build the FreeBSD kernel:
     make buildkernel TARGET_ARCH=arm KERNCONF=SHEEVAPLUG

   - Installation notes at: http://wiki.freebsd.org/FreeBSDMarvell

Submitted by:	Michal Hajduk
Approved by:	re (kib)
Obtained from:	Semihalf
2009-09-16 12:07:58 +00:00
Pawel Jakub Dawidek
6bd6f55621 MFC r196822, r196823, r196824:
Remove 'ad:' prefix from disk serial number. We don't want serial number
to change when we reconnect the disk in a way that it is accessible through
CAM for example.

Discussed with:	trasz

Simplify g_disk_ident_adjust() function and allow any printable character
in serial number.

Discussed with:	trasz
Obtained from:	Wheel Sp. z o.o. (http://www.wheel.pl)

Make serial numbers of daX disks visible by GEOM.

No objections from:	scottl
Obtained from:	Wheel Sp. z o.o. (http://www.wheel.pl)

Approved by:	re (kib)
2009-09-15 11:23:59 +00:00
John Baldwin
3c31e305c0 MFC 197062:
Don't malloc a buffer while holding the prison0 mutex.  Instead, use a loop
where we figure out the hostname length under the lock, malloc the buffer
with the lock dropped, then recheck the length under the lock and loop again
if the buffer is now too small.

Approved by:	re (kib)
2009-09-14 16:13:12 +00:00
Norikatsu Shigemura
87c120a67a MFC r196889:
Change 'dev.cpu.N.temperature', sysctl I (degC) to IK (Kelvin),
to match acpi_thermal(4) and amdtemp(4).

Approved by:	re (rwatson)
Reviewed by:	rpaulo
Suggested by:	ume
2009-09-13 10:04:08 +00:00
Jack F Vogel
b9a65dadc2 This fixes kern/138516, an mbuf leak in both the em
and igb driver, when a transmit fails the packet/mbuf
was not being requeued. Thanks to those that pointed
this problem out.

Approved by:  re
2009-09-11 16:53:12 +00:00
Sam Leffler
d53c6c91b1 MFC r196717:
fix beacon timers on resume in sta mode so raoming works

Approved by:	re (kensmith)
2009-09-07 16:41:18 +00:00
Alexander Motin
b89c161793 MFC r196777, r196796:
ATI SB600 can't handle 256 sectors transfers with FPDMA (NCQ).

Approved by:	re (ATA-CAM blanket)
2009-09-05 06:24:28 +00:00
Jack F Vogel
0bb40ca3e0 This patch seperates the control of header split from LRO (which it
was previously dependent on), LRO gets turned off when bridging but
its been found that header split is still a performance win in that case.

Secondly, there was some interface specific control in stats code that
has been missing, and a logic error that resulted in bogus reporting.
Thanks to Manish and John of LineRateSystems for the report and help in
this code.

Approved by: re
2009-09-04 22:37:03 +00:00
Pyun YongHyeon
b3d8f9c3fc MFC r196721:
Make sure rx descriptor ring align on 16 bytes. I guess the
  alignment requirement could be multiple of 4 bytes but I think
  using descriptor size would make intention clearer.
  Previously the size of rx descriptor was not power of 2 so it
  caused panic in bus_dmamem_alloc(9).

  Reported by:	Jeff Blank (jb000003 <> mr-happy dot com)
Approved by:	re (kib)
2009-09-04 16:41:17 +00:00
Weongyo Jeong
fa0dc8bb62 MFC r196809:
fix a TX issue on big endian machines like powerpc or sparc64.  Now
  zyd(4) should work on all architectures.

  Obtained from:	OpenBSD

Approved by:	re (kib)
2009-09-04 05:37:49 +00:00
Alfred Perlstein
42a66b539d MFC: r196489,196498
Critical USB bugfixes for 8.0

Approved by:    re
2009-09-02 02:12:07 +00:00
Alexander Motin
84a08f606f MFC r196656, r196660:
Update ahci driver:
 - Add Command Completion Coalescing support.
 - Add SNTF support.
 - Add two more power management modes (4, 5), implemented on driver level.
 - Fix interface mode setting.
 - Reduce interface reset time.
 - Do not report meaningless protocol/transport versions.
 - Report CAP2 register content.
 - Some performance optimizations.

Approved by:	re (ATA-CAM blanket)
2009-09-01 11:44:30 +00:00
Alexander Motin
088705a89e MFC r196655:
Update siis driver:
 - Add SNTF support.
 - Do not report meaningless transport/protocol versions.

Approved by:	re (ATA-CAM blanket)
2009-09-01 11:13:31 +00:00
Rui Paulo
de3a9cf126 MFC r196455:
Make dev.asmc.N.light.control writable by everyone.

Submitted by:	Patrick Lamaiziere <patfbsd at davenulle.org>
Approved by:	re (rwatson)
2009-08-31 12:25:04 +00:00
Andrew Thompson
59fa5c955f MFC r196547
It is possible for all the kthreads to exit (hci modules unloaded) which in
 turn ends our usb process. This means the proc pointer becomes invalid and will
 panic if a new kthread is added. Count the number of threads and clear the proc
 pointer on the last one.

Approved by:	re (kib)
2009-08-29 15:42:06 +00:00
Pyun YongHyeon
180e7945c7 MFC r196517:
Don't try to power down PHY when alc(4) failed to map the device.
  This fixes system crash when mapping alc(4) device failed in device
  attach.

  Reported by:	Jim < stapleton.41 <> gmail DOT com >
Approved by:	re (kib)
2009-08-28 18:01:37 +00:00
Pyun YongHyeon
83b5def49a MFC r196516:
Add RTL8168DP/RTL8111DP device id. While I'm here append "8111D" to
  the description of RTL8168D as RL_HWREV_8168D can be either
  RTL8168D or RTL8111D.

  PR:	kern/137672
Approved by:	re (kib)
2009-08-28 17:34:22 +00:00
John Baldwin
953e1b6c8d MFC 196520:
Tweak the way that the ACPI and ISA bus drivers match hint devices to
BIOS-enumerated devices:
- Assume a device is a match if the memory and I/O ports match even if the
  IRQ or DRQ is wrong or missing.  Some BIOSes don't include an IRQ for
  the atrtc device for example.
- Add a hack to better match floppy controller devices.  Many BIOSes do not
  include the starting port of the floppy controller listed in the hints
  (0x3f0) in the resources for the device.  So far, however, all the BIOS
  variations encountered do include the 'port + 2' resource (0x3f2), so
  adjust the matching for "fdc" devices to look for 'port + 2'.

Approved by:	re (kib)
2009-08-27 16:34:04 +00:00
Ken Smith
31b3c66986 MFC r196415:
Fix a boot hang for hptrr(4) caused by changes introduced in r195534.
It is necessary to make sure cpi->transport is set for xpt_scan_bus() to
work properly.

Submitted by: Bernhard Schmidt (scb+freebsd-current <at> techwires
              <dot> net)
Reviewed by:  scottl
Approved by:  re (kib)
2009-08-21 01:12:06 +00:00
John Baldwin
247db0748a MFC 196403: Temporarily revert the new-bus locking for 8.0 release.
Approved by:	re (kib)
2009-08-20 20:23:28 +00:00
Xin LI
67a435347b MFC r196386:
Temporarily enhance em(4) and igb(4) hack to take account for IFF_NOARP.
Without this changeset there will be no way to prevent these NICs from
sending ARP, which is harmful in server farms that is configured as
"Direct Server Return" behind a load balancer.

A better fix would remove the whole hack completely but it would be
later than 8.0-RELEASE.

Reviewed by:	jfv, yongari
Approved by:	re (kib)
2009-08-19 18:08:50 +00:00
Rafal Jaworowski
49d96dc6dd MFC r196380
Fix USB cache sync operations for platforms with non-coherent DMA.

- usb_pc_cpu_invalidate() is called between [consecutive] reads from a device,
  so a sequence of BUS_DMASYNC_POSTREAD and _PREREAD should be used. Note we
  cannot use or'ed shorthand ( _POSTREAD | _PREREAD) for BUS_DMASYNC flags, as
  the low level bus dma sync operation is implementation dependent and we
  cannot assume the required order of operations to be guaranteed.

- usb_pc_cpu_flush() is called before writing to a device, so
  BUS_DMASYNC_PREWRITE should be used.

Submitted by:	Grzegorz Bernacki
Reviewed by:	HPS, arm@, usb@ ML
Tested by:	HPS, Mike Tancsa
Approved by:	re (kib)
Obtained from:	Semihalf
2009-08-19 14:48:59 +00:00
Stanislav Sedov
1daebacca0 - MFC r196370.
Do not try to reevaluate current RX production index on each
  loop iteration as it can be updated by the card while we
  process the RX ring forcing us to process RX descriptors
  for which DMA synchronisation operation has not been
  performed.  This fixes the bug when bge(4) drops packets
  under high load.

Discussed with:	yongari, marius
Approved by:	re (kib)
2009-08-18 21:13:00 +00:00
Pyun YongHyeon
f8fb3cc00e MFC r196366:
Backout r193289. r193289 restored page select bits to previous
  value instead of blindly resetting it to 0. However, it seems page
  select bits of some 88E1116 PHY is initialized to invalid one such
  that restoring page select bits after programming broke MII
  register access. The correct solution would be reset page select
  bits to 0 in PHY attach stage but it would require more testing.
  Since we're in BETA stage such a change would be dangerous so just
  back it out.
  This change should fix nfe(4) breakage on NVIDIA MCP55.

  Reported by:	Ryan Rogers < webmaster <> doghouserepair dot com >
		Sam Fourman Jr. < sfourman <> gmail dot com >
  Tested by:	Ryan Rogers < webmaster <> doghouserepair dot com >
		Sam Fourman Jr. < sfourman <> gmail dot com >
  Approved by:	re (kib)
2009-08-18 20:25:02 +00:00
Alexander Motin
a7f9e24d61 MFC r196352:
Fix iSCSI initiator and vpo driver operation, broken by CAM changes.

Reviewed by:	scottl, Danny Braniss
Approved by:	re (rwatson)
2009-08-18 09:31:00 +00:00
Scott Long
91fa948790 Merge r196200. Add firmware definitions needed by mfiutil
Approved by:	re
2009-08-17 06:21:22 +00:00
Andrew Thompson
a8ff174941 MFC r196274
Change the usb workers from kernel processes to threads, this is mostly a
 cosmetic change to reduce cruft in the proc table.

 Also change the idle wait message to `-` like how taskqueues are.

 Reviewed by:	julian
 Approved by:	re (kib)
2009-08-16 14:17:47 +00:00
John Baldwin
7612087747 Adjust the handling of the local APIC PMC interrupt vector:
- Provide lapic_disable_pmc(), lapic_enable_pmc(), and lapic_reenable_pmc()
  routines in the local APIC code that the hwpmc(4) driver can use to
  manage the local APIC PMC interrupt vector.
- Do not enable the local APIC PMC interrupt vector by default when
  HWPMC_HOOKS is enabled.  Instead, the hwpmc(4) driver explicitly
  enables the interrupt when it is succesfully initialized and disables
  the interrupt when it is unloaded.  This avoids enabling the interrupt
  on unsupported CPUs which may result in spurious NMIs.

Reported by:	rnoland
Reviewed by:	jkoshy
Approved by:	re (kib)
MFC after:	2 weeks
2009-08-14 20:57:21 +00:00
Matt Jacob
7922e083b4 MFC 196162: Have at least a fallback WWN so cards on sun branded FC cards
can configure.

Approved by:	re
2009-08-13 01:45:26 +00:00
Robert Noland
b7f930cb48 Merge r196142
Add support for radeon RS880 IGP chips to drm.

Approved by:	re (kib)
2009-08-12 13:12:09 +00:00