summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix an oops where we wiped out DMA maps. Don't allocate extendedmjacob2012-08-122-18/+33
| | | | | | | command space for anything less than a 2300. MFC after: 1 month X-MFC: 238869
* - Fix source dataset snapshot name in Example 15.gjb2012-08-121-4/+4
| | | | | | | - Bump date. MFC after: 3 days X-MFC-With: r239216
* Remove a leading space that breaks rendering.gjb2012-08-121-1/+1
| | | | MFC after: 3 days
* Compile fix.hselasky2012-08-121-1/+0
| | | | MFC after: 2 weeks
* Add support for the so-called streams feature of BULK endpointshselasky2012-08-1221-104/+326
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in SUPER-speed mode, USB 3.0. This feature has not been tested yet, due to lack of hardware. This feature is useful when implementing protocols like UASP, USB attached SCSI which promises higher USB mass storage throughput. This patch also implements support for hardware processing of endpoints for increased performance. The switching to hardware processing of an endpoint is done via a callback to the USB controller driver. The stream feature is implemented like a variant of a hardware USB protocol. USB controller drivers implementing device mode needs to be updated to implement the new "xfer_stall" USB controller method and remove the "xfer" argument from the "set_stall" method. The API's toward existing USB drivers are preserved. To setup a USB transfer in stream mode, set the "stream_id" field of the USB config structure to the desired value. The maximum number of BULK streams is currently hardcoded and limited to 8 via a define in usb_freebsd.h. All USB drivers should be re-compiled after this change. LibUSB will be updated next week to support streams mode. A new IOCTL to setup BULK streams as already been implemented. The ugen device nodes currently only supports stream ID zero. The FreeBSD version has been bumped. MFC after: 2 weeks
* 1. Remove SEN support. I doubt there are any working examplesmjacob2012-08-123-49/+37
| | | | | | | | | | | | of this hardware still running (close to twenty years now). 2. Quiesece and use ENC_VLOG instead of ENC_LOG for most complaints. That is, they're visible with bootverbose, but otherwise quiesced and not repeatedly spamming messages with constant reminders that hardware in this space is rarely fully compliant. MFC after: 1 month
* Add missing VERIFY_10 definition.mjacob2012-08-121-0/+1
| | | | MFC after: 1 month
* Add another debug message.ae2012-08-121-0/+2
|
* Add more debug messages.ae2012-08-121-1/+6
|
* Do defered mutex wakeup once.davidxu2012-08-121-0/+1
|
* Revert the ath_tx_draintxq() method, and instead teach it the minimumadrian2012-08-126-30/+26
| | | | | | | | | necessary to "do" EDMA. It was just using the TX completion status for logging information about the descriptor completion. Since with EDMA we don't know this without checking the TX completion FIFO, we can't provide this information. So don't.
* Break out ath_draintxq() into a method and un-methodize ath_tx_processq().adrian2012-08-126-24/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that I understand what's going on with this, I've realised that it's going to be quite difficult to implement a processq method in the EDMA case. Because there's a separate TX status FIFO, I can't just run processq() on each EDMA TXQ to see what's finished. i have to actually run the TX status queue and handle individual TXQs. So: * unmethodize ath_tx_processq(); * leave ath_tx_draintxq() as a method, as it only uses the completion status for debugging rather than actively completing the frames (ie, all frames here are failed); * Methodize ath_draintxq(). The EDMA ath_draintxq() will have to take care of running the TX completion FIFO before (potentially) freeing frames in the queue. The only two places where ath_tx_draintxq() (on a single TXQ) are used: * ath_draintxq(); and * the CABQ handling in the beacon setup code - it drains the CABQ before populating the CABQ with frames for a new beacon (when doing multi-VAP operation.) So it's quite possible that once I methodize the CABQ and beacon handling, I can just drop ath_tx_draintxq() in its entirety. Finally, it's also quite possible that I can remove ath_tx_draintxq() in the future and just "teach" it to not check the status when doing EDMA.
* Some style fixes inspired by @bde.davidxu2012-08-111-12/+12
|
* Extend the beacon code slightly to support AP mode beaconing for theadrian2012-08-113-8/+52
| | | | | | | | | | | | | | | | | | | EDMA HAL hardware. * The EDMA HAL code assumes the nexttbtt and intval values are in TU/8 units, rather than TU. For now, just "hack" around that here, at least until I code up something to translate it in the HAL. * Setup some different TXQ flags for EDMA hardware. * The EDMA HAL doesn't support setting the first rate series via ath_hal_setuptxdesc() - instead, a call to ath_hal_set11nratescenario() is always required. So for now, just do an 11n rate series setup for EDMA beacon frames. This allows my AR9380 to successfully transmit beacon frames. However, CABQ TX and all normal data frame TX and TX completion is still not functional and will require some more significant code churn to make work.
* MFp4:davidxu2012-08-115-24/+38
| | | | | Further decreases unexpected context switches by defering mutex wakeup until internal sleep queue lock is released.
* Add the AR9380 HAL to the TX descriptor debugging, in order to dump alladrian2012-08-111-1/+2
| | | | of the descriptor contents.
* Add the AR9300 HAL ID in to the 11n check routine.adrian2012-08-111-1/+2
| | | | | | | I was having TX hang issues, which I root caused to having the legacy ath_hal_setupxtxdesc() called, rather than the 11n rate scenario setup code. This meant that rate control information wasn't being put into frames, causing the MAC to stall/hang.
* Begin fleshing out the TX FIFO support.adrian2012-08-112-1/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add ATH_TXQ_FIRST() for easy tasting of what's on the list; * Add an "axq_fifo_depth" for easy tracking of how deep the current FIFO is; * Flesh out the handoff (mcast, hw) functions; * Begin fleshing out a TX ISR proc, which tastes the TX status FIFO. The legacy hardware stuffs the TX completion at the end of the final frame descriptor (or final sub-frame when doing aggregate.) So it's feasible to do a per-TXQ drain and process, as the needed info is right there. For EDMA hardware, there's a separate TX completion FIFO. So the TX process routine needs to read the single FIFO and then process the frames in each hardware queue. This makes it difficult to do a per-queue process, as you'll end up with frames in the TX completion FIFO for a different TXQ to the one you've passed to ath_tx_draintxq() or ath_tx_processq(). Testing: I've tested the TX queue and TX completion code in hostap mode on an AR9380. Beacon frames successfully transmit and the completion routine is called. Occasional data frames end up in TXQ 1 and are also successfully completed. However, this requires some changes to the beacon code path as: * The AR9380 beacon configuration API is now in TU/8, rather than TU; * The AR9380 TX API requires the rate control is setup using a call to setup11nratescenario, rather than having the try0 series setup (rate/tries for the first series); so the beacon won't go out. I'll follow this up with commits to the beacon code.
* Some more minor tunings inspired by bde@.mav2012-08-112-25/+31
|
* Add __always_inline to __ieee754_rem_pio2() and __ieee754_rem_pio2f(),dim2012-08-112-2/+2
| | | | | | | since some older versions of gcc refuse to inline these otherwise. Requested by: bde MFC after: 1 week
* Allow idle threads to steal second threads from other cores on systems withmav2012-08-111-6/+0
| | | | | | | | | | | | 8 or more cores to improve utilization. None of my tests on 2xXeon (2x6x2) system shown any slowdown from mentioned "excess thrashing". Same time in pbzip2 test with number of threads more then number of CPUs I see up to 10% speedup with SMT disabled and up 5% with SMT enabled. Thinking about trashing I was trying to limit that stealing within same last level cache, but got only worse results. Present code any way prefers to steal threads from topologically closer cores. Sponsored by: iXsystems, Inc.
* Rename aux.c to auxv.c.ed2012-08-112-1/+1
| | | | | | | | | | | On Windows, AUX is the auxiliary device, usually pointing to COM1. Therefore it is forbidden to create a file named aux.c. To make it a bit easier for Windows users to check out our source code, rename this file to auxv.c. MFC after: 1 month Discussed with: kib Suggested by: Eric van Gyzen <eric vangyzen net>
* Change a few extern inline functions in libm to static inline, sincedim2012-08-116-28/+23
| | | | | | | | | | | they need to refer to static constants, which C99 does not allow for extern inline functions. While here, change a comment in e_rem_pio2f.c to mention the correct number of bits. Reviewed by: bde MFC after: 1 week
* Move the decoding of the swi instruction to the syscall function. With theandrew2012-08-111-7/+4
| | | | | | ARM EABI the syscall value will be moved to a register to ease adding thumb support. When this happens decoding of the instruction will no longer be required.
* Correct the PLLA setting functions and centralize.imp2012-08-115-70/+41
|
* Update comments about setting PLLA and refernce the tables in theimp2012-08-111-6/+15
| | | | datasheet that express the limits.
* Don't use C++ comments.imp2012-08-111-11/+12
|
* tvtohz will print out an error message if a negative value is givendavidxu2012-08-111-9/+13
| | | | | | to it, avoid this problem by detecting timeout earlier. Reported by: pho
* Some minor tunings/cleanups inspired by bde@ after previous commits:mav2012-08-103-45/+73
| | | | | | | | | | - remove extra dynamic variable initializations; - restore (4BSD) and implement (ULE) hogticks variable setting; - make sched_rr_interval() more tolerant to options; - restore (4BSD) and implement (ULE) kern.sched.quantum sysctl, a more user-friendly wrapper for sched_slice; - tune some sysctl descriptions; - make some style fixes.
* Always initialize sc_ekey, because as of r238116 it is always used.pjd2012-08-101-12/+13
| | | | | | | | | | | | | | | | | | | If GELI provider was created on FreeBSD HEAD r238116 or later (but before this change), it is using very weak keys and the data is not protected. The bug was introduced on 4th July 2012. One can verify if its provider was created with weak keys by running: # geli dump <provider> | grep version If the version is 7 and the system didn't include this fix when provider was initialized, then the data has to be backed up, underlying provider overwritten with random data, system upgraded and provider recreated. Reported by: Fabian Keil <fk@fabiankeil.de> Tested by: Fabian Keil <fk@fabiankeil.de> Discussed with: so MFC after: 3 days
* sched_rr_interval() seems always returned period in hz ticks, but samemav2012-08-101-1/+1
| | | | always it was used as rate. Fix use side units to period in hz ticks.
* Style.hselasky2012-08-101-6/+0
| | | | MFC after: 2 weeks
* Remove unused structure field.hselasky2012-08-105-21/+0
| | | | MFC after: 2 weeks
* Take advantage of new UCOM and bus functionality so thathselasky2012-08-1021-42/+520
| | | | | | | | | | | the device_detach() function doesn't block on UCOM device drivers until the TTY handle is closed by the userspace application. This is implemented by a postpone of the softc free where the UCOM structures reside until the TTY references are gone. Discussed with: kib, ed MFC after: 2 weeks
* Switch unit management in UCOM to unrhdr.hselasky2012-08-103-70/+183
| | | | | | | | | | | | | | | | | | | | | | | Extend the callback table of UCOM to include a "ucom_free" function pointer which is called when all refs on a UCOM super structure is gone. Implement various helper functions to handle refcounting and draining on the UCOM super structure. Implement macro which can be used in device drivers to avoid module unload before all pending TTY references are gone. The UCOM API is backwards compatible after this change and device drivers require no changes to function with this change. Only a recompilation of UCOM device drivers is required. The FreeBSD version has been bumped in that regard. Discussed with: kib, ed MFC after: 2 weeks
* Add new device method to free the automaticallyhselasky2012-08-103-4/+26
| | | | | | | | | | | | | | | allocated softc structure which is returned by device_get_softc(). This method can be used to easily implement softc refcounting. This can be desirable when the softc has memory references which are controlled by userspace handles for example. This solves the problem of blocking the caller of device_detach() for a non-deterministic time. Discussed with: kib, ed MFC after: 2 weeks
* Style.hselasky2012-08-101-2/+2
| | | | MFC after: 2 weeks
* Fix spelling.hselasky2012-08-101-1/+1
| | | | MFC after: 2 weeks
* Add missing FAILED event to g_raid_subdisk_event2str() to print it properlymav2012-08-101-0/+2
| | | | | | in debug messages. Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com>
* Eliminate an unnecessary acquisition and release of the page queues lockalc2012-08-101-2/+0
| | | | | | | from pmap_pte(). PT_SET_MA() is not a queued mapping update, but instead an immediate mapping update, so the page queues lock is not required here. Reviewed by: cperciva
* Merge r134393 from amd64/i386:alc2012-08-101-12/+0
| | | | | | | | The machine-independent parts of the virtual memory system always pass a valid pmap to the pmap functions that require one. Remove the checks for NULL. (These checks have their origins in the Mach pmap.c that was integrated into BSD. None of the new code written specifically for FreeBSD included them.)
* RFC 2289 requires all hashes be stored in little endian format beforedelphij2012-08-102-0/+18
| | | | | | | | | | | | folding to 64 bits, while SHA1 code is big endian. Therefore, a bswap32 is required before using the value. Without this change, the implementation does not conform to test vector found in RFC 2289. PR: bin/170519 Submitted by: Arthur Mesh <arthurmesh gmail com> (with changes) MFC after: 1 week
* More comments about setting PLLA, or rather that we never do.imp2012-08-101-7/+12
|
* Add charge pump current register.imp2012-08-101-0/+5
|
* Add a missing HAL_DMA_ADDR definition.adrian2012-08-091-0/+1
|
* Add HAL_DMA_ADDR.adrian2012-08-093-0/+3
|
* nftw(): POSIX says directories causing loops should be silently skipped.jilles2012-08-093-4/+144
| | | | Formerly, loops caused nftw() to abort the traversal with ELOOP.
* Rework r220198 change (by fabient). I believe it solves the problem frommav2012-08-092-9/+14
| | | | | | | | | | | | | | | | | | | | | the wrong direction. Before it, if preemption and end of time slice happen same time, thread was put to the head of the queue as for only preemption. It could cause single thread to run for indefinitely long time. r220198 handles it by not clearing TDF_NEEDRESCHED in case of preemption. But that causes delayed context switch every time preemption happens, even when not needed. Solve problem by introducing scheduler-specifoc thread flag TDF_SLICEEND, set when thread's time slice is over and it should be put to the tail of queue. Using SW_PREEMPT flag for that purpose as it was before just not enough informative to work correctly. On my tests this by 2-3 times reduces run time deviation (improves fairness) in cases when several threads share one CPU. Reviewed by: fabient MFC after: 2 months Sponsored by: iXsystems, Inc.
* Refresh with OpenBSD RCS ID changes to reflect that we now have essentionallydelphij2012-08-091-7/+1
| | | | the same file.
* SCHED_4BSD scheduling quantum mechanism appears to be broken for some time.mav2012-08-091-33/+36
| | | | | | | | | | | With switchticks variable being reset each time thread preempted (that is done regularly by interrupt threads) scheduling quantum may never expire. It was not noticed in time because several other factors still regularly trigger context switches. Handle the problem by replacing that mechanism with its equivalent from SCHED_ULE called time slice. It is effectively the same, just measured in context of stathz instead of hz. Some unification is probably not bad.
OpenPOWER on IntegriCloud