summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Add in kqueue support to LIO event notification and fix how it handledambrisko2005-10-123-125/+206
| | | | | | | | | | | | | | | | | | notifications when LIO operations completed. These were the problems with LIO event complete notification: - Move all LIO/AIO event notification into one general function so we don't have bugs in different data paths. This unification got rid of several notification bugs one of which if kqueue was used a SIGILL could get sent to the process. - Change the LIO event accounting to count all AIO request that could have been split across the fast path and daemon mode. The prior accounting only kept track of AIO op's in that mode and not the entire list of operations. This could cause a bogus LIO event complete notification to occur when all of the fast path AIO op's completed and not the AIO op's that ended up queued for the daemon. Suggestions from: alc
* Make some purely internal symbols static to reduce link pollution.kientzle2005-10-122-5/+5
|
* When performing a VOP_LOOKUP() as part of UFS1 extended attributerwatson2005-10-121-0/+1
| | | | | | | | | | | | | auto-start, set cnp.cn_lkflags to LK_EXCLUSIVE. This flag must now be set so that lockmgr knows what kind of lock to acquire, and it will panic if not specified. This resulted in a panic when using extended attributes on UFS1 as of locking work present in the 6.x branch. This is a RELENG_6_0 merge candidate. Reported by: lofi MFC after: 3 days
* New release notes: snd_mss(4) manual page added.joel2005-10-122-2/+2
|
* After rev. 1.103 the oitem and ierror are no longer needed, remove them.glebius2005-10-121-18/+4
|
* __MAKE_CONF doesn't really belong here because it isyar2005-10-121-10/+1
| | | | | | | a FreeBSD extension of sys.mk. A xref to make.conf(5) will be enough here. Requested by: ru
* Unbreak the net.inet6.tcp6.getcred sysctl.philip2005-10-122-6/+6
| | | | | | This makes inetd/auth work again in IPv6 setups. Pointy hat to: ume/KAME
* AES counter mode uses 8byte IV, not 16 bytes.ume2005-10-121-1/+1
| | | | Obtained from: NetBSD
* Move execve's access time update functionality into a newdds2005-10-125-27/+25
| | | | | | | | vfs_mark_atime() function, and use the new function for performing efficient atime updates in mmap(). Reviewed by: bde MFC after: 2 weeks
* Minor style nit: tab instead of space after #definekientzle2005-10-121-1/+1
|
* When reading GNU-style sparse archive entries, handlekientzle2005-10-121-8/+18
| | | | | the first sparse block correctly (we used to assume that the first sparse block was always at offset zero).
* In pax interchange format, use UTF8 for writingkientzle2005-10-123-21/+70
| | | | | | | | | | link names, usernames, or group names that contain non-ASCII characters. In particular, this corrects an inconsistency reported by Ed Maste when archiving symlinks with odd characters: long symlinks would get preserved, short ones would be changed.
* Convert ndis_set_info() and ndis_get_info() from using msleep()wpaul2005-10-124-52/+43
| | | | | to KeSetEvent()/KeWaitForSingleObject(). Also make object argument of KeWaitForSingleObject() a void * like it's supposed to be.
* Ensure that a thread stays on same CPU when calculating per CPUups2005-10-121-15/+15
| | | | | | | | | | | | | | | | TLB shootdown requirements. Otherwise a CPU may not get the needed TLB invalidation. The PTE valid and access flags can not be used here to avoid TLB shootdowns unless sf->cpumask == all_cpus. ( Otherwise some CPUs may still hold an even older entry in the TLB) Since sf_buf_alloc mappings are normally always used this is also not really useful and presetting accessed and modified allows the CPU to speculatively load the entry into the TLB. Both bugs can cause random data corruption. MFC after: 3 days
* Drain all pending events from the driver when we get anwpaul2005-10-121-18/+32
| | | | | RTM_IFINFO message, in case some were posted before ndis_events was run. This keeps us in sync with wpa_supplicant.
* Connect rc.d scripts for the hcsecd(8) and sdpd(8) daemons to the build.emax2005-10-121-1/+2
| | | | MFC after: 1 month
* Record sk(4) as having native support for extended VLAN frames.yar2005-10-111-0/+4
| | | | | PR: kern/79998 MFC after: 1 month
* Mark sk(4) as capable of handling extended VLAN frames. NICsyar2005-10-112-0/+12
| | | | | | | | | based on XMAC II chip should be ready for this in their initial mode of operation, and Yukon-based NICs are configured so by the driver. PR: kern/79998 MFC after: 1 month
* Fix build: remove stale KASSERT() for mutex that no longer exists.wpaul2005-10-111-2/+0
|
* Add rc.d scripts for the hcsecd(8) and sdpd(8) daemons. Put defaults intoemax2005-10-113-0/+53
| | | | | | | | | /etc/defaults/rc.conf. Both daemons can run even if no Bluetooth devices are attached to the system. Both daemons depend on Bluetooth socket layer and thus disabled by default. Bluetooth sockets layer must be either loaded as a module or compiled into kernel before the daemons can run. MFC after: 1 month
* Fix a syntax nit (superfluous 'a').keramida2005-10-111-1/+1
| | | | Submitted by: Anders Hanssen <anders@rethink.no>
* Fix a regression introduced in rev. 1.107. If an item once had a writerglebius2005-10-111-22/+28
| | | | | | | | | | | | | | | | semantics, and then was reused for next node, it still would be applied as writer again. To fix the regression the decision is made never to alter item->el_flags after the item has been allocated. This requires checking for overrides both in ng_dequeue() and in ng_snd_item(). Details: - Caller of the ng_apply_item() knows what is the current access to node and specifies it to ng_apply_item(). The latter drops the given access after item has beem applied. - ng_dequeue() needs to be supplied with int pointer, where it stores the obtained access on node. - Check for node/hook access overrides in ng_dequeue().
* Correct a man-in-the-middle SSL version rollback vulnerability.cperciva2005-10-111-6/+1
| | | | Security: FreeBSD-SA-05:21.openssl
* Style and other fixes for the last commit.glebius2005-10-111-7/+9
| | | | Submitted by: ru
* Fixed range reduction for large multiples of pi/2 on systems withbde2005-10-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | broken assignment to floats (e.g., i386 with gcc -O, but not amd64 or ia64; i386 with gcc -O0 worked accidentally). Use an unnamed volatile temporary variable to trick gcc -O into clipping extra precision on assignment. It's surprising that only 1 place needed to be changed. For tanf() on i386 with gcc -O, the bug caused errors > 1 ulp with a density of 2.3% for args larger in magnitude than 128*pi/2, with a maximum error of 1.624 ulps. After this fix, exhaustive testing shows that range reduction for floats works as intended assuming that it is in within a factor of about 2^16 of working as intended for doubles. It provides >= 8 extra bits of precision for all ranges. On i386: range max error in double/single ulps extra precision ----- ------------------------------- --------------- 0 to 3*pi/4 0x000d3132 / 0.0016 9+ bits 3*pi/4 to 128*pi/2 0x00160445 / 0.0027 8+ 128*pi/2 to +Inf 0x00000030 / 0.00000009 23+ 128*pi/2 up, -O0 before fix 0x00000030 / 0.00000009 23+ 128*pi/2 up, -O1 before fix 0x10000000 / 0.5 1 The 23+ bits of extra precision for large multiples corresponds to almost perfect reduction to a pair of floats (24 extra would be perfect). After this fix, the maximum relative error (relative to the corresponding fdlibm double precision function) is < 1 ulp for all basic trig functions on all 2^32 float args on all machines tested: amd64 ia64 i386-O0 i386-O1 ------ ------ ------ ------ cosf: 0.8681 0.8681 0.7927 0.5650 sinf: 0.8733 0.8610 0.7849 0.5651 tanf: 0.9708 0.9329 0.9329 0.7035
* Fix typo.glebius2005-10-111-2/+1
| | | | | Submitted by: maxim MFC after: 3 days
* Do not unconditionally set a spanning tree port to forwarding as the link may bethompsa2005-10-111-1/+1
| | | | | | down when we attach. We wont get updated until a linkstate change happens. Go via bstp_ifupdstatus() which checks the media status first.
* IDs for generic card, airvast wm_100, i-o data wn-b11/cfzimp2005-10-111-1/+5
| | | | Some of these may have been obtained from OpenBSD...
* Buffalo LPC4/CLX IDimp2005-10-111-0/+1
|
* New OEM generic card. "10/100 Fast Ethernet PC Card". It has aimp2005-10-111-0/+1
| | | | | | generic sounding CIS "PCMCIA", "FAST ETHERENT CARD" and a bogus MANFID code (0xffff and 0x1090). However, since I'm not aware of 'generic' cards that aren't NE-2000oids, go with that and hope for the best.
* Make forwarding of connect/disconnect events optional. wpa_supplicantwpaul2005-10-102-3/+22
| | | | | seems to already be able to tell when it's associated and the extra events just confuse it. Only forward media-specific events by default.
* Fix a missing set of lock operations.scottl2005-10-101-0/+3
| | | | | Submitted by: green PR: 87191
* Fixed range reduction near (but not very near) medium-sized multiplesbde2005-10-101-3/+18
| | | | | | | | | | of pi/2 (1 line) and expand a comment about related magic (many lines). The bug was essentially the same as for the +-pi/2 case (a mistranslated mask), but was smaller so it only significantly affected multiples starting near +-13*pi/2. At least on amd64, for cosf() on all 2^32 float args, the bug caused 128 errors of >= 1 ulp, with a maximum error of 1.2393 ulps.
* Correct the former patch to the way it would have looked after review.sos2005-10-101-13/+13
|
* Properly react to allocation failures.sos2005-10-101-6/+11
| | | | Found by: imp@
* Avoid unintended VMIO on directories and symlinks due to leftover objecttegge2005-10-101-0/+1
| | | | not having been destroyed.
* Grrr. Add one more missing NDIS_UNLOCK().wpaul2005-10-101-1/+3
|
* Add missing NDIS_UNLOCK() in one of the failure cases in SIOCGPRIVATE_0.wpaul2005-10-101-1/+3
|
* Autogenerate hardware notes for snd_mss(4).joel2005-10-103-0/+5
|
* Enable -D ndis support in wpa_supplicant and add the ndis_events utility.wpaul2005-10-108-2/+944
| | | | | This allows wpa_supplicant to work with WPA and WPA2 compliant NDIS drivers.
* - Xref snd_mss(4).joel2005-10-101-9/+2
| | | | | - Remove a few items from the HARDWARE list. This support is already described in the snd_mss(4) manual page.
* Remove the driver_ndis files from the exclusion listwpaul2005-10-101-3/+0
|
* Add manual page for snd_mss(4) and hook it up to the build.joel2005-10-102-0/+101
| | | | Reviewed by: brueffer
* This commit was generated by cvs2svn to compensate for changes in r151208,wpaul2005-10-103-0/+1779
|\ | | | | | | which included commits to RCS files with non-trunk default branches.
| * Import the driver_ndis files from the 0.3.9 distribution.wpaul2005-10-103-0/+1779
| |
* | This commit makes a big round of updates and fixes many, many things.wpaul2005-10-1010-1227/+2537
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First and most importantly, I threw out the thread priority-twiddling implementation of KeRaiseIrql()/KeLowerIrq()/KeGetCurrentIrql() in favor of a new scheme that uses sleep mutexes. The old scheme was really very naughty and sought to provide the same behavior as Windows spinlocks (i.e. blocking pre-emption) but in a way that wouldn't raise the ire of WITNESS. The new scheme represents 'DISPATCH_LEVEL' as the acquisition of a per-cpu sleep mutex. If a thread on cpu0 acquires the 'dispatcher mutex,' it will block any other thread on the same processor that tries to acquire it, in effect only allowing one thread on the processor to be at 'DISPATCH_LEVEL' at any given time. It can then do the 'atomic sit and spin' routine on the spinlock variable itself. If a thread on cpu1 wants to acquire the same spinlock, it acquires the 'dispatcher mutex' for cpu1 and then it too does an atomic sit and spin to try acquiring the spinlock. Unlike real spinlocks, this does not disable pre-emption of all threads on the CPU, but it does put any threads involved with the NDISulator to sleep, which is just as good for our purposes. This means I can now play nice with WITNESS, and I can safely do things like call malloc() when I'm at 'DISPATCH_LEVEL,' which you're allowed to do in Windows. Next, I completely re-wrote most of the event/timer/mutex handling and wait code. KeWaitForSingleObject() and KeWaitForMultipleObjects() have been re-written to use condition variables instead of msleep(). This allows us to use the Windows convention whereby thread A can tell thread B "wake up with a boosted priority." (With msleep(), you instead have thread B saying "when I get woken up, I'll use this priority here," and thread A can't tell it to do otherwise.) The new KeWaitForMultipleObjects() has been better tested and better duplicates the semantics of its Windows counterpart. I also overhauled the IoQueueWorkItem() API and underlying code. Like KeInsertQueueDpc(), IoQueueWorkItem() must insure that the same work item isn't put on the queue twice. ExQueueWorkItem(), which in my implementation is built on top of IoQueueWorkItem(), was also modified to perform a similar test. I renamed the doubly-linked list macros to give them the same names as their Windows counterparts and fixed RemoveListTail() and RemoveListHead() so they properly return the removed item. I also corrected the list handling code in ntoskrnl_dpc_thread() and ntoskrnl_workitem_thread(). I realized that the original logic did not correctly handle the case where a DPC callout tries to queue up another DPC. It works correctly now. I implemented IoConnectInterrupt() and IoDisconnectInterrupt() and modified NdisMRegisterInterrupt() and NdisMDisconnectInterrupt() to use them. I also tried to duplicate the interrupt handling scheme used in Windows. The interrupt handling is now internal to ndis.ko, and the ndis_intr() function has been removed from if_ndis.c. (In the USB case, interrupt handling isn't needed in if_ndis.c anyway.) NdisMSleep() has been rewritten to use a KeWaitForSingleObject() and a KeTimer, which is how it works in Windows. (This is mainly to insure that the NDISulator uses the KeTimer API so I can spot any problems with it that may arise.) KeCancelTimer() has been changed so that it only cancels timers, and does not attempt to cancel a DPC if the timer managed to fire and queue one up before KeCancelTimer() was called. The Windows DDK documentation seems to imply that KeCantelTimer() will also call KeRemoveQueueDpc() if necessary, but it really doesn't. The KeTimer implementation has been rewritten to use the callout API directly instead of timeout()/untimeout(). I still cheat a little in that I have to manage my own small callout timer wheel, but the timer code works more smoothly now. I discovered a race condition using timeout()/untimeout() with periodic timers where untimeout() fails to actually cancel a timer. I don't quite understand where the race is, using callout_init()/callout_reset()/callout_stop() directly seems to fix it. I also discovered and fixed a bug in winx32_wrap.S related to translating _stdcall calls. There are a couple of routines (i.e. the 64-bit arithmetic intrinsics in subr_ntoskrnl) that return 64-bit quantities. On the x86 arch, 64-bit values are returned in the %eax and %edx registers. However, it happens that the ctxsw_utow() routine uses %edx as a scratch register, and x86_stdcall_wrap() and x86_stdcall_call() were only preserving %eax before branching to ctxsw_utow(). This means %edx was getting clobbered in some cases. Curiously, the most noticeable effect of this bug is that the driver for the TI AXC110 chipset would constantly drop and reacquire its link for no apparent reason. Both %eax and %edx are preserved on the stack now. The _fastcall and _regparm wrappers already handled everything correctly. I changed if_ndis to use IoAllocateWorkItem() and IoQueueWorkItem() instead of the NdisScheduleWorkItem() API. This is to avoid possible deadlocks with any drivers that use NdisScheduleWorkItem() themselves. The unicode/ansi conversion handling code has been cleaned up. The internal routines have been moved to subr_ntoskrnl and the RtlXXX routines have been exported so that subr_ndis can call them. This removes the incestuous relationship between the two modules regarding this code and fixes the implementation so that it honors the 'maxlen' fields correctly. (Previously it was possible for NdisUnicodeStringToAnsiString() to possibly clobber memory it didn't own, which was causing many mysterious crashes in the Marvell 8335 driver.) The registry handling code (NdisOpen/Close/ReadConfiguration()) has been fixed to allocate memory for all the parameters it hands out to callers and delete whem when NdisCloseConfiguration() is called. (Previously, it would secretly use a single static buffer.) I also substantially updated if_ndis so that the source can now be built on FreeBSD 7, 6 and 5 without any changes. On FreeBSD 5, only WEP support is enabled. On FreeBSD 6 and 7, WPA-PSK support is enabled. The original WPA code has been updated to fit in more cleanly with the net80211 API, and to eleminate the use of magic numbers. The ndis_80211_setstate() routine now sets a default authmode of OPEN and initializes the RTS threshold and fragmentation threshold. The WPA routines were changed so that the authentication mode is always set first, followed by the cipher. Some drivers depend on the operations being performed in this order. I also added passthrough ioctls that allow application code to directly call the MiniportSetInformation()/MiniportQueryInformation() methods via ndis_set_info() and ndis_get_info(). The ndis_linksts() routine also caches the last 4 events signalled by the driver via NdisMIndicateStatus(), and they can be queried by an application via a separate ioctl. This is done to allow wpa_supplicant to directly program the various crypto and key management options in the driver, allowing things like WPA2 support to work. Whew.
* | Correct typo.ceri2005-10-101-1/+1
| | | | | | | | Discussed with: glebius
* | Bug fix initialization on multi-core HTT CPUs.jkoshy2005-10-101-46/+59
| | | | | | | | | | Reported by: ps Tested by: ps
* | - Note that ng_iface(4) now supports ALTQ.glebius2005-10-102-5/+23
| | | | | | | | - Explain when ALTQ should be used on ng_iface(4) and when not.
* | ALTQ support for ng_iface(4). Before turning on please consult manual page.glebius2005-10-101-26/+68
| |
OpenPOWER on IntegriCloud