]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
12 years agoImport gcc fix for -fstack-protector that produces segfaulting
fabient [Wed, 9 Nov 2011 15:59:02 +0000 (15:59 +0000)]
Import gcc fix for -fstack-protector that produces segfaulting
binaries on arm/armel.

Related gcc bug:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35965

PR: 161128
MFC after: 1 week

12 years agoAdd myself.
jpaetzel [Wed, 9 Nov 2011 15:21:48 +0000 (15:21 +0000)]
Add myself.

Approved by: kib (mentor)

12 years agoRevert some debugging printfs that crept into 223695.
jhb [Wed, 9 Nov 2011 14:37:47 +0000 (14:37 +0000)]
Revert some debugging printfs that crept into 223695.

12 years ago* Force the MAC to wakeup before we try resetting it, to ensure
adrian [Wed, 9 Nov 2011 14:34:25 +0000 (14:34 +0000)]
* Force the MAC to wakeup before we try resetting it, to ensure
  it actually _gets_ reset properly.
* Add some more comments describing why things are done.

Obtained from: Atheros

12 years agoTidy up the AR9287 HAL a tiny bit - fix up AR9280 references.
adrian [Wed, 9 Nov 2011 14:30:58 +0000 (14:30 +0000)]
Tidy up the AR9287 HAL a tiny bit - fix up AR9280 references.

12 years agoFix a bug where the pmap_cpu_bootstrap() ap argument could be clobbered.
nwhitehorn [Wed, 9 Nov 2011 13:48:23 +0000 (13:48 +0000)]
Fix a bug where the pmap_cpu_bootstrap() ap argument could be clobbered.
Luckily, it mostly wasn't important, so this didn't cause major problems.
Also improve register reuse when setting up trap frames very slightly.

Submitted by: Justin Hibbits <chmeeedalf at gmail dot com>
MFC after: 5 days

12 years agoRestore the comment that I removed by accident.
ed [Wed, 9 Nov 2011 13:26:59 +0000 (13:26 +0000)]
Restore the comment that I removed by accident.

The comment still applies to this block of code.

12 years agoSimplify the code emitted by makeobjops.awk slightly.
ed [Wed, 9 Nov 2011 11:00:29 +0000 (11:00 +0000)]
Simplify the code emitted by makeobjops.awk slightly.

Just place the default kobj_method inside the kobjop_desc structure.
There's no need to give these kobj_methods their own symbol. This shaves
off 10 KB of a GENERIC kernel binary.

12 years agoSome minor corrections to a modem driver.
hselasky [Wed, 9 Nov 2011 09:15:57 +0000 (09:15 +0000)]
Some minor corrections to a modem driver.

PR: usb/162307
MFC after: 3 days

12 years agoUse implementation independent inoNN_t scalars for on-disk UFS structures
gleb [Wed, 9 Nov 2011 07:48:48 +0000 (07:48 +0000)]
Use implementation independent inoNN_t scalars for on-disk UFS structures

Approved by: mdf (mentor)

12 years agoMigrate the AR5416 ANI code to use the previously introduced method
adrian [Wed, 9 Nov 2011 05:48:20 +0000 (05:48 +0000)]
Migrate the AR5416 ANI code to use the previously introduced method
to fetch the current channel busy statistics, rather than duplicating
it here.

This forms the (very crude) basis for doing basic channel surveying.

Sponsored by: Hobnob, Inc.

12 years agoDisable OFDM weak signal detection by default. Leave this to be
adrian [Wed, 9 Nov 2011 05:45:30 +0000 (05:45 +0000)]
Disable OFDM weak signal detection by default. Leave this to be
enabled if required by STA operation.

This quietens a lot of OFDM errors seen in hostap mode, where
there are no beacon RSSI levels to tune the dynamic range of the
baseband.

This may reduce reception range at the fringes, but does increase
stability.

Sponsored by: Hobnob, Inc.

12 years agoUse a restricted set of parameters when operating in hostap mode.
adrian [Wed, 9 Nov 2011 05:43:48 +0000 (05:43 +0000)]
Use a restricted set of parameters when operating in hostap mode.

The 5ghz hostap mode (where DFS is being done) requires ANI to be disabled
or the radar detection parameters don't work as advertised (as they're based
on signal strength level, and tweaking ANI affects the signal strangth,
dynamic range and power increase the baseband is looking for in order to
detect it as a "signal".)

Obtained from: Linux, Atheros
Sponsored by: Hobnob, Inc.

12 years agoAdd logic to ANI to tweak the firstep parameter when in hostap mode.
adrian [Wed, 9 Nov 2011 05:41:40 +0000 (05:41 +0000)]
Add logic to ANI to tweak the firstep parameter when in hostap mode.
This is normally done based on the beacon RSSI but this isn't available
in hostap mode.

Obtained from: Atheros
Sponsored by: Hobnob, Inc.

12 years ago.. and add some ANI fixes missing from the last ANI commit.
adrian [Wed, 9 Nov 2011 05:39:17 +0000 (05:39 +0000)]
.. and add some ANI fixes missing from the last ANI commit.

Obtained from: Atheros
Sponsored by: Hobnob, Inc.

12 years agoInclude some ANI fixes for the AR5416.
adrian [Wed, 9 Nov 2011 05:37:11 +0000 (05:37 +0000)]
Include some ANI fixes for the AR5416.

* If we fall through from an ANI command (eg because it's out of range,
  or it's disabled) then fall through to the next ANI command rather then
  being stuck there.

* Fix some off-by-one comparisons, meaning the final level in some parameters
  were never tweaked.

Obtained from: Atheros
Sponsored by: Hobnob, Inc.

12 years agoAdd a new HAL parameter which forces a full reset rather than warm reset.
adrian [Wed, 9 Nov 2011 05:30:24 +0000 (05:30 +0000)]
Add a new HAL parameter which forces a full reset rather than warm reset.
This forces a full reset of the baseband/radio and seems needed to clear
some issues (with Merlin at least) when the baseband gets confused in a
very noisy environment.

Sponsored by: Hobnob, Inc.

12 years agoPort over a new routine which grabs the percentage of time spent in TX frame, RX...
adrian [Wed, 9 Nov 2011 05:25:30 +0000 (05:25 +0000)]
Port over a new routine which grabs the percentage of time spent in TX frame, RX frame,
RX clear, RX extension clear.

This is useful for estimating channel business.

The same routines should be written for AR5210->AR5212 where appopriate.

Obtained from: Atheros

12 years agoAdd in some more PCI/PCIe differentiation.
adrian [Wed, 9 Nov 2011 04:38:27 +0000 (04:38 +0000)]
Add in some more PCI/PCIe differentiation.

12 years agoTry to make it more obvious when users are using the PCI or PCIe versions of
adrian [Wed, 9 Nov 2011 04:35:33 +0000 (04:35 +0000)]
Try to make it more obvious when users are using the PCI or PCIe versions of
the 11n chips.

12 years agoFix the compile to work when IEEE80211_DEBUG isn't defined.
adrian [Wed, 9 Nov 2011 04:08:01 +0000 (04:08 +0000)]
Fix the compile to work when IEEE80211_DEBUG isn't defined.

Sponsored by: Hobnob, Inc.

12 years agoTidy up command line processing:
grog [Wed, 9 Nov 2011 01:40:46 +0000 (01:40 +0000)]
Tidy up command line processing:
  - Add ? option to optstring.
  - Sort options alphabetically.
  - Vertical space.

Tidy up usage() function.

Bring man page in sync with source.

Ensure that debug code is only executed with the -d option.

Submitted by: Christiane Yeardley

12 years agosh: Remove undefined behaviour due to overflow in +/-/* in arithmetic.
jilles [Tue, 8 Nov 2011 23:54:39 +0000 (23:54 +0000)]
sh: Remove undefined behaviour due to overflow in +/-/* in arithmetic.

With i386 base gcc and i386 base clang, arith_yacc.o remains unchanged.

12 years agoWelcome the initial patches for OSX bootcamp support!!!
jpaetzel [Tue, 8 Nov 2011 23:44:26 +0000 (23:44 +0000)]
Welcome the initial patches for OSX bootcamp support!!!
This should let you select the ada0p3 hybrid MBR/GPT partition, and do an installation to it.

Approved by: kib (mentor)
Obtained from: kris@pcbsd.org
MFC after: 3 days

12 years agoComment out TI_JUMBO_HDRSPLIT. TI_JUMBO_HDRSPLIT requires TI_SF_BUF_JUMBO.
yongari [Tue, 8 Nov 2011 23:19:22 +0000 (23:19 +0000)]
Comment out TI_JUMBO_HDRSPLIT. TI_JUMBO_HDRSPLIT requires TI_SF_BUF_JUMBO.

12 years agorc.d: Eliminate some unnecessary non-POSIX constructs:
jilles [Tue, 8 Nov 2011 23:02:32 +0000 (23:02 +0000)]
rc.d: Eliminate some unnecessary non-POSIX constructs:

 * set - ...
 * empty braces
 * ^ in character class

12 years agoFix the KTR option to compile by default - it was referencing
adrian [Tue, 8 Nov 2011 22:50:28 +0000 (22:50 +0000)]
Fix the KTR option to compile by default - it was referencing
some unmerged interrupt status debugging code from my branch.

* Add ah_intrstate[8] which will have the record of the last
  call to ath_hal_getintr().
* Wrap the KTR code behind ATH_KTR_INTR_DEBUG.
* Add the HAL interrupt debugging behind AH_INTERRUPT_DEBUGGING.

This is only done for the AR5416 and later NICs but it will be
trivial to add to the earlier NICs if required.

Neither are enabled by default, although to minimise HAL binary
API differences, the ah_intrstate[] array is always compiled into
the ath_hal struct.

12 years agoIntroduce TX aggregation and software TX queue management
adrian [Tue, 8 Nov 2011 22:43:13 +0000 (22:43 +0000)]
Introduce TX aggregation and software TX queue management
for Atheros AR5416 and later wireless devices.

This is a very large commit - the complete history can be
found in the user/adrian/if_ath_tx branch.

Legacy (ie, pre-AR5416) devices also use the per-software
TXQ support and (in theory) can support non-aggregation
ADDBA sessions. However, the net80211 stack doesn't currently
support this.

In summary:

TX path:

* queued frames normally go onto a per-TID, per-node queue
* some special frames (eg ADDBA control frames) are thrown
  directly onto the relevant hardware queue so they can
  go out before any software queued frames are queued.
* Add methods to create, suspend, resume and tear down an
  aggregation session.
* Add in software retransmission of both normal and aggregate
  frames.
* Add in completion handling of aggregate frames, including
  parsing the block ack bitmap provided by the hardware.
* Write an aggregation function which can assemble frames into
  an aggregate based on the selected rate control and channel
  configuration.
* The per-TID queues are locked based on their target hardware
  TX queue. This matches what ath9k/atheros does, and thus
  simplified porting over some of the aggregation logic.
* When doing TX aggregation, stick the sequence number allocation
  in the TX path rather than net80211 TX path, and protect it
  by the TXQ lock.

Rate control:

* Delay rate control selection until the frame is about to
  be queued to the hardware, so retried frames can have their
  rate control choices changed. Frames with a static rate
  control selection have that applied before each TX, just
  to simplify the TX path (ie, not have "static" and "dynamic"
  rate control special cased.)
* Teach ath_rate_sample about aggregates - both completion and
  errors.
* Add an EWMA for tracking what the current "good" MCS rate is
  based on failure rates.

Misc:

* Introduce a bunch of dirty hacks and workarounds so TID mapping
  and net80211 frame inspection can be kept out of the net80211
  layer. Because of the way this code works (and it's from Atheros
  and Linux ath9k), there is a consistent, 1:1 mapping between
  TID and AC. So we need to ensure that frames going to a specific
  TID will _always_ end up on the right AC, and vice versa, or the
  completion/locking will simply get very confused. I plan on
  addressing this mess in the future.

Known issues:

* There is no BAR frame transmission just yet. A whole lot of
  tidying up needs to occur before BAR frame TX can occur in the
  "correct" place - ie, once the TID TX queue has been drained.

* Interface reset/purge/etc results in frames in the TX and RX
  queues being removed. This creates holes in the sequence numbers
  being assigned and the TX/RX AMPDU code (on either side) just
  hangs.

* There's no filtered frame support at the present moment, so
  stations going into power saving mode will simply have a number
  of frames dropped - likely resulting in a traffic "hang".

* Raw frame TX is going to just not function with 11n aggregation.
  Likely this needs to be modified to always override the sequence
  number if the frame is going into an aggregation session.
  However, general raw frame injection currently doesn't work in
  general in net80211, so let's just ignore this for now until
  this is sorted out.

* HT protection is just not implemented and won't be until the above
  is sorted out. In addition, the AR5416 has issues RTS protecting
  large aggregates (anything >8k), so the work around needs to be
  ported and tested. Thus, this will be put on hold until the above
  work is complete.

* The rate control module 'sample' is the only currently supported
  module; onoe/amrr haven't been tested and have likely bit rotted
  a little. I'll follow up with some commits to make them work again
  for non-11n rates, but they won't be updated to handle 11n and
  aggregation. If someone wishes to do so then they're welcome to
  send along patches.

* .. and "sample" doesn't really do a good job of 11n TX. Specifically,
  the metrics used (packet TX time and failure/success rates) isn't as
  useful for 11n. It's likely that it should be extended to take into
  account the aggregate throughput possible and then choose a rate
  which maximises that. Ie, it may be acceptable for a higher MCS rate
  with a higher failure to be used if it gives a more acceptable
  throughput/latency then a lower MCS rate @ a lower error rate.
  Again, patches will be gratefully accepted.

Because of this, ATH_ENABLE_11N is still not enabled by default.

Sponsored by: Hobnob, Inc.
Obtained from: Linux, Atheros

12 years agoAdd support to the TX descriptor printing code to follow ath_buf
adrian [Tue, 8 Nov 2011 22:01:03 +0000 (22:01 +0000)]
Add support to the TX descriptor printing code to follow ath_buf
chains. This allows for debugging of aggregate frames.

Sponsored by: Hobnob, Inc.

12 years agoMake sure TXEOL is set on default queues. Otherwise we don't get an
adrian [Tue, 8 Nov 2011 21:55:40 +0000 (21:55 +0000)]
Make sure TXEOL is set on default queues. Otherwise we don't get an
interrupt on the completion of a TX queue and this can cause TX
hangs / timeout.

Sponsored by: Hobnob, Inc.

12 years agoRefactor out the TX buffer management and completion code in
adrian [Tue, 8 Nov 2011 21:49:33 +0000 (21:49 +0000)]
Refactor out the TX buffer management and completion code in
preparation for TX aggregation.

* Add in logic which calls ath_buf bf->bf_comp if it's set.
  This allows for AMPDU (and RIFS, and FF, if someone desires) code
  to handle completion - which includes freeing subframes, retransmitting
  subframes, etc.

* Break out the buffer free, buffer busy/unbusy default completion handler
  code into separate functions. This allows bf_comp methods to free and
  unbusy each subframe ath_buf as required.

* Break out the statistics update code into a separate function, just
  to clean up the TX completion path a little.

Sponsored by: Hobnob, Inc.

12 years agoChange the descriptor logic to use bf_lastds to point to the last
adrian [Tue, 8 Nov 2011 21:25:36 +0000 (21:25 +0000)]
Change the descriptor logic to use bf_lastds to point to the last
descriptor, rather than using the maths involving bf_desc[bf_nseg - 1].

When doing TX aggregation, the status will be updated in the -final-
descriptor of the -final- subframe in an aggregate. Thus bf_lastds
may point to the last descriptor in a completely different ath_buf.

Sponsored by: Hobnob, Inc.

12 years agoChange ath_buf allocation to:
adrian [Tue, 8 Nov 2011 21:13:05 +0000 (21:13 +0000)]
Change ath_buf allocation to:

* Immediately return NULL if a buffer isn't available;
* Track the "buffers not available" count;
* Clear some fields used for tx aggregation;
* Add ath_buf_clone() which clones the majority of buffer state.
  This is needed when retransmission of a "busy" buffer is required.

Sponsored by: Hobnob, Inc.

12 years agoBreak out the TX DMA stop code into a separate function.
adrian [Tue, 8 Nov 2011 21:06:36 +0000 (21:06 +0000)]
Break out the TX DMA stop code into a separate function.

Sponsored by: Hobnob, Inc.

12 years agoAdd a 'vap' to ath_keyset().
adrian [Tue, 8 Nov 2011 19:25:52 +0000 (19:25 +0000)]
Add a 'vap' to ath_keyset().

Add some code (which is currently disabled) which modifies the group
multicast key cache behaviour. I haven't yet figured out what the
exact/correct behaviour is so I'm leaving it disabled. It's worth
investigating and "correcting", especially for future work with
mesh/ibss and encryption.

Sponsored by: Hobnob, Inc.

12 years agoSome more various fixes, etc from my 11n branch.
adrian [Tue, 8 Nov 2011 19:18:34 +0000 (19:18 +0000)]
Some more various fixes, etc from my 11n branch.

* When doing software TX queue handling and flush, it's possible
  that the deletion of a VAP (eg a STA shutdown) will queue a
  "STA Disassociate" frame whilst the interface is being deleted.
  The VAP is then deleted, and the frame ends up being queued
  to a node that is freed before it can be TX'ed. Things go awry
  at this point.

  There's no way at the present to avoid freeing the underlying node
  when the vap is being deleted. It's too late in the game.

  I suspect the real fix is to make sure the frame is software
  queued with no completion information somehow, so it doesn't
  link back to a node whose underlying VAP has been freed.
  For now, we'll just have to do this.

* Add some comments showing what's going on.

* Move an instance of the ATH_LOCK() around to protect the interrupt
  set. I'll worry about changing that to a PCU lock later on once
  the 11n code is in the tree.

Sponsored by: Hobnob, Inc.

12 years agoBumb date after r227317.
trociny [Tue, 8 Nov 2011 19:14:15 +0000 (19:14 +0000)]
Bumb date after r227317.

Reminded by: pluknet

12 years agoAdd KTR tracepoints to the ath driver, in order to debug TX, RX
adrian [Tue, 8 Nov 2011 19:02:59 +0000 (19:02 +0000)]
Add KTR tracepoints to the ath driver, in order to debug TX, RX
and interrupt handling.

Sponsored by: Hobnob, Inc.

12 years agoIn preparation for supporting 11n TX/RX properly, allow for TX queue draining
adrian [Tue, 8 Nov 2011 18:56:52 +0000 (18:56 +0000)]
In preparation for supporting 11n TX/RX properly, allow for TX queue draining
and interface resets to be marked as ATH_RESET_DEFAULT, ATH_RESET_FULL,
ATH_RESET_NOLOSS.

Currently a reset is still a reset - ie, all tx/rx frames in the hardware
queues are purged. This means that those frames will be lost to the 11n TX
and RX aggregation state tracking, breaking AMPDU sessions.

The (eventual) new semantics:

* ATH_RESET_DEFAULT:
      full reset, this is the default for reset situations
      which I haven't yet figured out what they should be.
* ATH_RESET_FULL:
      A full reset - for things such as channel changes.
* ATH_RESET_NOLOSS:
      Don't flush TX/RX queues - handle pending RX frames and leave TX
      frames where they are; restart TX DMA from where it was.

12 years agoBreak out the node cleanup and node free path, in preparation for
adrian [Tue, 8 Nov 2011 18:48:26 +0000 (18:48 +0000)]
Break out the node cleanup and node free path, in preparation for
doing software TX queue management.

The software queued TX frames will be freed by the new cleanup
function.

Sponsored by: Hobnob, Inc.

12 years agoPreparation for correct 802.11n tx/rx handling.
adrian [Tue, 8 Nov 2011 18:45:15 +0000 (18:45 +0000)]
Preparation for correct 802.11n tx/rx handling.

* Change ath_rx_proc() to ath_rx_tasklet(); make that the taskqueue function.
  This way (eventually) ath_rx_proc() can be called from elsewhere in the
  packet reset/processing queue so frames aren't just "flushed" during
  interface resets/reconfigure. This breaks 802.11n RX aggregation tracking.
* Extend ath_tx_proc() to take a 'resched' flag, which marks whether to
  reschedule further RX PCU reads or not.
* Change ath_tx_processq() to take a "dosched" flag, which will eventually
  be used to indicate whether to reschedule the software TX scheduler.

Sponsored by: Hobnob, Inc.

12 years agoConditionally compile the PCI latency workaround; I think it's
adrian [Tue, 8 Nov 2011 18:37:52 +0000 (18:37 +0000)]
Conditionally compile the PCI latency workaround; I think it's
only required for some earlier NICs.

12 years agoDocument TI_SF_BUF_JUMBO and Xr altq.
yongari [Tue, 8 Nov 2011 18:36:59 +0000 (18:36 +0000)]
Document TI_SF_BUF_JUMBO and Xr altq.

12 years agoti(4) supports altq(4).
yongari [Tue, 8 Nov 2011 18:35:11 +0000 (18:35 +0000)]
ti(4) supports altq(4).

12 years agoRetire 'options TI_PRIVATE_JUMBOS' and replace local jumbo
yongari [Tue, 8 Nov 2011 18:23:02 +0000 (18:23 +0000)]
Retire 'options TI_PRIVATE_JUMBOS' and replace local jumbo
allocator with UMA backed jumbo allocator by default. Previously
ti(4) used sf_buf(9) interface for jumbo buffers but it was broken
at this moment such that enabling jumbo frame caused instant panic.
Due to the nature of sf_buf(9) it heavily relies on VM changes but
it seems ti(4) was not received much blessing from VM gurus.  I
don't understand VM magic and implications used in driver either.
Switching to UMA backed jumbo allocator like other network drivers
will make jumbo frame work on ti(4).
While I'm here, fully allocate all RX buffers. This means ti(4) now
uses 512 RX buffer and 1024 mini RX buffers.

To use sf_buf(9) interface for jumbo buffers, introduce a new
'options TI_SF_BUF_JUMBO'. If it is proven that sf_buf(9) is better
for jumbo buffers, interesting developers can fix the issue in
future.

ti(4) still needs more bus_dma(9) cleanups and should use separate
DMA tag/map for each ring(standard, jumbo, mini, command, event
etc) but it should work on all platforms except PAE.

Special thanks to Jay[1] who provided complete remote debugging
access.

Tested by: Jay Borkenhagen <jayb <> braeburn dot org > [1]

12 years agoMerge in some fixes from the if_ath_tx branch.
adrian [Tue, 8 Nov 2011 18:10:04 +0000 (18:10 +0000)]
Merge in some fixes from the if_ath_tx branch.

* Close down some of the kickpcu races, where the interrupt handler
  can and will run concurrently with the taskqueue.
* Close down the TXQ active/completed race between the interrupt
  handler and the concurrently running tx completion taskqueue
  function.
* Add some tx and rx interrupt count tracking, for debugging.
* Fix the kickpcu logic in ath_rx_proc() to not simply drain and
  restart the TX queue - instead, assume the hardware isn't
  (too) confused and just restart RX DMA. This may break on
  previous chipsets, so if it does I'll add a HAL flag and
  conditionally handle this (ie, for broken chipsets, I'll
  just restore the "stop PCU / flush things / restart PCU"
  logic.)
* Misc stuff

Sponsored by: Hobnob, Inc.

12 years agoAdd IPv6 support to netblast/netsend/netreceive
cognet [Tue, 8 Nov 2011 17:23:43 +0000 (17:23 +0000)]
Add IPv6 support to netblast/netsend/netreceive

PR: bin/161368
Submitted by: Olivier Cochard-Labbe <olivier AT cochard doT me>

12 years agoMigrate the STAILQ lists to TAILQs.
adrian [Tue, 8 Nov 2011 17:08:12 +0000 (17:08 +0000)]
Migrate the STAILQ lists to TAILQs.

A bunch of the 11n TX aggregation logic wants to traverse lists of buffers
in various ways. In order to provide O(1) behaviour in this instance,
use TAILQs.

This does blow out the memory footprint and CPU cycles slightly for some
of these operations. I may convert some of these back to STAILQs once
the rest of the software transmit queue handling has been stabilised.

Sponsored by: Hobnob, Inc.

12 years agoMake kobj_methods constant.
ed [Tue, 8 Nov 2011 15:38:21 +0000 (15:38 +0000)]
Make kobj_methods constant.

These structures hold no information that is modified during runtime. By
marking this constant, we see approximately 600 symbols become
read-only (amd64 GENERIC). While there, also mark the kobj_method
structures generated by makeobjops.awk static. They are only referenced
by the kobjop_desc structures within the same file.

Before:

$ ls -l kernel
-rwxr-xr-x  1 ed  wheel  15937309 Nov  8 16:29 kernel*
$ size kernel
    text    data     bss      dec    hex filename
12260854 1358468 2848832 16468154 fb48ba kernel
$ nm kernel | fgrep -c ' r '
8240

After:

$ ls -l kernel
-rwxr-xr-x  1 ed  wheel  15922469 Nov  8 16:25 kernel*
$ size kernel
    text    data     bss      dec    hex filename
12302869 1302660 2848704 16454233 fb1259 kernel
$ nm kernel | fgrep -c ' r '
8838

12 years agoThe in-kernel CTF parser caches the result of its first attempt to parse
rstone [Tue, 8 Nov 2011 15:17:54 +0000 (15:17 +0000)]
The in-kernel CTF parser caches the result of its first attempt to parse
CTF data from a module.  On subsequent attempts to retrieve CTF data for
a module, return an error if there no CTF data.

This fixes a panic if you try to enable fbt probes on a module with CTF
data twice.

Submitted by: Paul Ambrose (ambrosehua AT gmail DOT com)
MFC after: 3 days

12 years agoClaim that _POSIX_ADVISORY_INFO is fully supported since posix_fadvise()
jhb [Tue, 8 Nov 2011 14:47:28 +0000 (14:47 +0000)]
Claim that _POSIX_ADVISORY_INFO is fully supported since posix_fadvise()
was added.

Submitted by: avilla
Discussed with: wollman

12 years agoSome cosmetic fixes to ath_rate_sample.
adrian [Tue, 8 Nov 2011 14:46:03 +0000 (14:46 +0000)]
Some cosmetic fixes to ath_rate_sample.

* Use 64 bit integer types for the sample rate statistics.
  When TX'ing 11n aggregates, a 32 bit counter will overflow in a few
  hours due to the high packet throughput.

* Create a default label of "" rather than defaulting to "Mb" - that way
  if a rate hasn't yet been selected, it won't say "-1 Mb".

Sponsored by: Hobnob, Inc.

12 years ago.. add missing include from an incorrect merge.
adrian [Tue, 8 Nov 2011 14:34:01 +0000 (14:34 +0000)]
.. add missing include from an incorrect merge.

Sponsored by: Hobnob, Inc.

12 years agoReject frames in STA mode which are not destined to the local STA address.
adrian [Tue, 8 Nov 2011 14:28:33 +0000 (14:28 +0000)]
Reject frames in STA mode which are not destined to the local STA address.

Some hardware (eg the AR9160 in STA mode) seems to "leak" unicast FROMDS
frames which aren't destined to itself. This angers the net80211 stack -
the existing code would fail to find an address in the node table and try
passing the frame up to each vap BSS. It would then be accepted in the
input routine and its contents would update the local crypto and sequence
number state.

If the sequence number / crypto IV replay counters from the leaked frame
were greater than the "real" state, subsequent "real" frames would be
rejected due to out of sequence / IV replay conditions.

This is also likely helpful if/when multi-STA modes are added to net80211.

Sponsored by: Hobnob, Inc.

12 years agoAdd quiet time element configuration support to ifconfig.
adrian [Tue, 8 Nov 2011 14:22:40 +0000 (14:22 +0000)]
Add quiet time element configuration support to ifconfig.

This allows a hostap to specify to a set of stations that they
should not transmit for a certain period of time after each
beacon interval has expired. This is used when searching for
radar pulses or general interference.

Submitted by: Himali Patel <himali.patel@sibridgetech.com>
Sponsored by: Sibridge Technologies

12 years agoSimplify getopt switch parsing.
ed [Tue, 8 Nov 2011 11:36:46 +0000 (11:36 +0000)]
Simplify getopt switch parsing.

Only one of these flags can be set. Just add them together and check the
value. Also, get rid of the listall variable. The code is already filled
with direct *flag-comparisons.

Obtained from: Alexander Best (though modified)

12 years agoIntroduce the option VFS_ALLOW_NONMPSAFE and turn it on by default on
attilio [Tue, 8 Nov 2011 10:18:07 +0000 (10:18 +0000)]
Introduce the option VFS_ALLOW_NONMPSAFE and turn it on by default on
all the architectures.
The option allows to mount non-MPSAFE filesystem. Without it, the
kernel will refuse to mount a non-MPSAFE filesytem.

This patch is part of the effort of killing non-MPSAFE filesystems
from the tree.

No MFC is expected for this patch.

Tested by: gianni
Reviewed by: kib

12 years agoEnable PCI MMC/SD support by default on i386 and amd64
kevlo [Tue, 8 Nov 2011 08:29:05 +0000 (08:29 +0000)]
Enable PCI MMC/SD support by default on i386 and amd64

12 years agoAdd 802.11h quiet time element support into net80211.
adrian [Tue, 8 Nov 2011 04:00:24 +0000 (04:00 +0000)]
Add 802.11h quiet time element support into net80211.

This supports both station and hostap modes:

* Station mode quiet time element support listens to quiet time
  IE's and modifies the local quiet time configuration as appropriate;
* Hostap mode both obeys the locally configured quiet time period
  and includes it in beacon frames so stations also can obey as needed.

Submitted by: Himali Patel <himali.patel@sibridgetech.com>
Sponsored by: Sibridge Technologies

12 years agoBegin merging in some of my 802.11n TX aggregation driver changes.
adrian [Tue, 8 Nov 2011 02:12:11 +0000 (02:12 +0000)]
Begin merging in some of my 802.11n TX aggregation driver changes.

* Add a PCU lock, which isn't currently used but will eventually be
  used to serialise some of the driver access.

* Add in all the software TX aggregation state, that's kept per-node
  and per-TID.

* Add in the software and aggregation state to ath_buf.

* Add in hooks to ath_softc for aggregation state and the (upcoming)
  aggregation TX state calls.

* Add / fix the HAL access macros.

Obtained from: Linux, ath9k
Sponsored by: Hobnob, Inc.

12 years agoBring over the 11n aggregation statistics struct from the if_ath_tx branch.
adrian [Tue, 8 Nov 2011 01:35:44 +0000 (01:35 +0000)]
Bring over the 11n aggregation statistics struct from the if_ath_tx branch.

12 years agoMerge in ath rate flags and ath_rc_series from my 11n TX branch.
adrian [Tue, 8 Nov 2011 01:35:05 +0000 (01:35 +0000)]
Merge in ath rate flags and ath_rc_series from my 11n TX branch.
This is in preparation for 802.11n TX aggregation support.

12 years agoDo not allow changing MTU to be less than the minimum.
yongari [Mon, 7 Nov 2011 22:58:49 +0000 (22:58 +0000)]
Do not allow changing MTU to be less than the minimum.

12 years agoIf ti_chipinit() fails in ti_stop(), ignore the error and release
yongari [Mon, 7 Nov 2011 22:53:06 +0000 (22:53 +0000)]
If ti_chipinit() fails in ti_stop(), ignore the error and release
all allocated TX/RX buffer resources. If the interface is brought
to up again after the error, we will leak allocated TX/RX buffers.

12 years agoShow RX buffer allocation failure and do not blindly send alive
yongari [Mon, 7 Nov 2011 22:47:25 +0000 (22:47 +0000)]
Show RX buffer allocation failure and do not blindly send alive
message to firmware. Probably the correct way for this error is to
send a TI_CMD_CODE_STACK_DOWN message to firmware and let firmware
handle the rest.

12 years agoWhen loading addresses from INITs, always use the correct
tuexen [Mon, 7 Nov 2011 22:30:19 +0000 (22:30 +0000)]
When loading addresses from INITs, always use the correct
local address.

MFC after: 3 days.

12 years agoMini ring is not available on Tigon 1 so do not create DMA maps for
yongari [Mon, 7 Nov 2011 22:17:44 +0000 (22:17 +0000)]
Mini ring is not available on Tigon 1 so do not create DMA maps for
mini ring on Tigon 1 to save resources.

12 years agoTrack which ring was updated in RX handler and update only modified
yongari [Mon, 7 Nov 2011 22:11:38 +0000 (22:11 +0000)]
Track which ring was updated in RX handler and update only modified
ring. This should reduce unnecessary register accesses.

12 years agoWhen displaying process virtual memory mappings print superpage
trociny [Mon, 7 Nov 2011 21:16:19 +0000 (21:16 +0000)]
When displaying process virtual memory mappings print superpage
mapping flag.

Submitted by: Mel Flynn <mel.flynn+fbsd.hackers@mailing.thruhere.net>
Reviewed by: alc, rwatson

12 years agoAdd KVME_FLAG_SUPER and use it in sysctl_kern_proc_vmmap for marking
trociny [Mon, 7 Nov 2011 21:13:19 +0000 (21:13 +0000)]
Add KVME_FLAG_SUPER and use it in sysctl_kern_proc_vmmap for marking
entries with superpages.

Submitted by: Mel Flynn <mel.flynn+fbsd.hackers@mailing.thruhere.net>
Reviewed by: alc, rwatson

12 years agoIn lim_fork() assert that processes locks are held.
trociny [Mon, 7 Nov 2011 21:09:04 +0000 (21:09 +0000)]
In lim_fork() assert that processes locks are held.

Suggested by: kib

12 years agoEnsure pam_lastlog removes the /dev/ component of the TTY name.
ed [Mon, 7 Nov 2011 19:57:42 +0000 (19:57 +0000)]
Ensure pam_lastlog removes the /dev/ component of the TTY name.

Some consumers of PAM remove the /dev/ component (i.e. login), while
others don't (i.e. su). We must ensure that the /dev/ component is
removed to ensure that the utmpx entries properly work with tools such
as w(1).

Discussed with: des
MFC after: 1 week

12 years ago o Remove unnecessary controller reinitialization.
yongari [Mon, 7 Nov 2011 18:26:38 +0000 (18:26 +0000)]
 o Remove unnecessary controller reinitialization.
 o Do not blindly UP controller when MTU is changed. Reinitialize
   controller only if driver is running.
 o Remove useless ti_stop() in ti_watchdog() since ti_init_locked()
   always invokes ti_stop().

12 years agoRemove ti_unit member variable in softc.
yongari [Mon, 7 Nov 2011 18:19:20 +0000 (18:19 +0000)]
Remove ti_unit member variable in softc.
While I'm here use PCIR_BAR macro.

12 years agoDon astbestos garment and remove the warning about TMPFS being experimental
marcel [Mon, 7 Nov 2011 16:21:50 +0000 (16:21 +0000)]
Don astbestos garment and remove the warning about TMPFS being experimental
-- highly experimental even. So far the closest to a bug in TMPFS that people
have gotten to relates to how ZFS can take away from the memory that TMPFS
needs. One can argue that such is not a bug in TMPFS. Irrespective, even if
there is a bug here and there in TMPFS, it's not in our own advantage to
scare people away from using TMPFS. I for one have been using it, even with
ZFS, very successfully.

12 years agoMark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.
ed [Mon, 7 Nov 2011 15:43:11 +0000 (15:43 +0000)]
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.

The SYSCTL_NODE macro defines a list that stores all child-elements of
that node. If there's no SYSCTL_DECL macro anywhere else, there's no
reason why it shouldn't be static.

12 years agoIn icmp6_redirect_input:
glebius [Mon, 7 Nov 2011 14:22:18 +0000 (14:22 +0000)]
In icmp6_redirect_input:

- Assert that we got a valid mbuf with rcvif pointer. [1]
- Use __func__ in logging.

Submitted by: prabhakar lakhera <prabhakar.lakhera gmail.com> [1]
Submitted by: Kristof Provost <kristof sigsegv.be> [1]

12 years agoRemove unneeded CFLAGS.
ed [Mon, 7 Nov 2011 09:42:22 +0000 (09:42 +0000)]
Remove unneeded CFLAGS.

Such optimisations should not be performed in this Makefile. Also, uqs@
suggested they have no effect, because the checksum of the resulting
binary is unchanged.

Discussed with: gabor, uqs

12 years agoRemove a note about disabling of GEOM protection mechanism.
ae [Mon, 7 Nov 2011 09:29:10 +0000 (09:29 +0000)]
Remove a note about disabling of GEOM protection mechanism.
boot0cfg should work without such hack.

MFC after: 3 days

12 years agoReorganize write_mbr() function to be able write bootcode with different
ae [Mon, 7 Nov 2011 09:21:18 +0000 (09:21 +0000)]
Reorganize write_mbr() function to be able write bootcode with different
ways. Improve error reporting and also fix indenting.
Now we are trying to write bootcode:
 1. Directly to provider (if we can open it for writing);
 2. Via GEOM_PART (if it is available);
 3. Via GEOM_MBR.

MFC after: 2 weeks

12 years agoFix multi-line comment formatting.
ae [Mon, 7 Nov 2011 07:51:10 +0000 (07:51 +0000)]
Fix multi-line comment formatting.

MFC after: 2 weeks

12 years agoFix multi-line comment formatting.
ae [Mon, 7 Nov 2011 07:50:35 +0000 (07:50 +0000)]
Fix multi-line comment formatting.

Pointed by: jh
MFC after: 1 week

12 years agoSDT's struct sdt_argtype can be marked static everywhere.
ed [Mon, 7 Nov 2011 07:09:38 +0000 (07:09 +0000)]
SDT's struct sdt_argtype can be marked static everywhere.

It is only passed to SYSINIT/SYSUNINIT.

12 years agoMark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs.
ed [Mon, 7 Nov 2011 06:44:47 +0000 (06:44 +0000)]
Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs.

This means that their use is restricted to a single C file.

12 years agoImprove error reporting when MBR can not be written.
ae [Mon, 7 Nov 2011 06:24:35 +0000 (06:24 +0000)]
Improve error reporting when MBR can not be written.
Remove obsolete code which uses DIOCSMBR ioctl.
When writing MBR first check that GEOM_MBR is available, if it is not
available, then try write MBR directly to provider. If both are failed,
then recommend to use gpart(8).

MFC after: 2 week

12 years agoReplace fasttrap_copyout() with uwrite(). FreeBSD copyout() is not able to
rstone [Mon, 7 Nov 2011 01:55:58 +0000 (01:55 +0000)]
Replace fasttrap_copyout() with uwrite().  FreeBSD copyout() is not able to
write to the .text section of a process.

Obtained from: rpaulo
MFC after: 3 days

12 years agoFix the DTrace pid return trap interrupt vector. Previously we were using
rstone [Mon, 7 Nov 2011 01:53:25 +0000 (01:53 +0000)]
Fix the DTrace pid return trap interrupt vector.  Previously we were using
31, but that vector is reserved.

Without this fix, running dtrace -p <pid> would either cause the target
process to crash or the kernel to page fault.

Obtained from: rpaulo
MFC after: 3days

12 years agoFix build breakage for 8-stable and older.
hselasky [Sun, 6 Nov 2011 23:26:26 +0000 (23:26 +0000)]
Fix build breakage for 8-stable and older.

MFC after: 0 days

12 years agoAdd support for new USB modem protocol.
hselasky [Sun, 6 Nov 2011 23:11:30 +0000 (23:11 +0000)]
Add support for new USB modem protocol.

PR: usb/159919
MFC after: 1 week

12 years agoFreeze the device queue if a request didn't complete without error and
marius [Sun, 6 Nov 2011 22:28:13 +0000 (22:28 +0000)]
Freeze the device queue if a request didn't complete without error and
isn't already frozen.

12 years agoAdd check-password.4th and screen.4th to the boot image. They are
marcel [Sun, 6 Nov 2011 21:57:12 +0000 (21:57 +0000)]
Add check-password.4th and screen.4th to the boot image. They are
needed by the loader.

12 years agoAdd missing comma.
marius [Sun, 6 Nov 2011 21:54:27 +0000 (21:54 +0000)]
Add missing comma.

Submitted by: brueffer

12 years agoCommit man page update missed in r227006.
marius [Sun, 6 Nov 2011 21:33:50 +0000 (21:33 +0000)]
Commit man page update missed in r227006.

12 years agoInitialize "acc" value inside the loop to reset failed attempts.
ae [Sun, 6 Nov 2011 21:12:52 +0000 (21:12 +0000)]
Initialize "acc" value inside the loop to reset failed attempts.

PR: misc/162262
MFC after: 3 days

12 years agoAdd qlxgb(4).
brueffer [Sun, 6 Nov 2011 20:59:07 +0000 (20:59 +0000)]
Add qlxgb(4).

MFC after: 3 days

12 years agoAdd qlxgb(4) to the hardware notes.
brueffer [Sun, 6 Nov 2011 20:49:17 +0000 (20:49 +0000)]
Add qlxgb(4) to the hardware notes.

MFC after: 3 days

12 years agoAdd reference to gpart(8).
ae [Sun, 6 Nov 2011 20:42:32 +0000 (20:42 +0000)]
Add reference to gpart(8).

MFC after: 3 days

12 years agoAdd reference to gpart(8).
ae [Sun, 6 Nov 2011 20:39:35 +0000 (20:39 +0000)]
Add reference to gpart(8).

MFC after: 3 days

12 years agoAdd reference to gpart(8).
ae [Sun, 6 Nov 2011 20:38:27 +0000 (20:38 +0000)]
Add reference to gpart(8).

MFC after: 3 days

12 years agoWrite QLogic consistently.
brueffer [Sun, 6 Nov 2011 20:37:17 +0000 (20:37 +0000)]
Write QLogic consistently.

MFC after: 3 days