dragonfly.git
11 years agoNext round of fixing all kinds of spelling mistakes.
Sascha Wildner [Thu, 17 May 2007 08:19:03 +0000 (08:19 +0000)]
Next round of fixing all kinds of spelling mistakes.

11 years agoKill references to the recently removed diskpart(8).
Sascha Wildner [Thu, 17 May 2007 06:12:05 +0000 (06:12 +0000)]
Kill references to the recently removed diskpart(8).

11 years agoRemove the roll-your-own disklabel from CCD. Use the kernel disk manager
Matthew Dillon [Thu, 17 May 2007 03:20:13 +0000 (03:20 +0000)]
Remove the roll-your-own disklabel from CCD.  Use the kernel disk manager
for disklabel support instead.

Make CCD a real disk device rather then a fake one.  NOTE: All /dev/ccd*
devices have changed and must be remade

Introduce DSO_COMPATMBR.  This forces an MBR sector to be reserved in front
of a disklabel even when the target disk does not have slices.  It is used
by the CCD and VN devices to keep the disklabel aligned the same way it has
been historically.

Implement 64 bit block addressing for CCD.

Implement a new filesystem type "ccd", and require that the devices backing
the CCD use that filesystem type for safety.

Fix a bug in DIOCGPART where the partinfo->media_blocks was not being
set properly for partitions.

11 years agoAdd dev_drefs() - return the number of references on a cdev_t
Matthew Dillon [Thu, 17 May 2007 03:02:00 +0000 (03:02 +0000)]
Add dev_drefs() - return the number of references on a cdev_t

11 years agoPort 16 byte SCSI command support from FreeBSD. This adds support for
Matthew Dillon [Wed, 16 May 2007 20:59:38 +0000 (20:59 +0000)]
Port 16 byte SCSI command support from FreeBSD.  This adds support for
detecting and performing I/O on disks greater then 2TB (with more
then 2^32 blocks).

Remove KKASSERT from dual user/kernel compiled file - reported by Sascha

Obtained-from: FreeBSD / Kenneth D. Merry did the original FreeBSD work.

11 years agoE2BIG -> EFBIG
Sepherosa Ziehau [Wed, 16 May 2007 14:37:55 +0000 (14:37 +0000)]
E2BIG -> EFBIG

11 years agoE2BIG -> EFBIG
Sepherosa Ziehau [Wed, 16 May 2007 14:24:40 +0000 (14:24 +0000)]
E2BIG -> EFBIG

11 years agoContinue untangling the disklabel. Add sector index reservation fields
Matthew Dillon [Wed, 16 May 2007 05:20:26 +0000 (05:20 +0000)]
Continue untangling the disklabel.  Add sector index reservation fields
to the diskslice and partinfo structures.  These fields will replace the
hardcoded LABELSECTOR constant and also help manage reserved areas in
the disklabel.

11 years agoSupport 64 bit file sizes and 64 bit sector numbers.
Matthew Dillon [Tue, 15 May 2007 22:45:10 +0000 (22:45 +0000)]
Support 64 bit file sizes and 64 bit sector numbers.

11 years ago* The diskslice abstraction now stores offsets/sizes as 64 bit quantities.
Matthew Dillon [Tue, 15 May 2007 22:44:21 +0000 (22:44 +0000)]
* The diskslice abstraction now stores offsets/sizes as 64 bit quantities.
  (NOTE: DOS partition tables and standard disklabels can't handle 64 bit
  sector numbers yet).  For future pluggable disklabel/partitioning schemes.

* The kernel panic / kernel core API is now 64 bits.

* The VN device now uses 64 bit sector numbers and can handle block devices
  up to what is supported by the filesystem (typically 8TB).  This change
  was made primarily so we can test future disklabel / partition table
  support.

* Pass 64 bit LBAs to various block devices and to the SCSI layer.

* Check for and assert 32 bit overflow conditions in various places, instead
  of wrapping.

11 years agoThe normal ATA driver is capable of handling 48 bit block addressing, but
Matthew Dillon [Tue, 15 May 2007 20:29:16 +0000 (20:29 +0000)]
The normal ATA driver is capable of handling 48 bit block addressing, but
the blockaddr field in the ad_request structure was only 32 bits.  Expand it
to 64 bits.  Note that NATA didn't have this problem.

11 years agoAdd a new command, /sbin/diskinfo, which uses the revamped DIOCGPART
Matthew Dillon [Tue, 15 May 2007 17:53:11 +0000 (17:53 +0000)]
Add a new command, /sbin/diskinfo, which uses the revamped DIOCGPART
ioctl to extract information from storage devices.  As an added bonus,
the physical byte offset relative to the base of the raw device
for the beginning of a slice or partition can be displayed.  Great for
debugging.

11 years agoContinue untangling the disklabel. Reorganize struct partinfo and the
Matthew Dillon [Tue, 15 May 2007 17:51:04 +0000 (17:51 +0000)]
Continue untangling the disklabel.  Reorganize struct partinfo and the
DIOCGPART ioctl to extract the required information directly, and fix
the DIOCGPART ioctl direction so userland can use it.

This removes numerous disklabel references, particularly from the filesystem
code which was doing silly indirections just to figure out the sector size.

NOTE: The absolute byte offset of the slice or partition (relative to the
base of the raw disk) is also made available, but is not currently used
by the kernel.

11 years ago- Fix a typo which may leave promisc/allmulti mode mis-configured.
Sepherosa Ziehau [Tue, 15 May 2007 12:58:45 +0000 (12:58 +0000)]
- Fix a typo which may leave promisc/allmulti mode mis-configured.
- Clean up bge_ioctl() a little bit:
  o  Nuke unnecessay local variable 'flags', use 'mask' instead.
  o  Move 'mii' declaration near its usage.
  o  Nuke redundant 'error' resetting.
- Minor style changes.

11 years agoContinue untangling the disklabel. Use the generic disk_info structure
Matthew Dillon [Tue, 15 May 2007 05:37:39 +0000 (05:37 +0000)]
Continue untangling the disklabel.  Use the generic disk_info structure
to hold template information instead of the disklabel structure.

This removes all references to the disklabel structure from the MBR code
and leaves mostly opaque references in the slice code.

11 years agoContinue untangling the disklabel. Have most disk device drivers fill out
Matthew Dillon [Tue, 15 May 2007 00:01:04 +0000 (00:01 +0000)]
Continue untangling the disklabel.  Have most disk device drivers fill out
and install a generic disk_info structure instead of filling out random
fields in the disklabel.

The generic disk_info structure uses a 64 bit integer to represent
the media size in bytes or total sector count.

11 years agoRemove diskpart(8) manual page.
Sascha Wildner [Mon, 14 May 2007 21:26:56 +0000 (21:26 +0000)]
Remove diskpart(8) manual page.

11 years agoStart untangling the disklabel from various bits of code with the goal of
Matthew Dillon [Mon, 14 May 2007 20:02:45 +0000 (20:02 +0000)]
Start untangling the disklabel from various bits of code with the goal of
introducing support for a new 64 bit disklabel.

Remove the D_* flags for disklabel.d_flags.  These sorts of flags just do
not belong in the disk image.

Relabel the partition sub-structure in disktab.h, and remove other ancient
compatibility defines in disklabel.h.

11 years agoRemove the ancient diskpart program.
Matthew Dillon [Mon, 14 May 2007 19:28:40 +0000 (19:28 +0000)]
Remove the ancient diskpart program.

11 years agoLink to pkgsrc(7) instead of packages(7).
Sascha Wildner [Mon, 14 May 2007 14:28:47 +0000 (14:28 +0000)]
Link to pkgsrc(7) instead of packages(7).

11 years agoUse M_DONTWAIT for mcluster allocation on em_init() path to prevent system
Sepherosa Ziehau [Mon, 14 May 2007 12:31:41 +0000 (12:31 +0000)]
Use M_DONTWAIT for mcluster allocation on em_init() path to prevent system
hanging, if user configures RX descriptors to the maximum allowable value,
but kern.ipc.nmbclusters tunable is forgotten to be adjusted accordingly.

System-Hanging-Experienced-by: hasso@ :P
# This commit can be reverted once object cache limit can grow automaticly.

11 years agoAdd NetBSD's pkgsrc(7) manpage.
Sascha Wildner [Mon, 14 May 2007 11:31:23 +0000 (11:31 +0000)]
Add NetBSD's pkgsrc(7) manpage.

11 years agoRemove old unused cruft.
Matthew Dillon [Mon, 14 May 2007 05:58:59 +0000 (05:58 +0000)]
Remove old unused cruft.

11 years agoMake the kern.ipc.nmbclusters and kern.ipc.nmbufs sysctls read-only.
Matthew Dillon [Sun, 13 May 2007 22:56:59 +0000 (22:56 +0000)]
Make the kern.ipc.nmbclusters and kern.ipc.nmbufs sysctls read-only.
These may only be set as boot-time variables in /boot/loader.conf.

Adjusting them after the fact w/sysctl will not update the objcache limits
and will cause a ton of confusion because then netstat -m will report
the adjusted limits but the system won't actually be using the adjusted
limits.

objcache mbuf limits can be adjusted dynamically, we just need some code to
do it -> for the future!

Reported-by: Peter Avalos <pavalos@theshell.com>
11 years agoAnother round of spelling fixes in manpages, messages, readmes etc.
Sascha Wildner [Sun, 13 May 2007 22:25:42 +0000 (22:25 +0000)]
Another round of spelling fixes in manpages, messages, readmes etc.

11 years agoMy round of spelling corrections in /share/man.
Hasso Tepper [Sun, 13 May 2007 20:29:48 +0000 (20:29 +0000)]
My round of spelling corrections in /share/man.

11 years agoFix numerous spelling mistakes.
Sascha Wildner [Sun, 13 May 2007 18:33:59 +0000 (18:33 +0000)]
Fix numerous spelling mistakes.

11 years agoOoops, cache_inval_vp_nonblock() was being called too late, after the
Matthew Dillon [Sun, 13 May 2007 04:34:47 +0000 (04:34 +0000)]
Ooops, cache_inval_vp_nonblock() was being called too late, after the
vgone() call instead of before.  Change the semantics to call it beforehand,
document that no new namecache associations can be made once a vnode is marked
for reclamation, and assert that no new namecache associations have been
made later on when the reclaimed vnode is reused.

11 years agoFix a vnode recyclement namecache<->vnode deadlock introduced with recent
Matthew Dillon [Sun, 13 May 2007 02:34:22 +0000 (02:34 +0000)]
Fix a vnode recyclement namecache<->vnode deadlock introduced with recent
changes.  Two primary fixes have been made to the allocvnode and vnlru
recyclement code.

There are still a few possible deadlocks in less traveled code
paths (such as in procfs) that existed prior to recent changes.

Reported-by: Peter Avalos <pavalos@theshell.com>,
     Thomas Nikolajsen <thomas.nikolajsen@mail.dk>

11 years agoRemove variables that are no longer used due to the previous commit.
Matthew Dillon [Sun, 13 May 2007 01:32:28 +0000 (01:32 +0000)]
Remove variables that are no longer used due to the previous commit.

11 years agoUse .Nm
Sascha Wildner [Sat, 12 May 2007 23:22:36 +0000 (23:22 +0000)]
Use .Nm

11 years agoSort references
Sascha Wildner [Sat, 12 May 2007 23:00:16 +0000 (23:00 +0000)]
Sort references

11 years agoMake fsstress compile.
Sascha Wildner [Sat, 12 May 2007 21:46:49 +0000 (21:46 +0000)]
Make fsstress compile.

11 years agoUse .Nx
Sascha Wildner [Sat, 12 May 2007 21:27:31 +0000 (21:27 +0000)]
Use .Nx

11 years agoUse .At, .Bsx, .Fx, .Nx and .Ox
Sascha Wildner [Sat, 12 May 2007 21:22:11 +0000 (21:22 +0000)]
Use .At, .Bsx, .Fx, .Nx and .Ox

11 years agoUse .Pa for URLs
Sascha Wildner [Sat, 12 May 2007 21:16:23 +0000 (21:16 +0000)]
Use .Pa for URLs

11 years agoUse .An/.Aq
Sascha Wildner [Sat, 12 May 2007 21:15:35 +0000 (21:15 +0000)]
Use .An/.Aq

11 years agoAdd missing newline.
Sascha Wildner [Sat, 12 May 2007 18:05:43 +0000 (18:05 +0000)]
Add missing newline.

11 years agoUse GNU style like the rest of the file for my last commit.
Sascha Wildner [Sat, 12 May 2007 09:18:52 +0000 (09:18 +0000)]
Use GNU style like the rest of the file for my last commit.

11 years agoSync newsyslog(8) with FreeBSD's current code.
Sascha Wildner [Sat, 12 May 2007 08:52:00 +0000 (08:52 +0000)]
Sync newsyslog(8) with FreeBSD's current code.

New things:

* Re-ordering of the rotate/signal steps. First, rotate all files which
  need to be rotated and then send a single signal to each daemon that
  needs to be notified. This way, each daemon will only be signaled once
  instead of once per file.

* Allow /var/log to be a symbolic link.

* -d option for specifying an alternate root for log files.

* -D option for debugging purposes.

* -N option to suppress log file rotation (intended to be used in
  conjunction with -C and -CC).

* Bug fixes and minor improvements.

Note: FreeBSD's r1.107 of newsyslog.c was not brought in as it generates
      a warning in DragonFly instead of fixing one.

11 years agoReset ifnet.if_timer in bge_stop()
Sepherosa Ziehau [Sat, 12 May 2007 08:39:56 +0000 (08:39 +0000)]
Reset ifnet.if_timer in bge_stop()

11 years agoAdd reference to dntpd(8) in SEE ALSO.
Sascha Wildner [Sat, 12 May 2007 08:08:29 +0000 (08:08 +0000)]
Add reference to dntpd(8) in SEE ALSO.

11 years ago* Add descriptions for:
Sascha Wildner [Sat, 12 May 2007 07:38:01 +0000 (07:38 +0000)]
* Add descriptions for:

  dntpd_enable, dntpd_flags, dntpd_program, dhcpd_enable, dhcrelay_enable,
  ftpd_enable, ftpd_flags, mixer_enable, nfs_client_flags, rand_irq,
  resident_enable, varsym_enable, vidhistory

* Add references to the associated manual pages.

* Move sshd_program below sshd_enable.

* Minor cleanup.

There's still some work left.

11 years agoFix typo.
Sascha Wildner [Sat, 12 May 2007 07:22:41 +0000 (07:22 +0000)]
Fix typo.

11 years agoHook resident.conf(5) and varsym.conf(5) into the build and add some
Sascha Wildner [Sat, 12 May 2007 07:21:51 +0000 (07:21 +0000)]
Hook resident.conf(5) and varsym.conf(5) into the build and add some
references to them.

11 years agoAdd resident.conf(5) and varsym.conf(5) manual pages.
Sascha Wildner [Sat, 12 May 2007 07:09:00 +0000 (07:09 +0000)]
Add resident.conf(5) and varsym.conf(5) manual pages.

11 years ago- Merge bge_release_resources() into bge_detach(). This funcion is only used
Sepherosa Ziehau [Sat, 12 May 2007 04:05:35 +0000 (04:05 +0000)]
- Merge bge_release_resources() into bge_detach().  This funcion is only used
  by bge_detach() and is quite simple.
- Minor style changes.

11 years agoBump .Dd for recent updates and do some mdoc cleanup.
Sascha Wildner [Fri, 11 May 2007 08:25:24 +0000 (08:25 +0000)]
Bump .Dd for recent updates and do some mdoc cleanup.

11 years agoAdd the ID for the Realtek ALC862 codec to the hda sound driver.
Matthew Dillon [Fri, 11 May 2007 01:03:06 +0000 (01:03 +0000)]
Add the ID for the Realtek ALC862 codec to the hda sound driver.

Submitted-by: Joe Talbott <josepht@cstone.net>
11 years agoFix the location of Make.tags.inc
Matthew Dillon [Fri, 11 May 2007 00:10:10 +0000 (00:10 +0000)]
Fix the location of Make.tags.inc

Submitted-by: Joe Talbott <josepht@cstone.net>
11 years agoUpgrade to libarchive 2.2.1 which fixes device node handling.
Peter Avalos [Wed, 9 May 2007 19:39:24 +0000 (19:39 +0000)]
Upgrade to libarchive 2.2.1 which fixes device node handling.

11 years agoAdd our READMEs.
Peter Avalos [Wed, 9 May 2007 19:32:43 +0000 (19:32 +0000)]
Add our READMEs.

11 years agoMerge from vendor branch LIBARCHIVE:
Peter Avalos [Wed, 9 May 2007 19:11:49 +0000 (19:11 +0000)]
Merge from vendor branch LIBARCHIVE:
Import libarchive 2.2.1.

11 years agoImport libarchive 2.2.1.
Peter Avalos [Wed, 9 May 2007 19:11:49 +0000 (19:11 +0000)]
Import libarchive 2.2.1.

11 years agoFix a bug where multiple mounts on the same mount point cause the
Matthew Dillon [Wed, 9 May 2007 05:12:45 +0000 (05:12 +0000)]
Fix a bug where multiple mounts on the same mount point cause the
machine to lockup when the mount is access.  The wrong namecache handle
was being used to traverse "..", causing an endless loop when more then one
iteration was required to chain up the mount points.

Reported-by: Thomas Nikolajsen <thomas.nikolajsen@mail.dk>
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue583>

11 years agoSynchronize libkvm etc, with recent kernel major/minor device
Matthew Dillon [Wed, 9 May 2007 04:33:52 +0000 (04:33 +0000)]
Synchronize libkvm etc, with recent kernel major/minor device
numbering changes.

11 years agoGive the device major / minor numbers their own separate 32 bit fields
Matthew Dillon [Wed, 9 May 2007 00:53:36 +0000 (00:53 +0000)]
Give the device major / minor numbers their own separate 32 bit fields
in the kernel.  Change dev_ops to use a RB tree to index major device
numbers and remove the 256 device major number limitation.

Build a dynamic major number assignment feature into dev_ops_add() and
adjust ASR (which already had a hand-rolled one), and MFS to use the
feature.  MFS at least does not require any filesystem visibility to
access its backing device.  Major devices numbers >= 256 are used for
dynamic assignment.

Retain filesystem compatibility for device numbers that fall within the
range that can be represented in UFS or struct stat (which is a single
32 bit field supporting 8 bit major numbers and 24 bit minor numbers).

11 years agoFix some warnings and raise WARNS to 6.
Sascha Wildner [Tue, 8 May 2007 20:59:37 +0000 (20:59 +0000)]
Fix some warnings and raise WARNS to 6.

11 years agoSync zoneinfo database with tzdata2007f from elsie.
Sascha Wildner [Tue, 8 May 2007 17:47:28 +0000 (17:47 +0000)]
Sync zoneinfo database with tzdata2007f from elsie.

africa:         8.7  -> 8.8
australasia:    8.6  -> 8.7
northamerica:   8.16 -> 8.17

From Paul Eggert's comments:

Changes affecting current time stamps:

* Haiti no longer observes DST.  (Thanks to Stephen Colebourne for this.)

Changes affecting past and future time stamps:

* The Turks and Caicos switch at 02:00, not at 00:00, and have adopted
  US DST rules.  (Thanks to Chris Dunn and Brian Inglis for this.)

Changes affecting future time stamps only:

* New Zealand is extending DST, starting later this year.
  (Thanks to Colin Sharples and many others for this info.)

Changes affecting commentary only:

* The Caprivi Strip unofficially does not observe DST, but we currently
  have no further details.  (Thanks to Petronella Sibeene for this.)

11 years agoReplace NOCDEV with NULL. NOCDEV was ((void *)-1) and as inherited
Matthew Dillon [Tue, 8 May 2007 02:31:43 +0000 (02:31 +0000)]
Replace NOCDEV with NULL.  NOCDEV was ((void *)-1) and as inherited
from *BSD a long time ago due to the device pointer / device number
duality.  Now that the pointer and device number has been separated, we
can just use NULL to indicate no-pointer.

Replace si_refs with si_sysref.  Use SYSREF for ref-count cdev_t.  Enable
cdev_t reclamation on deletion.

11 years agoAdd fields to the ktrace header to allow kdump to also display the TID
Matthew Dillon [Mon, 7 May 2007 15:43:31 +0000 (15:43 +0000)]
Add fields to the ktrace header to allow kdump to also display the TID
for individual threads.  Add a new option to ktrace, -j, which forces
TID display even if kdump doesn't think the program is threaded.

Submitted-by: Joe Talbott <josepht@cstone.net>
With-additions-by: Matt Dillon
11 years agoAdd hardware crypto support for 2x61 part of ral(4). This kind of hardware
Sepherosa Ziehau [Mon, 7 May 2007 14:14:21 +0000 (14:14 +0000)]
Add hardware crypto support for 2x61 part of ral(4).  This kind of hardware
can do hardware TKIP, TKIP MIC, WEP40/104 and CCMP.

Registers and global/pairwise key table layout are obtained from Ralink RT61
linux driver.  Their driver does not use pairwise key table, but how to setup
pairwise key table and how to enable pairwise key slot are shown.  BUT That's
still NOT enough to use pairwise key --- driver has to write 1 to SEC_CSR4 to
make the wheel whirl.  It is mentioned in no place, and I had to figure it
out myself ;)

2x61 part has 64 pairwise key slots, only last 60 slots will be used currently.
It is mainly because the RX descriptor does not contain a field to indicate
in which key table the decryption key belongs.

11 years agoAdapt 802.11 generic layer to support hardware crypto other than ath(4).
Sepherosa Ziehau [Mon, 7 May 2007 14:12:16 +0000 (14:12 +0000)]
Adapt 802.11 generic layer to support hardware crypto other than ath(4).
More specificly, it is changed for Wifi chips from Ralink (2x61 is used
as an example here), which have following hardware crypto features.  These
features are different from ath(4)'s and need special cares:
1) For TX, host does not need to insert IV and Extended IV after 802.11 MAC
   header, instead, host provides them in TX descriptor.
2) For RX, IV and Extended IV will not be left in RX buffer, instead, they
   are recorded in RX descriptor.
3) For RX and TKIP is used as crypto method, if the received MPDU is the
   only fragment of an MSDU then MIC is stripped and hardware will verify
   MIC for host.

Since these kinds of hardwares need to know IV and Extended IV,
ieee80211_crypto_iv structure is added.  It can hold IV and Extended IV, and
is used to pass these two IVs to and from 802.11 generic layer.  It requires
a special layout to ease crypto modules' processing, so comment is added to
make sure the structure's layout will not be changed.

To address the problems introduced by the hardware feature 1), following
changes are made:
- Add ic_getiv() interface for all crypto modules, which is (obviously) used
  to get IV and extended IV from crypto module.  Except that it puts IVs in
  ieee80211_crypto_iv instead of TX buffer, the new interface is quite similar
  to ic_encap().  Wrap ic_getiv() interface by ieee80211_crypto_getiv().
- Split ieee80211_crypto_encap() into two functions:
  o  ieee80211_crypto_findkey().  It is used to find the crypto key for given
     MPDU and receiver.
  o  ieee80211_crypto_encap_withkey().  It does the real encryption work.
     For Ralink's Wifi chips, this function is only called when host based
     encryption is used.
  After this splition, driver will have a chance to decide whether it need to
  do host encryption, which could happen when there are not enough hardware
  pairwise keys, or offload the encryption to hardware.  ath(4) does not need
  this interception, since no matter hardware encryption is used or not, host
  always has to insert IVs, while for Ralink Wifi chips, IV insertion can be
  done only if host encryption is to be used, for hardware encryption, they
  must be set in TX descriptor.
  This splition also causes another problem:
  ieee80211_crypto_encap_withkey() requires a keyid (read: not key index) and
  it will be too bloated to add a keyid parameter for both
  ieee80211_crypto_encap_withkey() and ieee80211_crypto_findkey(), so
  o  Change ieee80211_key.wk_pad to ieee80211_key.wk_keyid, which is keyid for
     a given key, and is set in ieee80211_crypto_resetkey().  Since
     ieee80211_crypto_resetkey() will need to know internals of ieee80211com,
     put it into ieee80211_crypto.c.
  o  Add assertion in ieee80211_crypto_findkey() to make sure that the crypto
     key has correct keyid.
  o  Make ieee80211_crypto_encap() a wrapper of ieee80211_crypto_findkey() and
     ieee80211_crypto_encap_withkey().  Old symantic of this function is still
     kept.
  The crypto encapsulation for Ralink Wifi chips will look like following:
  ...
  k = ieee80211_crypto_findkey();
  if (k is hardware encryption key)
      k = ieee80211_crypto_getiv(k, iv);
  else
      k = ieee80211_crypto_encap_withkey(k);
  ...
- Add a crypto key flag, IEEE80211_KEY_NOHDR, to indicate that host does not
  need to reserve space in TX buffer if hardware encryption is used.
- Honor IEEE80211_KEY_NOHDR in ieee80211_mbuf_adjust().
- Add an extended capability flag, IEEE80211_CEXT_CRYPTO_HDR, which is set by
  driver to inform crypto module that if hardware encryption is used for a
  crypto key, the key should have IEEE80211_KEY_NOHDR turned on.

To address the problems introduced by the hardware feature 2), following
changes are made:
- Add ic_update() interface for all crypto modules, which is used to update
  crypto modules' internal state according to the IVs passed in.  Except that
  it peeks at the passed in ieee80211_crypto_iv instead of RX buffer, it acts
  similarly to ic_decap().  Wrap ic_update() interface by
  ieee80211_crypto_update().  ieee80211_crypto_update() also locates the crypto
  key for given MPDU and sender.
- Add ieee80211_input_withiv(), which accepts an ieee80211_crypto_iv 'iv'
  parameter in addition to the original ieee80211_input() parameters.  If 'iv'
  parameter is NULL, old ieee80211_input() behaviour is used, if 'iv' is not
  NULL, ieee80211_crypto_update() will be called instead of
  ieee80211_crypto_decap().  ath(4) does not require this special processing,
  since no matter hardware encryption is used or not, IVs are always in RX
  buffer, but for Wifi chips from Ralink, we will have to explicitly pass the
  recorded IVs in RX descriptor down to crypto modules.
- Change ieee80211_input() to call ieee80211_input_withiv() with NULL 'iv'.
  Old symantic of this function is still kept.

To address the problems introduced by the hardware feature 3), following
changes are made:
- Add a key flag, IEEE80211_KEY_NOMIC, to give hint to TKIP crypto module that
  hardware will strip TKIP MIC.
- Honor IEEE80211_KEY_NOMIC in tkip_demic().
- Add an extended capability flag, IEEE80211_CEXT_STRIP_MIC, which is set by
  driver to inform crypto module that if hardware TKIP MIC is used for a
  crypto key, then the key should have IEEE80211_KEY_NOMIC turned on.

11 years agoMore agressive fix for IPv6 routing header type 0 issue.
Hasso Tepper [Mon, 7 May 2007 13:00:16 +0000 (13:00 +0000)]
More agressive fix for IPv6 routing header type 0 issue.
The ip6_rthdr0() function is commented out at all and the incoming Type 0
Routing Header is now processed as an unknown Routing Header. Also drop
packets with more than 1 routing headers and increment ifs6_in_hdrerr on
ip6s_toomanyhdr.

Obtained-from: KAME

11 years agoRevert intial IPv6 routing header type 0 processing fix.
Hasso Tepper [Mon, 7 May 2007 12:40:30 +0000 (12:40 +0000)]
Revert intial IPv6 routing header type 0 processing fix.

11 years agoReturn lowest rate for a "reclaimed" node, whose TX rate control data was
Sepherosa Ziehau [Mon, 7 May 2007 10:45:42 +0000 (10:45 +0000)]
Return lowest rate for a "reclaimed" node, whose TX rate control data was
already freed.  Since this kind of node will vanish soon, there is no need
to initialize TX rate control data for it here.  Add comment about it.

This problem (null pointer dereference) pops up when hostapd(8) is used on
a Ralink 2561S based ral(4).

11 years agoChanges to consdev - low level kernel console initialization.
Matthew Dillon [Mon, 7 May 2007 05:21:42 +0000 (05:21 +0000)]
Changes to consdev - low level kernel console initialization.

The consdev API was calling make_dev() extremely early in the boot sequence,
but except for a little code in syscons didn't really need the abstraction
to operate the kernel console during boot.

Change the consdev API to no longer require the use the device abstraction
to operate.  This will allow the device ABI (cdev_t) to be converted to
use SYSREF.

11 years agoAdd new devices support for bge(4)
Sepherosa Ziehau [Mon, 7 May 2007 04:54:32 +0000 (04:54 +0000)]
Add new devices support for bge(4)
- Recognize more devices, including PCI ids, chip ids and asic ids.
- Use meaningful macros to distinguish chip family and capability, instead of
  test against chip id or asic id directly.
- Pack bool fields of bge_softc into bge_softc.bge_flags,
  o  bge_softc.bge_extram is gone, which was never adopted.
  o  Add flags for jumbo frame capability.
  o  Add flags for various chip families.
  o  Add flags for the bus types (PCI-e/PCI-X).
  o  Add flags for various PHY bugs, which will be used by brgphy.
- Fix the detection of the bus type (PCI-e/PCI-X). (*)
- Properly initialize PCI-X bge(4).
- Fix support for certain 575x/578x chips (*):
  o  Correct bge_{read,write}mem_ind() by clearing BGE_PCI_MEMWIN_BASEADDR
     before returning.
  o  Use the appropriate register writing method when reseting the chip.
  o  Program the descriptor DMA engine correctly.
  o  Disable fastboot if the chips support it.
  o  Add some 'magical' magics on chip resetting path.
Obtained-from: FreeBSD
# (*) are done in if_bge.c rev 1.159 and 1.178 by scottl@freebsd.org and
# jkim@freebsd.org, based on code provided by David Christenson from Broadcom.

Adapt brgphy to work with the changes in bge(4)
- Recognize Broadcom 5755/5787 PHY.
- Add DSP code for various PHY bug workarounds.
- Detect PHY bugs based on the flags passed by bge(4) and load corresponding
  workaround DSP code.
Obtained-from: OpenBSD

- Set PHY jumbo frame settings.
Obtained-from: FreeBSD

11 years agoDo not rely on the fact that components in module_path to have
YONETANI Tomokazu [Mon, 7 May 2007 02:11:33 +0000 (02:11 +0000)]
Do not rely on the fact that components in module_path to have
trailing slash.  The previous commit changed the default value
of kern.module_path to use boot loader variable `module_path',
whose default value doesn't have trailing slashes, so kldload
failed unless you explicitly define module_path to have
trailing slashes.

Noticed-by: Thomas Nikolajsen <thomas.nikolajsen at mail.dk>
11 years agoUpdate vnodeinfo to handle the recent vnode changes.
Matthew Dillon [Sun, 6 May 2007 20:45:01 +0000 (20:45 +0000)]
Update vnodeinfo to handle the recent vnode changes.
Update ncptrace to handle changes to mount-on mechanics that occured last year.

11 years agoUpdate for vnode changes.
Matthew Dillon [Sun, 6 May 2007 19:38:48 +0000 (19:38 +0000)]
Update for vnode changes.

11 years agoUse SYSREF to reference count struct vnode. v_usecount is now
Matthew Dillon [Sun, 6 May 2007 19:23:36 +0000 (19:23 +0000)]
Use SYSREF to reference count struct vnode.  v_usecount is now
v_sysref(.refcnt).  v_holdcnt is now v_auxrefs.  SYSREF's termination state
(using a negative reference count from -0x40000000+) now places the vnode in
a VCACHED or VFREE state and deactivates it.  The vnode is now assigned a
64 bit unique id via SYSREF.

vhold() (which manipulates v_auxrefs) no longer reactivates a vnode and
is explicitly used only to track references from auxillary structures
and references to prevent premature destruction of the vnode.  vdrop()
will now only move a vnode from VCACHED to VFREE on the 1->0 transition
of v_auxrefs if the vnode is in a termination state.

vref() will now panic if used on a vnode in a termination state.  vget()
must now be used to explicitly reactivate a vnode.  These requirements
existed before but are now explicitly asserted.

vlrureclaim() and allocvnode() should now interact a bit better.  In
particular, vlrureclaim() will do a better job of finding vnodes to flush
and transition from VCACHED to VFREE, and allocvnode() will do a better
job finding vnodes to reuse without getting blocked by a flush.

allocvnode now uses a real VX lock to sequence vnodes into VRECLAIMED.  All
vnode special state processing now uses a VX lock.

Vnodes are now able to be slowly returned to the memory pool when
kern.maxvnodes is reduced at run time.

Various initialization elements have been moved to CTOR/DTOR and are
no longer in the critical path, improving performance.  However, since
SYSREF uses atomic_cmpset_int() (aka cmpxchgl), which reduces performance
somewhat, overall performance tends to be about the same.

11 years agoUpgrade to latest version of awk. Significant changes can be found in
Peter Avalos [Sun, 6 May 2007 17:04:30 +0000 (17:04 +0000)]
Upgrade to latest version of awk.  Significant changes can be found in
src/contrib/awk20070501/FIXES.

11 years agoAdd our READMEs.
Peter Avalos [Sun, 6 May 2007 17:02:17 +0000 (17:02 +0000)]
Add our READMEs.

11 years agoMerge from vendor branch AWK:
Peter Avalos [Sun, 6 May 2007 16:59:11 +0000 (16:59 +0000)]
Merge from vendor branch AWK:
Import latest awk sources.

11 years agoImport latest awk sources.
Peter Avalos [Sun, 6 May 2007 16:59:11 +0000 (16:59 +0000)]
Import latest awk sources.

11 years agoEase maintenance when importing new versions.
Peter Avalos [Sat, 5 May 2007 21:28:19 +0000 (21:28 +0000)]
Ease maintenance when importing new versions.

11 years agoImport libarchive 2.1.10 which brings in a few minor code cleanups.
Peter Avalos [Sat, 5 May 2007 21:25:33 +0000 (21:25 +0000)]
Import libarchive 2.1.10 which brings in a few minor code cleanups.

11 years agoMerge from vendor branch LIBARCHIVE:
Peter Avalos [Sat, 5 May 2007 21:25:33 +0000 (21:25 +0000)]
Merge from vendor branch LIBARCHIVE:
Import libarchive 2.1.10 which brings in a few minor code cleanups.

11 years agoGrab version from the contributed code instead of manually updating it
Peter Avalos [Sat, 5 May 2007 21:16:57 +0000 (21:16 +0000)]
Grab version from the contributed code instead of manually updating it
every time.

11 years agoThe bus_get_resource_list DEVMETHOD is primarily used to by PCI devices
Matthew Dillon [Sat, 5 May 2007 16:52:55 +0000 (16:52 +0000)]
The bus_get_resource_list DEVMETHOD is primarily used to by PCI devices
to get a list of resources from their parent bus device.  The default
method should not just recurse up a randomly or a child might get
something really unexpected.  Instead, if the method is not supported,
NULL should be returned.

Obtained-from: FreeBSD
Suggestd-by: Martin <dragonfly@wommm.nl>
11 years ago(essential part of rev 1.54 in FreeBSD)
YONETANI Tomokazu [Sat, 5 May 2007 16:13:53 +0000 (16:13 +0000)]
(essential part of rev 1.54 in FreeBSD)
Pull out the module path from the loader.  When you boot a kernel
installed in a different place (say /test and /test/modules) using
module_path, you'd want your kern.module_path set to the same paths
or else you can end up loading out-of-sync modules.

11 years agoUpdate vnode.9, correct spelling.
Matthew Dillon [Sat, 5 May 2007 06:26:57 +0000 (06:26 +0000)]
Update vnode.9, correct spelling.

11 years agoUpdate the vget, vput, vref, vrele, vhold, and vdrop documentation
Matthew Dillon [Sat, 5 May 2007 06:09:01 +0000 (06:09 +0000)]
Update the vget, vput, vref, vrele, vhold, and vdrop documentation
to reflect reality.

11 years agoSync with NetBSD.
Peter Avalos [Sat, 5 May 2007 00:27:40 +0000 (00:27 +0000)]
Sync with NetBSD.

11 years agopci_get_resource_list() was returning an illegal pointer instead of NULL
Matthew Dillon [Fri, 4 May 2007 17:25:04 +0000 (17:25 +0000)]
pci_get_resource_list() was returning an illegal pointer instead of NULL
in cases where no resource list is present.

Reported-by: Martin <dragonfly@wommm.nl>
11 years agoFollowup commit - fix a bug in the last commit.
Matthew Dillon [Fri, 4 May 2007 17:18:55 +0000 (17:18 +0000)]
Followup commit - fix a bug in the last commit.

Submitted-by: Aggelos Economopoulos <aoiko@cc.ece.ntua.gr>
11 years agoMake libthread_xu use the new lwp_rtprio() system call, mainly taken from
Matthew Dillon [Thu, 3 May 2007 23:08:34 +0000 (23:08 +0000)]
Make libthread_xu use the new lwp_rtprio() system call, mainly taken from
FreeBSD.  Add additional code to bounds check priority values rather then
silently accepting out of bounds values.

Submitted-by: Aggelos Economopoulos <aoiko@cc.ece.ntua.gr>
Obtained-from: Portions obtained from FreeBSD

11 years agoAdd a new system call, lwp_rtprio(), and regenerate system calls.
Matthew Dillon [Thu, 3 May 2007 23:04:36 +0000 (23:04 +0000)]
Add a new system call, lwp_rtprio(), and regenerate system calls.
int lwp_rtprio (int, pid_t, lwpid_t, struct rtprio *);

This patch provides an alternative to rtprio(2) which is able to operate
on individual LWPs.

Submitted-by: Aggelos Economopoulos <aoiko@cc.ece.ntua.gr>
11 years agoRestore part of old behaviour of bge_tick() -- if link is up, then don't
Sepherosa Ziehau [Thu, 3 May 2007 14:09:22 +0000 (14:09 +0000)]
Restore part of old behaviour of bge_tick() -- if link is up, then don't
call mii_tick().  Mii_tick() will read and write various PHY registers.
For bge(4), PHY accessing registers normally involves flipping AUTOPOLL
bit of BGE_MI_MODE, which trigers interrupts about link state changing.

# This changing restores netperf UDP_RR

11 years agoregen
Sepherosa Ziehau [Thu, 3 May 2007 08:32:24 +0000 (08:32 +0000)]
regen

11 years agoPHY ids for Broadcom 5755/5787
Sepherosa Ziehau [Thu, 3 May 2007 08:31:33 +0000 (08:31 +0000)]
PHY ids for Broadcom 5755/5787

11 years agoregen
Sepherosa Ziehau [Thu, 3 May 2007 07:58:57 +0000 (07:58 +0000)]
regen

11 years agoMore Broadcom GigE PCI ids.
Sepherosa Ziehau [Thu, 3 May 2007 07:58:06 +0000 (07:58 +0000)]
More Broadcom GigE PCI ids.

11 years agoFix typo.
Jeremy C. Reed [Wed, 2 May 2007 16:37:36 +0000 (16:37 +0000)]
Fix typo.

11 years ago- Merge following link state detection fixes from FreeBSD:
Sepherosa Ziehau [Wed, 2 May 2007 14:34:10 +0000 (14:34 +0000)]
- Merge following link state detection fixes from FreeBSD:
  if_bge.c rev 1.{102, 104, 113, 120, 124} (mainly oleg@freebsd.org)
  Local modifications:
  o  Split bge_link_upd() into
     bge_bcm5700_link_upd() -- for 5700 chips, except B2
     bge_tbi_link_upd()     -- for fiber interface
     bge_copper_link_upd()  -- for the rest for the bge(4) chips
     Assign one of them to bge_softc.bge_link_upd based on chip type
     in attach routine.
  o  Add bge_softc.bge_link_chg, which is setup based on chip type in
     attach routine.  It is used to check against MAC_STS to determine
     whether link state is changed or not.
  o  We always trust that "link state changed" bit in MAC_STS is correct.
  o  Keep the PCS error checks for fiber interface during link state
     changing detection.
- After above change, bge_tick() is used to drive mii_tick(), so cleanup
  brgphy_mii_phy_auto().
- In brgphy_status(), use temporary variable to hold BRGPHY_MII_AUXSTS,
  so it is not accessed twice.
- For fiber interface, correct media status reporting if link is down.
  Obtained-from: OpenBSD (brad@openbsd.org)
- Correct chip id for 5700 B1 and 5700 B2.
- Minor style changes.

11 years agoCorrect inverse setting and clearing BBP_R3 "smart mode" bit.
Sepherosa Ziehau [Wed, 2 May 2007 11:29:27 +0000 (11:29 +0000)]
Correct inverse setting and clearing BBP_R3 "smart mode" bit.

Obtained-from: FreeBSD p4 (hselasky@freebsd.org)

11 years agoWhen thread0 is initialized it must also be LWKT scheduled or LWKT will
Matthew Dillon [Wed, 2 May 2007 05:55:35 +0000 (05:55 +0000)]
When thread0 is initialized it must also be LWKT scheduled or LWKT will
forget it exists when you switch away without sleeping.  This fixes
a lockup with early uses of DRIVERSLEEP().

Reported-by: Sascha Wildner <saw@online.de>, YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
11 years agoReduce the livelock limit from 50Khz to 40Khz.
Matthew Dillon [Tue, 1 May 2007 23:53:51 +0000 (23:53 +0000)]
Reduce the livelock limit from 50Khz to 40Khz.

Change the livelock state machine to a one second test based on
gd_time_seconds instead of ticks to try to make the hysteresis
work better.

Add a debug mode so we can measure the interrupt rate while livelocked,
and automatically enable when booting -v (during the boot sequence only).

11 years agoDocument the interrupt moderation timer and the fact that even though
Matthew Dillon [Tue, 1 May 2007 23:48:03 +0000 (23:48 +0000)]
Document the interrupt moderation timer and the fact that even though
we are programming it, no interrupt moderation is actually occuring.