]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/log
FreeBSD/stable/8.git
14 years agoMFC r201367, r201370:
dougb [Fri, 15 Jan 2010 03:03:02 +0000 (03:03 +0000)]
MFC r201367, r201370:
Virtualize the location of "the configuration directory" instead of
hard-coding it to be /etc/namedb

git-svn-id: svn://svn.freebsd.org/base/stable/8@202331 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201626:
dougb [Fri, 15 Jan 2010 02:55:19 +0000 (02:55 +0000)]
MFC r201626:
- Move potentially offensive quotes I committed recently to fortunes-o.
- Reference date.
- Be more clear on context.

MFC r201764:
For the now-infamous Rumsfeld quote:

Change "there're" to "there are" which is consistent with the vast
majority of on line references.

Remove a spurious trailing "

Update the citation text with a suggestion from des.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202329 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201601:
dougb [Fri, 15 Jan 2010 02:18:07 +0000 (02:18 +0000)]
MFC r201601:
Remove more duplicates
Minor reformatting on a few

git-svn-id: svn://svn.freebsd.org/base/stable/8@202327 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201769:
yongari [Thu, 14 Jan 2010 22:36:06 +0000 (22:36 +0000)]
MFC r201769:
  Enable ste(4). ste(4) should work on all architectures.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202322 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200958:
yongari [Thu, 14 Jan 2010 22:33:46 +0000 (22:33 +0000)]
MFC r200958:
  Document newly added loader tunable/sysctl variable
  dev.ste.%d.int_rx_mod.
  While I'm here add .Xr vlan as ste(4) supports long frames.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202320 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200950,200955,200965-200966,201767-201768
yongari [Thu, 14 Jan 2010 22:26:52 +0000 (22:26 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202318 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200904-200908,200910-200913
yongari [Thu, 14 Jan 2010 22:15:51 +0000 (22:15 +0000)]
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().

git-svn-id: svn://svn.freebsd.org/base/stable/8@202314 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200854,200856,200865,200873,200875,200877,200884
yongari [Thu, 14 Jan 2010 22:00:33 +0000 (22:00 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202311 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200853:
yongari [Thu, 14 Jan 2010 21:45:39 +0000 (21:45 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202309 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r202120:
gallatin [Thu, 14 Jan 2010 21:30:06 +0000 (21:30 +0000)]
MFC: r202120:
 Update mxge(4) firmware to 1.4.48b (latest available) from Myricom.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202305 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r202121:
gallatin [Thu, 14 Jan 2010 21:10:36 +0000 (21:10 +0000)]
MFC r202121:
 Use better default RSS hash (src + dst, rather than just src port)

git-svn-id: svn://svn.freebsd.org/base/stable/8@202303 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 202119: Fix reporting of 10G Twinax media
gallatin [Thu, 14 Jan 2010 20:59:02 +0000 (20:59 +0000)]
MFC 202119: Fix reporting of 10G Twinax media

git-svn-id: svn://svn.freebsd.org/base/stable/8@202302 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200798,200801,200803-200804,200808,200810
yongari [Thu, 14 Jan 2010 20:47:49 +0000 (20:47 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202299 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoPartial merge r199559:
yongari [Thu, 14 Jan 2010 20:38:40 +0000 (20:38 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202297 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r201345
rmacklem [Thu, 14 Jan 2010 17:35:07 +0000 (17:35 +0000)]
MFC: r201345
Fix the experimental NFS client so that it can create Unix
domain sockets on an NFSv4 mount point. It was generating
incorrect XDR in the request for this case.

Tested by: infofarmer

git-svn-id: svn://svn.freebsd.org/base/stable/8@202292 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200938
marius [Wed, 13 Jan 2010 21:23:27 +0000 (21:23 +0000)]
MFC: r200938

- Don't check for a valid interrupt controller on every interrupt
  in intr_execute_handlers(). If we managed to get here without an
  associated interrupt controller we have way bigger problems.
  While at it predict stray vector interrupts as false as they are
  rather unlikely.
- Don't blindly call the clear function of an interrupt controller
  when adding a handler in inthand_add() as interrupt controllers
  like the one driven by upa(4) are auto-clearing and thus provide
  NULL instead.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202265 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200926
marius [Wed, 13 Jan 2010 21:21:29 +0000 (21:21 +0000)]
MFC: r200926

Recognize the NS16552 found in PCIe-based sun4u machines.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202262 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200925
marius [Wed, 13 Jan 2010 21:19:46 +0000 (21:19 +0000)]
MFC: r200925

- By re-arranging the code in OF_decode_addr() somewhat and accepting
  a bit of a detour we can just iterate through the banks array instead
  of having to calculate every offset. This change is inspired by the
  powerpc version of this function.
- Add support for the JBus to EBus bridges which hang off of nexus(4).

git-svn-id: svn://svn.freebsd.org/base/stable/8@202260 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200924
marius [Wed, 13 Jan 2010 21:17:45 +0000 (21:17 +0000)]
MFC: r200924

Style changes.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202258 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200923
marius [Wed, 13 Jan 2010 21:16:07 +0000 (21:16 +0000)]
MFC: r200923

- Add support for the IOMMUs of Fire JBus to PCIe and Oberon Uranus
  to PCIe bridges.
- Add support for talking the PROM mappings over to the kernel IOTSB
  just like we do with the kernel TSB in order to allow OFW drivers
  to continue to work.
- Change some members, parameters and variables to unsigned where
  more appropriate.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202256 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200922
marius [Wed, 13 Jan 2010 21:13:50 +0000 (21:13 +0000)]
MFC: r200922

Fix whitespace according to style(9).

git-svn-id: svn://svn.freebsd.org/base/stable/8@202254 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200921
marius [Wed, 13 Jan 2010 21:12:27 +0000 (21:12 +0000)]
MFC: r200921

- Add quirk handling for ALi M5229, mainly setting the magic "force
  enable IDE I/O" bit which prevents data access traps with revision
  0xc8 in Fire-based machines when pci(4) enables PCIM_CMD_PORTEN.
- Like for sun4v also don't add the PCI side of host-PCIe bridges to
  the bus on sun4u as they don't have configuration space implement
  there either.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202252 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200920
marius [Wed, 13 Jan 2010 21:08:57 +0000 (21:08 +0000)]
MFC: r200920

- Sort the prototypes.
- Add macros to ease the access of device configuration space in
  ofw_pcibus_setup_device().

git-svn-id: svn://svn.freebsd.org/base/stable/8@202251 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200918
marius [Wed, 13 Jan 2010 21:04:56 +0000 (21:04 +0000)]
MFC: r200918

Add structures for OFW MSI/MSI-X support. These are identical for
both sun4u and sun4v.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202248 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200917
marius [Wed, 13 Jan 2010 21:03:04 +0000 (21:03 +0000)]
MFC: r200917

Hook ebus(4) and isa(4) up to the sun4v LINT build in order to
ensure that their compilation doesn't break as they are expected
to work as-is now (but aren't actually run-time tested).

git-svn-id: svn://svn.freebsd.org/base/stable/8@202246 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200916
marius [Wed, 13 Jan 2010 20:59:36 +0000 (20:59 +0000)]
MFC: r200916

Remove devices which are/were only relevant for sun4u.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202244 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200915
marius [Wed, 13 Jan 2010 20:51:21 +0000 (20:51 +0000)]
MFC: r200915

Don't probe the bq4802 variant found in Ultra 25 and 45 for now as
this chip isn't MC146818 compatible and requires different handlers
(but which I can't test due to lack of such hardware).

git-svn-id: svn://svn.freebsd.org/base/stable/8@202241 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200914
marius [Wed, 13 Jan 2010 20:40:49 +0000 (20:40 +0000)]
MFC: r200914

Don't use an out register to hold the vector number across the call
of the interrupt handler in intr_fast() as the handler might clobber
it (no in-tree handler currently does but an upcoming one will).
While at it, tidy the register usage in the interrupt counting code.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202237 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200880
marius [Wed, 13 Jan 2010 20:35:27 +0000 (20:35 +0000)]
MFC: r200880

- Correct an off-by-one error when calculating the end of a child
  range.
- Spell the PCI TLA in uppercase.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202234 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200879
marius [Wed, 13 Jan 2010 20:32:54 +0000 (20:32 +0000)]
MFC: r200879

- Add support for the JBus to EBus bridges which hang off of nexus(4)
  and are found in sun4u and sun4v machines based on the Fire ASIC.
- Initialize the configuration space of the PCI to EBus variant the
  same way as OpenSolaris does.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202232 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200878
marius [Wed, 13 Jan 2010 20:07:45 +0000 (20:07 +0000)]
MFC: r200878

- Add macros for the states of the interrupt clear registers.
- Change INTMAP_VEC() to take an INO as its second argument rather
  than an INR. The former is what I actually intended with this
  macro and how it's currently used.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202228 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200876
marius [Wed, 13 Jan 2010 20:05:32 +0000 (20:05 +0000)]
MFC: r200876

Make these constants unsigned which is more appropriate.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202226 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200874
marius [Wed, 13 Jan 2010 20:03:24 +0000 (20:03 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202225 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200815, r200816
marius [Wed, 13 Jan 2010 19:59:13 +0000 (19:59 +0000)]
MFC: r200815, r200816

Provide and consume missing module dependency information.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202223 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: 197164
marius [Wed, 13 Jan 2010 19:55:51 +0000 (19:55 +0000)]
MFC: 197164

Factor out the duplicated macro for the device type used in the
OFW device tree for PCI bridges and add a new one for PCI Express.
While at it, take advantage of the former for the rman(9) work-
around in jbusppm(4).

git-svn-id: svn://svn.freebsd.org/base/stable/8@202221 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 199607, 200797, 201270, 201669:
jhb [Wed, 13 Jan 2010 18:12:21 +0000 (18:12 +0000)]
MFC 199607, 200797, 201270, 201669:
Use pthread_once() to initialize the thread-local storage for localtime()
and gmtime() and _once() to initialize gmt state rather than home-rolled
versions using pthread mutex locks.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202201 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 201215:
jhb [Tue, 12 Jan 2010 19:55:07 +0000 (19:55 +0000)]
MFC 201215:
Add support for configuring vlan(4) interfaces as child devices similar to
wlan(4) interfaces.  vlan(4) interfaces are listed via a new 'vlans_<IF>'
variable.  If a vlan interface is a number, then that number is treated as
the vlan tag for the interface and the interface will be named '<IF>.<tag>'.
Otherwise, the vlan tag must be provided via a vlan parameter in a
'create_args_<vlan>' variable.

While I'm here, fix a few nits in rc.conf(5) and mention create_args_<IF> in
the description of cloned_interfaces.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202167 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 201202:
jhb [Tue, 12 Jan 2010 18:47:40 +0000 (18:47 +0000)]
MFC 201202:
Use reallocf() to simplify some logic.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202164 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201444:
brooks [Tue, 12 Jan 2010 07:33:33 +0000 (07:33 +0000)]
MFC r201444:

  The size of credential messages is limited by CMGROUP_MAX rather than
  NGROUPS.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202140 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201955:
brooks [Tue, 12 Jan 2010 06:14:24 +0000 (06:14 +0000)]
MFC r201955:
  Improve the comment about CMGROUP_MAX.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202138 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201954:
brooks [Tue, 12 Jan 2010 06:11:36 +0000 (06:11 +0000)]
MFC r201954:

  Update the comment on printing group membership to reflect that fact
  that each group the process is a member of is printed rather than
  an entry for each group the user could be a member of.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202137 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201953:
brooks [Tue, 12 Jan 2010 06:09:56 +0000 (06:09 +0000)]
MFC r201953:
  Correct the explination text for the kern.ngroups.  It reflects the
  number of supplemental groups, not the total number of groups.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202136 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201443:
brooks [Tue, 12 Jan 2010 06:00:56 +0000 (06:00 +0000)]
MFC r201443:
  Add vlan(4) to all GENERIC kernels.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202134 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201544
qingli [Tue, 12 Jan 2010 00:04:13 +0000 (00:04 +0000)]
MFC r201544

An existing incomplete ARP entry would expire a subsequent
statically configured entry of the same host. This bug was
due to the expiration timer was not cancelled when installing
the static entry. Since there exist a potential race condition
with respect to timer cancellation, simply check for the
LLE_STATIC bit inside the expiration function instead of
cancelling the active timer.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202132 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoSync mxge(4) with head:
gallatin [Mon, 11 Jan 2010 20:32:51 +0000 (20:32 +0000)]
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

git-svn-id: svn://svn.freebsd.org/base/stable/8@202112 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r201029
rmacklem [Mon, 11 Jan 2010 19:30:23 +0000 (19:30 +0000)]
MFC: r201029
When porting the experimental nfs subsystem to the FreeBSD8 krpc,
I added 3 functions that were already in the experimental client
under different names. This patch deletes the functions in the
experimental client and renames the calls to use the other set.
(This is just removal of duplicated code and does not fix any bug.)

git-svn-id: svn://svn.freebsd.org/base/stable/8@202106 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 201522:
jhb [Mon, 11 Jan 2010 18:42:29 +0000 (18:42 +0000)]
MFC 201522:
Expose the upper 256 ptys in the default devfs rules.  I should have updated
this when expanding the old pty(4) driver to use 512 ptys by default.  This
is more important for 7.x.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202100 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200770:
kib [Mon, 11 Jan 2010 12:35:16 +0000 (12:35 +0000)]
MFC r200770:
Remove VI_OBJDIRTY and make sure that OBJ_MIGHTBEDIRTY is set only for
vnode-backed vm objects.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202082 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200026,201801: Swap carp(4) log levels.
ru [Mon, 11 Jan 2010 12:32:06 +0000 (12:32 +0000)]
MFC: r200026,201801: Swap carp(4) log levels.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202081 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r201538, r201539
brueffer [Mon, 11 Jan 2010 05:19:51 +0000 (05:19 +0000)]
MFC: r201538, r201539

Catch up with the VFS_VPTOFH(9) -> VOP_VPTOFH(9) repocopy that happened
almost three years ago in r166794.

Add a missing word.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202068 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201143:
delphij [Mon, 11 Jan 2010 02:31:00 +0000 (02:31 +0000)]
MFC r201143:

Apply OpenSolaris revision 8021:b8fe9660eb2d which brings our zpool
to version 14, making it possible for zpools created on OpenSolaris
2009.06 be used on FreeBSD.

PR: kern/141800
Submitted by: mm
Reviewed by: pjd, trasz
Obtained from: OpenSolaris onnv-gate

git-svn-id: svn://svn.freebsd.org/base/stable/8@202059 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC rev 201269, 201373:
marcel [Sun, 10 Jan 2010 23:51:02 +0000 (23:51 +0000)]
MFC rev 201269, 201373:
o   Revamp bus_space access functions (201269).
o   Change BUS_SPACE_MAXADDR from 2^32-1 to 2^64-1 (201373).

git-svn-id: svn://svn.freebsd.org/base/stable/8@202052 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r210428: sh: Add a regression test that tries out all arithmetic ops.
jilles [Sun, 10 Jan 2010 16:58:12 +0000 (16:58 +0000)]
MFC r210428: sh: Add a regression test that tries out all arithmetic ops.

The gaps in the numbering sequence cannot really be avoided, as HEAD changes
are not necessarily merged in the same order as they are made (if they are
merged at all).

git-svn-id: svn://svn.freebsd.org/base/stable/8@202017 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 201151:
fabient [Sun, 10 Jan 2010 16:08:14 +0000 (16:08 +0000)]
MFC 201151:
 Use VFS_{LOCK,UNLOCK}_GIANT() around the call to vrele().

git-svn-id: svn://svn.freebsd.org/base/stable/8@202012 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 201023:
fabient [Sun, 10 Jan 2010 16:04:32 +0000 (16:04 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202009 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 201021:
fabient [Sun, 10 Jan 2010 16:00:00 +0000 (16:00 +0000)]
MFC 201021:
Log process mappings for existing processes at PMC start time.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202008 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201743:
kib [Sun, 10 Jan 2010 11:25:34 +0000 (11:25 +0000)]
MFC r201743:
Give some information on SF_MNOWAIT flag.

MFC r201759 (by brueffer):
Fix a typo and bump date for the previous commit.

MFC r201760:
Further fix grammar.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201994 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201756:
delphij [Sun, 10 Jan 2010 07:08:11 +0000 (07:08 +0000)]
MFC r201756:

Re-apply onnv-gate revisions 7994 and 8986 (corresponds to FreeBSD
revision 200726 and 200727).

Reviewed by:  mm@

git-svn-id: svn://svn.freebsd.org/base/stable/8@201987 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200693:
yongari [Sat, 9 Jan 2010 01:17:31 +0000 (01:17 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201877 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200641,200676
yongari [Sat, 9 Jan 2010 00:36:28 +0000 (00:36 +0000)]
MFC r200641,200676

r200641:
  Document newly added loader tunable and sysctl variables.
   o hw.vge.msi_disable
   o dev.vge.%d.int_holdoff
   o dev.vge.%d.rx_coal_pkt
   o dev.vge.%d.tx_coal_pkt

r200676:
  Document more VIA Velocity family controllers to vge(4). Previously
  it mentioned only VT6122. While I'm here remove the mention of
  VT3119 which seems to be VIA's internal model name and VT3119
  wouldn't be available to end users.

  Reviewed by:  brueffer

git-svn-id: svn://svn.freebsd.org/base/stable/8@201875 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r201397
brueffer [Sat, 9 Jan 2010 00:27:23 +0000 (00:27 +0000)]
MFC: r201397

Add one more supported controller.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201872 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200696,200740,200756,200758-200759,200972
yongari [Sat, 9 Jan 2010 00:26:57 +0000 (00:26 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201871 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200638:
yongari [Sat, 9 Jan 2010 00:17:43 +0000 (00:17 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201868 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200616-200617,200635,200639,200644
yongari [Sat, 9 Jan 2010 00:12:59 +0000 (00:12 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201866 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 200615:
yongari [Sat, 9 Jan 2010 00:07:03 +0000 (00:07 +0000)]
MFC 200615:
  Add hardware MAC statistics support. This statistics could be
  extracted from dev.vge.%d.stats sysctl node.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201862 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200551-200552,200555,200558,200609,200613
yongari [Sat, 9 Jan 2010 00:02:40 +0000 (00:02 +0000)]
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().

git-svn-id: svn://svn.freebsd.org/base/stable/8@201860 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200538,200540-200541,200543,200545,200548
yongari [Fri, 8 Jan 2010 22:26:24 +0000 (22:26 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201840 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200526-200527,200529,200531-200533,200536
yongari [Fri, 8 Jan 2010 22:08:18 +0000 (22:08 +0000)]
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).

git-svn-id: svn://svn.freebsd.org/base/stable/8@201837 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201352
brooks [Fri, 8 Jan 2010 21:58:12 +0000 (21:58 +0000)]
MFC r201352

  If a filter has already been added, actually return EEXIST when trying
  at add it again.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201835 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200525:
yongari [Fri, 8 Jan 2010 21:37:16 +0000 (21:37 +0000)]
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

git-svn-id: svn://svn.freebsd.org/base/stable/8@201832 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201349:
brooks [Fri, 8 Jan 2010 21:27:09 +0000 (21:27 +0000)]
MFC r201349:
Ignore .glimpse_* files as generated by the glimpse target.  Also ignore
cscope.* files.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201826 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200519-200522
yongari [Fri, 8 Jan 2010 21:25:52 +0000 (21:25 +0000)]
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).

git-svn-id: svn://svn.freebsd.org/base/stable/8@201825 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r198987,199414,199543,200422
yongari [Fri, 8 Jan 2010 21:15:09 +0000 (21:15 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201823 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200999
rmacklem [Fri, 8 Jan 2010 20:25:59 +0000 (20:25 +0000)]
MFC: r200999
Modify the experimental server so that it uses VOP_ACCESSX().
This is necessary in order to enable NFSv4 ACL support. The
argument to nfsvno_accchk() was changed to an accmode_t and
the function nfsrv_aclaccess() was no longer needed and,
therefore, deleted.

Reviewed by: trasz

git-svn-id: svn://svn.freebsd.org/base/stable/8@201819 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201355: sh(1): document ulimit -w (swapuse rlimit).
jilles [Fri, 8 Jan 2010 14:33:03 +0000 (14:33 +0000)]
MFC r201355: sh(1): document ulimit -w (swapuse rlimit).

git-svn-id: svn://svn.freebsd.org/base/stable/8@201788 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201354: sh(1): Correct two places where "$@" lacked necessary quotes.
jilles [Fri, 8 Jan 2010 14:30:03 +0000 (14:30 +0000)]
MFC r201354: sh(1): Correct two places where "$@" lacked necessary quotes.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201787 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200994:
gavin [Fri, 8 Jan 2010 10:13:27 +0000 (10:13 +0000)]
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)

git-svn-id: svn://svn.freebsd.org/base/stable/8@201778 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r197816:
netchild [Fri, 8 Jan 2010 09:59:13 +0000 (09:59 +0000)]
MFC r197816:
---snip---
    Prevent paging pressure from draining arc too much
    - always drain arc if above arc_c_max - never drain arc if arc is below
      arc_c_max
---snip---

git-svn-id: svn://svn.freebsd.org/base/stable/8@201777 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200129 to stable/8:
antoine [Thu, 7 Jan 2010 19:37:21 +0000 (19:37 +0000)]
MFC r200129 to stable/8:
  Remove trailing ";" in UMA_HASH_INSERT and UMA_HASH_REMOVE macros.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201754 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoBump __FreeBSD_version to 800500 which should have happened already
bz [Thu, 7 Jan 2010 16:18:46 +0000 (16:18 +0000)]
Bump __FreeBSD_version to 800500 which should have happened already
after r198460 but was missed.

Note: that 800108 should have been 800501 with that but as there is no
functional problem here, it'll just stay as is. [1]

This will make pkg_add -r use packages-8-stable for stable/8 rather
than packages-8.0-release.

Reported by: Paride Legovini (pl ninthfloor.org) on stable@,
(pluknet gmail.com), jhb
Discussed with: rwatson [1]

git-svn-id: svn://svn.freebsd.org/base/stable/8@201749 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200871:
bms [Thu, 7 Jan 2010 14:15:34 +0000 (14:15 +0000)]
MFC r200871:
 Use ALLOW_NEW_SOURCES and BLOCK_OLD_SOURCES to signal a join or leave
 with SSM MLDv2 by default.
 This is current practice and complies with RFC 4604, as well as being
 required by production IPv6 networks in Japan.
 The behaviour may be disabled by setting the net.inet6.mld.use_allow
 sysctl/tunable to 0.

Requested by: Hideki Yamamoto, dikshie

git-svn-id: svn://svn.freebsd.org/base/stable/8@201747 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201347:
kib [Thu, 7 Jan 2010 11:41:47 +0000 (11:41 +0000)]
MFC r201347:
Allow swap out of the kernel stack for the thread with priority greater
or equial then PSOCK, not less or equial.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201738 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201504:
kib [Thu, 7 Jan 2010 11:33:57 +0000 (11:33 +0000)]
MFC r201504:
PG_NOSYNC is called VPO_NOSYNC for long time.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201737 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200088,200227-200228,200246,200264,201446
yongari [Thu, 7 Jan 2010 00:55:07 +0000 (00:55 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201706 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r199670-199671,199674,199679,199761,199807-199808
yongari [Thu, 7 Jan 2010 00:44:54 +0000 (00:44 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201702 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r199667-199668
yongari [Wed, 6 Jan 2010 23:42:15 +0000 (23:42 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201697 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC 199663-199666
yongari [Wed, 6 Jan 2010 23:34:53 +0000 (23:34 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201694 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r199065,199115-199116,199153,199661-199662
yongari [Wed, 6 Jan 2010 23:26:09 +0000 (23:26 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201692 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r198967,199009-199011,199014,199020,199035-199036,199054
yongari [Wed, 6 Jan 2010 23:02:35 +0000 (23:02 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201687 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r198923-198924,198927-198928
yongari [Wed, 6 Jan 2010 22:45:49 +0000 (22:45 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201685 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoFix BIND named(8) cache poisoning with DNSSEC validation.
simon [Wed, 6 Jan 2010 21:45:30 +0000 (21:45 +0000)]
Fix BIND named(8) cache poisoning with DNSSEC validation.
[SA-10:01]

Fix ntpd mode 7 denial of service. [SA-10:02]

Fix ZFS ZIL playback with insecure permissions. [SA-10:03]

Various FreeBSD 8.0-RELEASE improvements. [EN-10:01]

Security: FreeBSD-SA-10:01.bind
Security: FreeBSD-SA-10:02.ntpd
Security: FreeBSD-SA-10:03.zfs
Errata: FreeBSD-EN-10:01.freebsd
Approved by: so (simon)

git-svn-id: svn://svn.freebsd.org/base/stable/8@201679 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200819:
gavin [Wed, 6 Jan 2010 20:54:04 +0000 (20:54 +0000)]
MFC r200819:

  Grammar and minor tweaks to powerd(8) man page.

PR: docs/133186
Approved by: ed (mentor, implicit)

git-svn-id: svn://svn.freebsd.org/base/stable/8@201672 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r200820:
gavin [Wed, 6 Jan 2010 20:40:41 +0000 (20:40 +0000)]
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)

git-svn-id: svn://svn.freebsd.org/base/stable/8@201667 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC: r200251
jkim [Wed, 6 Jan 2010 20:28:47 +0000 (20:28 +0000)]
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.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201665 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201290: Treat an empty argument as an error, instead of
ru [Wed, 6 Jan 2010 08:26:43 +0000 (08:26 +0000)]
MFC r201290: Treat an empty argument as an error, instead of
fetching the contents of the root directory.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201634 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoAccording to basic instructions from jhb clean-up mergeinfo from r201614.
bz [Tue, 5 Jan 2010 23:03:59 +0000 (23:03 +0000)]
According to basic instructions from jhb clean-up mergeinfo from r201614.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201622 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201319
qingli [Tue, 5 Jan 2010 22:37:05 +0000 (22:37 +0000)]
MFC r201319

Remove a deleted comment line that was brought back by
my previous commit.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201617 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201285
qingli [Tue, 5 Jan 2010 22:33:10 +0000 (22:33 +0000)]
MFC r201285

Consolidate the route message generation code for when address
aliases were added or deleted. The announced route entry for
an address alias is no longer empty because this empty route
entry was causing some route daemon to fail and exit abnormally.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201616 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201284
qingli [Tue, 5 Jan 2010 22:28:23 +0000 (22:28 +0000)]
MFC r201284

Multiple IPv6 addresses of the same prefix can be installed on the
same interface. The first address will install the prefix route into
the kernel routing table and that prefix will be marked as on-link.
Without RADIX_MPATH enabled, the other address aliases of the same
prefix will update the prefix reference count but no other routes
will be installed. Consequently the prefixes associated with these
addresses would not be marked as on-link. As such, incoming packets
destined to these address aliases will fail the ND6 on-link check
on input. This patch fixes the above problem by searching the kernel
routing table and try to find an on-link prefix on the given interface.

git-svn-id: svn://svn.freebsd.org/base/stable/8@201615 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

14 years agoMFC r201282, r201543
qingli [Tue, 5 Jan 2010 22:14:55 +0000 (22:14 +0000)]
MFC r201282, r201543

r201282
-------
The proxy arp entries could not be added into the system over the
IFF_POINTOPOINT link types. The reason was due to the routing
entry returned from the kernel covering the remote end is of an
interface type that does not support ARP. This patch fixes this
problem by providing a hint to the kernel routing code, which
indicates the prefix route instead of the PPP host route should
be returned to the caller. Since a host route to the local end
point is also added into the routing table, and there could be
multiple such instantiations due to multiple PPP links can be
created with the same local end IP address, this patch also fixes
the loopback route installation failure problem observed prior to
this patch. The reference count of loopback route to local end would
be either incremented or decremented. The first instantiation would
create the entry and the last removal would delete the route entry.

r201543
-------
The IFA_RTSELF address flag marks a loopback route has been installed
for the interface address. This marker is necessary to properly support
PPP types of links where multiple links can have the same local end
IP address. The IFA_RTSELF flag bit maps to the RTF_HOST value, which
was combined into the route flag bits during prefix installation in
IPv6. This inclusion causing the prefix route to be unusable. This
patch fixes this bug by excluding the IFA_RTSELF flag during route
installation.

PR: ports/141342, kern/141134

git-svn-id: svn://svn.freebsd.org/base/stable/8@201614 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f