where transmit fragmentation is concerned.
Extract from ath_tx_start() the code for subtracting padding from
the packet length, creating subroutine deduct_pad_bytes(). Note
that the arithmetic in deduct_pad_bytes() is suspicious.
Use deduct_pad_bytes() to repair the computation of the 802.11
Duration field for fragments. The computation used to leave out
the FCS, among other things.
Some discrepancies between ath(4) operation and the standard may
still remain. According to my observations, the gaps between
transmitted fragments may be approximately 8 microseconds too long.
pthread_setaffinity_np(3) and pthread_getaffinity_np(3) functions,
provides simple code example.
- Add cpuset(3) manual page, which describes API of CPU-sets.
Thanks <wiz> for many improvements!
machine
Assume that a vnode (and associated data structures) costs 2kB in the
worst imaginable case. Don't allow sysctl to set desiredvnodes to a
value that would use more than 75% of KVA or 75% of physical memory.
-avoid unnecessary tree walks and port status requests:
-acknowledge hub status change notifications (but do nothing)
-clear cached port status change bits earlier (but not on ehci, due
to an ehci driver bug)
-do the ehci check on attach rather than a string comparision at runtime
- Back out the previous workaround now that the sleep queue code has
been changed to never let the queue become empty if there are valid
waiters.
- Use sleepq_hashlock() to improve clarity.
- Sprinkle some assertions.
sleepq_changepri, sleepq_lendpri: don't let an active sleep queue head become
empty. The condvar code inspects the queue head without holding the sleep
queue lock and needs to see a non-empty queue if there are waiters.
The old code just uses the firmware size and rounds up to full
pages. However, if the firmware isn't loaded aligned to a page
boundary (which it isn't), then one more page (and thus DMA
segment) might be necessary.