Commit Graph

1626 Commits

Author SHA1 Message Date
cy
415ef9fb90 Restore prototype accidently removed by r316811. Also remove $NetBSD$
accidentally added.

Reported by:	hps, lwhsu
2017-04-19 13:24:32 +00:00
glebius
fef9613ffa Remove unneeded include of vm_phys.h. 2017-04-17 16:51:04 +00:00
cy
49df14a5e5 Clean up extraneous brackets. 2017-04-15 23:34:05 +00:00
cy
5e198ef69f Add missing free()'s after calls to randomize().
PR:		NetBSD PR/50559
Obtained from:	Netbsd radix_ipf.c r1.6
MFC after:	1 week
2017-04-14 05:13:50 +00:00
cy
38cb23d01d Keep state incorrectly assumes keep frags. This is counter to the
ipfilter man pages. This also currently restricts keep frags to only when
keep state is used, which is redundant because keep state currently
assumes keep frags. This commit fixes this.

To the user this change means that to maintain the current behaviour
one must add keep frags to any ipfilter keep state rule (as documented
in the man pages).

This patch also allows the flexability to specify and use keep frags
separate from keep state, as documented in an example in ipf.conf.5,
instead of the currently broken behaviour.

Relnotes:	yes
2017-04-14 05:12:01 +00:00
cy
c7d7371ae8 Fix a use after free panic in ipfilter's fragment processing.
Memory is malloc'd, then a search for a match in the fragment table
is made and if the fragment matches, the wrong fragment table is
freed, causing a use after free panic. This commit fixes this.

A symptom of the problem is a kernel page fault in bcopy() called by
ipf_frag_lookup() at line 715 in ip_frag.c. Another symptom is a
kernel page fault in ipf_frag_delete() when called by ipf_frag_expire()
via ipf_slowtimer().

MFC after:	1 week
2017-04-14 03:54:36 +00:00
cognet
f8a2a2a85a Import CK as of commit 6b141c0bdd21ce8b3e14147af8f87f22b20ecf32
This brings us changes we needed in ck_epoch.
2017-04-09 21:02:05 +00:00
imp
45caa2b73a Copy needed include files from EDK2. This is a minimal set gleened
from the .depend files after the build:
	cp -r ../vendor/edk2/MdePkg/Include sys/contrib/edk2
	cd lib/libefivar
	make
	pushd `make -V .OBJDIR`
	cat .depend*.o | grep sys/contrib | cut -d' ' -f 3 |
		sort -u | sed -e 's=/full/path/sys/contrib/edk2/==' > /tmp/xxx
	popd
	cd ../../sys/contrib/edk2
	rm -rf Include
	for i in `cat /tmp/xxx`; do
		svn cp svn+ssh://repo.freebsd.org/base/vendor/edk2/dist/MdePkg/$i $i
	done
	svn cp svn+ssh://repo.freebsd.org/base/vendor/edk2/dist/MdePkg/MdePkg.dec .

The original EDK2 repo is ~265MB, the MdePkg is ~23MB, all
MdePkg/Includes is ~7MB and this minimal set is ~1.3MB.

Sponsored by:	Netflix
2017-03-08 02:47:59 +00:00
jkim
ed743061ad Merge ACPICA 20170303. 2017-03-03 18:56:15 +00:00
imp
7e6cabd06e Renumber copyright clause 4
Renumber cluase 4 to 3, per what everybody else did when BSD granted
them permission to remove clause 3. My insistance on keeping the same
numbering for legal reasons is too pedantic, so give up on that point.

Submitted by:	Jan Schaumann <jschauma@stevens.edu>
Pull Request:	https://github.com/freebsd/freebsd/pull/96
2017-02-28 23:42:47 +00:00
cognet
53c6abb4ce Merge CK as of commit 24d26965d1a28039062ba3bcf9433b623f3d2c5e, to get
a fix in ck_epoch.
2017-02-28 23:30:14 +00:00
adrian
e06055245a Add 7265D firmware. 2017-02-22 04:42:02 +00:00
ian
8255104367 Stop including sys/types.h from arm's machine/atomic.h, fix the places
where atomic.h was being included without ensuring that types.h (via
param.h) was included first, as required by atomic(9).
2017-02-11 01:07:46 +00:00
adrian
a467bdc2cf [iwm] add this 3 megabyte firmware image. 2017-02-08 07:03:09 +00:00
adrian
c49e877916 [iwm] add version 17 firmware. 2017-02-08 07:02:09 +00:00
adrian
7ad1e92b72 [iwm] add version 17 firmware. 2017-02-08 07:01:58 +00:00
adrian
33b4ee7145 [iwm] add version 17 firmware. 2017-02-08 07:01:31 +00:00
adrian
3ea8f8f2fb [ath_hal] [ar9300] link in the CAC enable/diable methods and expose it via the HAL. 2017-02-03 05:15:35 +00:00
adrian
d8249d018f [ath_hal] [ar9300] initial radar decode for AR9380 and later chips. 2017-02-03 03:57:06 +00:00
adrian
907009c8af [ath_hal] [ar9300] initial radar detection glue.
* flesh out a "get default DFS parameters" routine
* remove the stub that returns NULL
* fix up the enable DFS method to do what FreeBSD does - specifically, allow pe_enabled
  to be set/cleared.

This allows the radar pulse reporting code to function, but it doesn't yet
do anything useful.
2017-02-02 09:19:57 +00:00
adrian
ff0b35e0ac [ath_hal] [ar9300] initial hacks to make spectral scan working on AR9380 and later NICs.
* add debugging
* disable the manual noise floor calibration and tracking done by the HAL;
  this interferes with the normal calibration path and will lock up the RX
  side
* don't program short report / priority if they're provided as NOVAL.
2017-02-02 05:29:22 +00:00
bapt
bd0b52fc1f Revert crap accidentally committed 2017-01-28 16:31:23 +00:00
bapt
02ac05d572 Revert r312923 a better approach will be taken later 2017-01-28 16:30:14 +00:00
cy
159249f9d6 Fix lookup of original destination address when using a redirect rule.
Transparent proxying, e.g. to squid, is an example of this.

Obtained from:	NetBSD ip_nat.c r1.17, ip_nat6.c r1.10
MFC after:	6 weeks
2017-01-27 14:12:34 +00:00
cy
5fb5bda947 Currently the fragment info is placed at the top of the linked list
under a shared read lock. This patch attempts to upgrade the lock to
an exclusive write lock. If the exclusive write lock fails to be
obtained, the current fragment is not placed at the head of the list.

This portion of the patch was inspired by NetBSD ip_frag.c r1.4 (which
effectively removed the section of code that performed the reordering).

The patch to sys/contrib/ipfilter/netinet/ip_compat.h adds the
MUTEX_TRY_UPGRADE macro to support the patch to ip_frag.c.

The patch to contrib/ipfilter/lib/rwlock_emul.c supports this patch
by emulating the mutex in userspace when exercised by ipftest(1).

Inspired by:	NetBSD ip_frag.c r1.4
MFC after:	1 month
2017-01-26 01:24:05 +00:00
kevlo
3dfa47ebb8 Add support for the Realtek RTL8192EU chipset.
Committed over the D-Link DWA-131 rev E1 on amd64 with WPA.

Reviewed by:	avos
2017-01-24 02:35:38 +00:00
jkim
bad55a0870 Merge ACPICA 20170119. 2017-01-19 22:07:21 +00:00
ed
3902c43ebd Sync in the latest CloudABI generated source files.
Languages like C++17 and Go provide direct support for slice types:
pointer/length pairs. The CloudABI generator now has more complete for
this, meaning that for the C binding, pointer/length pairs now use an
automatic naming scheme of ${name} and ${name}_len.

Apart from this change and some reformatting, the ABI definitions are
identical. Binary compatibility is preserved entirely.
2017-01-17 22:03:08 +00:00
bz
4d0769cea5 Get rid of a compiler warning which I saw too often.
Include netinet/in.h before ip_compat.t which will then check if
IPPROTO_IPIP is defined or not.  Doing it the other way round,
ip_compat.h would not find it defined and netinet/in.h then
redefine it.
2017-01-12 00:01:02 +00:00
cem
2e583dd4ba Revert r311843, r311667
As jkim@ points out, it isn't needed.
2017-01-11 00:02:51 +00:00
cem
6f15f1af9b Adjust ACPI_EXPORT_SYMBOL for AcpiGetTableWithSize
Suggested by:	jbeich@
2017-01-10 00:03:43 +00:00
cem
090237c250 Add some additional ACPI methods for DRM
Add AcpiGetDataFull and AcpiGetTableWithSize.

Submitted by:	Matt Macy
2017-01-08 06:26:33 +00:00
jkim
4397493c54 Remove '-vd' option to make iasl(8) reproducible.
PR:		215421
2017-01-06 18:08:53 +00:00
jkim
b128893b90 Merge ACPICA 20161222. 2017-01-05 21:28:25 +00:00
cognet
a1566518f6 Merge CK as of commit 255a47553aa5e8d0bb5f8eec63acac7f4c25a6d8, mostly
to make sure we don't use any FP instruction.
2016-12-30 18:23:58 +00:00
gonzo
e2a4941710 [vchi] replace non-reproducible __DATE__/__TIME__ with hardcoded string
Although vchiq_build_date and vchiq_build_time are not used in current
vchi driver at the moment, make sure these value will not leak into
build later on if at some point they will be refered in some new
imported code

PR:		215494
Reported by:	emaste
MFC after:	1 week
2016-12-26 02:51:03 +00:00
cognet
3dd66211e3 Add a FREEBSD-Xlist file for CK. 2016-11-28 21:16:03 +00:00
cognet
882b572f61 Add FreeBSD-specific files. 2016-11-28 20:33:30 +00:00
cognet
c311430119 Import Concurrency Kit in the kernel.
CK is a toolkit providing different lockfree algorithms/data structures.
More information can be found here : www.concurrencykit.org
2016-11-28 20:27:58 +00:00
jkim
2c6d98df3e Merge ACPICA 20161117. 2016-11-22 05:54:37 +00:00
jhibbits
10f77ef73e Simplify the page tracking for VA<->PA translations.
Drop the tracking down to the pmap layer, with optimizations to only track
necessary pages.  This should give a (slight) performance improvement, as well
as a stability improvement, as the tracking is already mostly handled by the
pmap layer.
2016-11-16 05:24:42 +00:00
loos
12bce0cdb3 Reduce dmesg verbosity. 2016-11-15 00:58:31 +00:00
bdrewery
30f99dbeef Fix improper use of "its".
Sponsored by:	Dell EMC Isilon
2016-11-08 23:59:41 +00:00
mmel
5b129f8322 Add NVIDIA Tegra XHCI driver and coresponding firmware blob.
MFC after: 3 weeks
Approved by: core@ (NVIDIA license)
2016-11-07 05:37:10 +00:00
np
d442c439a1 krping: Allow the underlying ib_device to handle DMA mappings.
Submitted by:	Vijay Singh @ Netapp
2016-10-24 20:53:44 +00:00
jhibbits
e4be3bf094 Use proper integer-pointer type conversions.
As part of an effort to extend Book-E to the 64-bit world, make the necessary
changes to the DPAA/dTSEC driver set to be integer-pointer conversion clean.
This means no more casts to int, and use uintptr_t where needed.

Since the NCSW source is effectively obsolete, direct changes to the source tree
are safe.
2016-10-18 00:55:15 +00:00
avos
de7f32ad05 rtwn(4), urtwn(4): merge common code, add support for 11ac devices.
All devices:
- add support for rate adaptation via ieee80211_amrr(9);
- use short preamble for transmitted frames when needed;
- multi-bss support:
 * for RTL8821AU: 2 VAPs at the same time;
 * other: 1 any VAP + 1 sta VAP.
RTL8188CE:
- fix IQ calibration bug (reason of significant speed degradation);
- add h/w crypto acceleration support.
USB:
- A-MPDU Tx support;
- short GI support;
Other:
- add support for RTL8812AU / RTL8821AU chipsets
(a/b/g/n only; no ac yet);
- split merged code into subparts:
 * bus glue (usb/*, pci/*, rtl*/usb/*, rtl*/pci/*)
 * common (if_rtwn*)
 * chip-specific (rtl*/*)
- various other bugfixes.

Due to code reorganization, module names / requirements were changed too:
urtwn urtwnfw -> rtwn rtwn_usb rtwnfw
rtwn  rtwnfw  -> rtwn rtwn_pci rtwnfw

Tested with RTL8188CE, RTL8188CUS, RTL8188EU and RTL8821AU.

Tested by:	kevlo, garga,
		Peter Garshtja <peter.garshtja@ambient-md.com>,
		Kevin McAleavey <kevin.mcaleavey@knosproject.com>,
		Ilias-Dimitrios Vrachnis <id@vrachnis.com>,
		<otacilio.neto@bsd.com.br>
Relnotes:	yes
2016-10-17 20:38:24 +00:00
emaste
ed7ba20097 Fix octeon model comparison in Cavium SDK
buildkernel failed with GCC 5.3 with
error: comparison of constant '852736' with boolean expression is always true

Sponsored by:	The FreeBSD Foundation
2016-10-13 17:16:32 +00:00
emaste
9d8469f598 Convert ­ U+00AD soft hyphen to - in Cavium Octeon SDK
Linux's copy of the Cavium SDK does not have these non-ASCII characters
and this reduces noise in diffs when comparing the two.

Sponsored by:	The FreeBSD Foundation
2016-10-13 16:57:19 +00:00
gonzo
c7d8fd579e Make VCHI driver compatible with upstream DT
- Add compatibility string
- Compensate difference in base address between our custom DTB and upstream one
2016-10-12 03:08:58 +00:00
kevlo
4ec42ae201 In case of removal of m_copy() the macro should remain named M_COPY()
in ip_compat.h after r305824.  Leaving as vanilla as possible aids in
future maintenance and upgrades.

Suggested by:	glebius, cy
2016-10-08 14:57:21 +00:00
jhibbits
0b74c9ccd0 Minor optimizations to dTSEC glue code
Don't call pmap_kextract() multiple times, it wastes CPU cycles, which in a high
performance environment can be very expensive.

Inline XX_FindTracker() to allow more optimizations as well.
2016-10-08 05:26:45 +00:00
jkim
7706f244fc Merge ACPICA 20160930. 2016-10-04 20:27:15 +00:00
eadler
b861bdcedb Remove an extra etter. 2016-09-29 14:01:06 +00:00
kevlo
c1c4efb9b3 Remove the compatibility macro if_addrlist.
Since if_addrlist is used only for ipfilter(4), add a macro if_addrlist
in ip_compat.h.

Reviewed by:	cy
Differential Revision:	https://reviews.freebsd.org/D8059
2016-09-29 05:37:45 +00:00
wma
4c8febd627 Update Annapurna Alpine HAL
alpine-hal SerDes file was omitted in the previous commit.
Files added here.
All unnecessary (old) files were also removed.
Merge from vendor-sys, r306017
2016-09-20 09:19:22 +00:00
ed
2f34f5add5 Sync in latest vDSOs from upstream.
- Use conditional instruction to simplify the ARMv6 vDSO. This means
  that we no longer perform any branching. In the failure case, we
  simply slide over the assignments of the return values.

  The vDSO could be improved even further by using stmia to do
  assignments in parallel. Unfortunately, the script used to generate
  these is not smart enough for that (yet).

  Spotted by: andrew@.

- Make the style of the i686 vDSO more similar to the others by using
  decimal literals.
2016-09-19 17:31:05 +00:00
ed
d9a67c9296 Fix badly computed register/stack offset of system call output arguments.
Bugs in the Python code used to generate this vDSO caused us to
miscompute the register numbers/stack offsets at which addresses of the
system call output arguments were stored.

Together with some other patches, this vDSO allows us to make all of the
cloudlibc unit tests pass.

Obtained from:	https://github.com/NuxiNL/cloudabi
2016-09-18 17:23:53 +00:00
ed
a9355d61c1 Add very preliminary support for CloudABI for ARMv6.
In order to make CloudABI work on ARMv6, start off by copying over the
sysvec for ARM64 and adjust it to use 32-bit registers. Also add code
for fetching arguments from the stack if needed, as there are fewer
register than on ARM64.

Also import the vDSO that is needed to invoke system calls. This vDSO
uses the intra procedure call register (ip) to store the system call
number. This is a bit simpler than what native FreeBSD does, as FreeBSD
uses r7, while preserving the original r7 into ip.

This sysvec seems to be complete enough to start CloudABI processes.
These processes are capable of linking in the vDSO and are therefore
capable of executing (most?) system calls successfully. Unfortunately,
the biggest show stopper is still that TLS is completely broken:

- The linker used by CloudABI, LLD, still has troubles with some of the
  relocations needed for TLS. See LLVM bug 30218 for more details.

- Whereas FreeBSD uses the tpidruro register for TLS, for CloudABI I
  want to make use of tpidrurw, so that userspace can modify the base
  address directly. This is needed for efficient emulation.
  Unfortunately, this register doesn't seem to be preserved across
  context switches yet.

Obtained from:	https://github.com/NuxiNL/cloudabi (the vDSO)
2016-09-18 11:36:54 +00:00
kevlo
518bc28463 Remove the 4.3BSD compatible macro m_copy(), use m_copym() instead.
Reviewed by:	gnn
Differential Revision:	https://reviews.freebsd.org/D7878
2016-09-15 07:41:48 +00:00
adrian
e6e2629747 [ath_hal] quieten a bit of the boot messages - this stuff has been working for a while. 2016-09-12 04:58:59 +00:00
wma
cf34a0f54c Update Annapurna Alpine HAL to a newer version.
HAL version: 2.7a

Import from vendor-sys, r305475
2016-09-06 14:59:13 +00:00
gonzo
8ecebffb80 Update VCHIQ driver to upstream version 4eda74f2
PR:		211525
Submitted by:	Sylvain Garrigues <sylvain@sylvaingarrigues.com>
2016-08-31 01:04:57 +00:00
dim
c9c476987e Follow-up to r304953, in which I broke the build: apparently the SOLARIS
macro is defined in lots of different places in ipfilter, so replace all
of the nonportable definitions with portable ones.

Pointy hat to:	dim
X-MFC-With:	r304959, r304953
MFC after:	3 days
2016-08-28 19:35:29 +00:00
kib
4eff3f89d6 Complete r304953.
Sponsored by:	The FreeBSD Foundation
MFC after:	3 days
2016-08-28 18:10:29 +00:00
dim
35cf28006c Define ipfilter's SOLARIS macro in a defined and portable way.
Reviewed by:	cy
MFC after:	3 days
Differential Revision: https://reviews.freebsd.org/D7671
2016-08-28 11:51:46 +00:00
adrian
3788260a22 [ath_hal] add USB PHY control registers for hornet/AR9330.
Obtained from:	linux ath9k
2016-08-28 05:42:03 +00:00
oshogbo
ccd663447f Fix style issue in the cnv API.
Remove unused arguments in a macro.
Remove unused typedef.
2016-08-27 13:40:27 +00:00
oshogbo
9030a915ff Add cnv API.
cnv API is a set of functions for managing name/value pairs by cookie.
The cookie can be obtained by nvlist_next(), nvlist_get_parent() or
nvlist_get_pararr() function. This patch also includes unit tests.

Submitted by:	Adam Starak <starak.adam@gmail.com>
2016-08-27 13:37:30 +00:00
ed
d81be03d3f Make execution of 32-bit CloudABI executables work on amd64.
A nice thing about requiring a vDSO is that it makes it incredibly easy
to provide full support for running 32-bit processes on 64-bit systems.
Instead of letting the kernel be responsible for composing/decomposing
64-bit arguments across multiple registers/stack slots, all of this can
now be done in the vDSO. This means that there is no need to provide
duplicate copies of certain system calls, like the sys_lseek() and
freebsd32_lseek() we have for COMPAT_FREEBSD32.

This change imports a new vDSO from the CloudABI repository that has
automatically generated code in it that copies system call arguments
into a buffer, padding them to eight bytes and zero-extending any
pointers/size_t arguments. After returning from the kernel, it does the
inverse: extracting return values, in the process truncating
pointers/size_t values to 32 bits.

Obtained from:	https://github.com/NuxiNL/cloudabi
2016-08-24 10:51:33 +00:00
ed
914f8fda59 Remove an unused header file.
The native CloudABI data types header file used to be pulled in by the
vDSOs when they were still written in C. Since they are now all
rewritten in assembly, this can go away.
2016-08-24 10:36:52 +00:00
ed
ee20ad15b4 Make CloudABI work on i386.
Copy over amd64's cloudabi64_sysvec.c into i386 and tailor it to work.
Again, we use a system call convention similar to FreeBSD, except that
there is no support for indirect system calls (%eax == 0).

Where i386 differs from amd64 is that we have to store thread/process
entry arguments on the stack instead of using registers. We also have to
put an extra pointer on the stack for TLS (for GSBASE). Place that
pointer in the empty slot that is normally used to hold return
addresses. That seems to keep the code simple.

Reviewed by:	kib
Differential Revision:	https://reviews.freebsd.org/D7590
2016-08-22 17:37:31 +00:00
ed
258ff8a811 Fix s/64/32/ conversion errors in the system call table.
We should pull in the 32 bit headers when using this system call table.
2016-08-21 15:56:19 +00:00
ed
af294e1274 Import the 32-bit system call table and data types into the tree.
Obtained from:	https://github.com/NuxiNL/cloudabi
2016-08-21 15:41:19 +00:00
ed
1a0fadf5ab Rewrite the vDSOs for CloudABI in assembly.
The reason why the old vDSOs were written in C using inline assembly was
purely because they were embedded in the C library directly as static
inline functions. This was practical during development, because it
meant you could invoke system calls without any library dependencies.
The vDSO was simply a copy of these functions.

Now that we require the use of the vDSO, there is no longer any need for
embedding them in C code directly. Rewriting them in assembly has the
advantage that they are closer to ideal (less useless branching, less
assumptions about registers remaining unclobbered by the kernel, etc).
They are also easier to build, as they no longer depend on the C type
information for CloudABI.

Obtained from:	https://github.com/NuxiNL/cloudabi
2016-08-21 07:28:38 +00:00
ed
3b685ef4b9 Import the new automatically generated system call table for CloudABI.
Now that we've switched over to using the vDSO on CloudABI, it becomes a
lot easier for us to phase out old features. System call numbering is no
longer something that's part of the ABI. It's fully based on names. As
long as the numbering used by the kernel and the vDSO is consistent
(which it always is), it's all right.

Let's put this to the test by removing a system call (thread_tcb_set())
that's already unused for quite some time now, but was only left intact
to serve as a placeholder. Sync in the new system call table that uses
alphabetic sorting of system calls.

Obtained from:	https://github.com/NuxiNL/cloudabi
2016-08-19 17:49:35 +00:00
dumbbell
371e0a7254 Consistently use device_t
Several files use the internal name of `struct device` instead of
`device_t` which is part of the public API. This patch changes all
`struct device *` to `device_t`.

The remaining occurrences of `struct device` are those referring to the
Linux or OpenBSD version of the structure, or the code is not built on
FreeBSD and it's unclear what to do.

Submitted by:	Matthew Macy <mmacy@nextbsd.org> (previous version)
Approved by:	emaste, jhibbits, sbruno
MFC after:	3 days
Differential Revision:	https://reviews.freebsd.org/D7447
2016-08-09 19:32:06 +00:00
adrian
5fb8efd11e [ar9300] don't program a negative readytime. 2016-08-09 01:05:29 +00:00
ed
2a3c0220f9 Import vDSO-related source files from the CloudABI repository.
CloudABI executables that are emulated on Mac OS X do not invoke system
calls through "syscall". Instead, they make use of a vDSO that is
provided by the emulator that provides symbols for all of the system
call routines. The emulator can implement these any way it likes.

At some point in time we want to do this for native execution as well,
so that CloudABI executables are entirely oblivious of how system calls
need to be performed. They will simply call into functions and let that
deal with all of the details.

These source files can be used to generate a simple vDSO that does
nothing more than invoke "syscall". All we need to do now is map it into
the processes.

Obtained from:	https://github.com/NuxiNL/cloudabi
2016-08-08 13:15:37 +00:00
ed
6a21fb0ed2 Sync in the latest CloudABI constants and data types.
The only change is the addition of AT_SYSINFO_EHDR, which can be used
for providing a vDSO.

Obtained from:	https://github.com/NuxiNL/cloudabi
2016-08-07 21:23:55 +00:00
bapt
1cf7c866b3 Remove usage of _WITH_DPRINTF 2016-07-30 01:16:06 +00:00
sbruno
d6bd5f76ba Update iwmfw(4) to include support for 8260 series units and update
f/w for the other devices supported by this driver.

Patch linked in https://reviews.freebsd.org/D6967 but not actually
a part of the review.

Obtained from DragonflyBSD.

Submitted by:   Kevin Bowling <kev009@kev009.com>
MFC after:      2 weeks
Relnotes:       yes
2016-07-25 23:05:25 +00:00
oshogbo
380bd9dfa8 Fix nvlist array memory leak.
When we change nvl_array_next to NULL it means that we want to destroy or
take nvlist_array. The nvpair, which stores next nvlist of nvlist_array element
is no longer needed and can be freed.

Submitted by:	Adam Starak <starak.adam@gmail.com>
MFC after:	1 week
2016-07-17 15:36:02 +00:00
oshogbo
9043c75aa1 Fix memory leak in the nvlist string array.
Submitted by:	Adam Starak <starak.adam@gmail.com>
MFC after:	1 week
2016-07-17 15:29:31 +00:00
adrian
d16af5b0e4 [ath_hal] add in locationing timer support and capabilities.
* add support to read the timer and capability
* add support to enable/disable the location timer.

On AR9380 at least, enabling the location timer is required to make
the timer tick, otherwise location packets return a timestamp of 0.
However, it then makes /all/ RX packets use the RX location timestamp
instead of the TSF timestamp.

So, unless I find another magical way to do location timestamping,
we will have to dynamically switch things on/off and ensure the
TX/RX path handles the "different" timestamps correctly.

Tested:

* AR9380, STA mode
2016-07-08 22:59:15 +00:00
adrian
9115ccd3e7 [ath_hal] add locationing / tx-beamforming RX status descriptor decoding.
* LOC_INFO is mostly just "did this packet come with a locationing
  timestamp instead of TSF";
* Decode not-sounding, uploaded-data, data-valid, data type and
  number of extension spatial streams.
2016-07-08 22:39:37 +00:00
adrian
89d591e495 [ath_hal] Add setting positioning bit and clear sounding-disable bit.
* If fast_ts is set then the TX timestamp is the fast timestamp, not
  normal TSF.
* If the TX descriptor has the position bit set then request locationing
  and clear sounding-disable.  This way we (a) get the response with
  the TX timestamp from the location side of things, and (b) we get
  a CSI dump of the response ACK, which we will eventually use in the
  locationing path.
2016-07-08 22:37:52 +00:00
adrian
47e3237e42 [ath_hal] retire a "long RX desc" flag, store/use the TX/RX timestamp length.
* the code already stored the length of the RX desc, which I never used.
  So, use that and retire the new flag I introduced a while ago.
* Introduce a TX timestamp length field and capability.
2016-07-08 21:34:39 +00:00
bz
a1ab1fdac6 Only set the ipfilter running state to 'not running' if we are
doing the teardown.  ipf_destroy_all() may free ipfmain in case
of ipf_dynamic_softc being true, thus we are avoiding a possible
memory modified after free as well.

Reported by:	Coverity
Coverity CID:	1357320
Approved by:	re (hrs)
MFC after:	10 days
2016-07-06 10:29:29 +00:00
jhibbits
d88fefb346 Remove SoC-specific integrations from dTSEC, to make it SoC agnostic.
This will allow a single kernel to run on all SoCs supported by the dTSEC driver.

Approved by:	re@(gjb)
2016-07-05 06:16:42 +00:00
bz
0c1171f994 Virtualise ipfilter.
Split initializzation an teardown into module (global state) and VNET
(per virtual network stack) parts.  Virtualise global state, which is
not "const".

Cleanup eventhandlers, so that we can make use of the passed in argument
to get the vnet state from the ifp;  disable the "cloner" event as it is
too early, has no state, and can fire before initialisation (see comment
in the source).

Handle the dynamic sysctls specially.  The problem is that "ipmain"
is the virtualized struct, but the fields used for the sysctls are
hanging off memory allocated and attached to the virtualized "ipmain"
thus standard VNET macros and sysctl handling do not work.
We still say it is VNET sysctls to get the proper protection checks
in the VIMAGE case;  to solve the problem of accessing the right bit
of memory hanging of each per-VNET ipmain, we use a dedicated handler
function wrapping around sysctl_ipf_int() undoing the base calculation
from kern_sysctl.c and then adding the passed-in offset into the right
struct depending on handler.  A bit of a mess exposing VNET-internals
this way but the only way to keep the code without having to massively
restructure ipf internals.

Approved by:		re (hrs)
Sponsored by:		The FreeBSD Foundation
Obtained from:		projects/vnet
MFC after:		2 weeks
Reviewed by:		cy
Differential Revision:	https://reviews.freebsd.org/D7000
2016-06-30 15:01:07 +00:00
bz
47f08657c2 Remove unused global variables as well as unused memory
allocations from ipfilter in preparation for VNET support.

Suggested by:		cy (see D7000)
Sponsored by:		The FreeBSD Foundation
MFC after:		2 weeks
Approved by:		re (gjb)
2016-06-30 01:32:12 +00:00
bz
7a1c0b1ad1 Get closer to a VIMAGE network stack teardown from top to bottom rather
than removing the network interfaces first. This change is rather larger
and convoluted as the ordering requirements cannot be separated.

Move the pfil(9) framework to SI_SUB_PROTO_PFIL, move Firewalls and
related modules to their own SI_SUB_PROTO_FIREWALL.
Move initialization of "physical" interfaces to SI_SUB_DRIVERS,
move virtual (cloned) interfaces to SI_SUB_PSEUDO.
Move Multicast to SI_SUB_PROTO_MC.

Re-work parts of multicast initialisation and teardown, not taking the
huge amount of memory into account if used as a module yet.

For interface teardown we try to do as many of them as we can on
SI_SUB_INIT_IF, but for some this makes no sense, e.g., when tunnelling
over a higher layer protocol such as IP. In that case the interface
has to go along (or before) the higher layer protocol is shutdown.

Kernel hhooks need to go last on teardown as they may be used at various
higher layers and we cannot remove them before we cleaned up the higher
layers.

For interface teardown there are multiple paths:
(a) a cloned interface is destroyed (inside a VIMAGE or in the base system),
(b) any interface is moved from a virtual network stack to a different
network stack ("vmove"), or (c) a virtual network stack is being shut down.
All code paths go through if_detach_internal() where we, depending on the
vmove flag or the vnet state, make a decision on how much to shut down;
in case we are destroying a VNET the individual protocol layers will
cleanup their own parts thus we cannot do so again for each interface as
we end up with, e.g., double-frees, destroying locks twice or acquiring
already destroyed locks.
When calling into protocol cleanups we equally have to tell them
whether they need to detach upper layer protocols ("ulp") or not
(e.g., in6_ifdetach()).

Provide or enahnce helper functions to do proper cleanup at a protocol
rather than at an interface level.

Approved by:		re (hrs)
Obtained from:		projects/vnet
Reviewed by:		gnn, jhb
Sponsored by:		The FreeBSD Foundation
MFC after:		2 weeks
Differential Revision:	https://reviews.freebsd.org/D6747
2016-06-21 13:48:49 +00:00
adrian
d086e29183 [ath] implement TX queue configuration extensions for the AR9380 HAL.
Among other things, this introduces the idea of DBA-gated queues that
aren't the CABQ.  The TDMA support requires this.

Tested:

* AR9580 (hostap mode)
* AR9380 (sta mode)

Approved by:	re (gjb)
2016-06-20 16:12:27 +00:00
adrian
45b7f9b709 [ath_hal] modify the xmit code to use temporary variables for setting qmisc/dmisc.
This is in preparation for some other TDMA fixes which will hopefully
end with having working TDMA.

But, it does avoid lots of read/modify/writes in the txq setup path.
2016-06-08 16:26:44 +00:00
adrian
39d98e4e31 [ath_hal] add a _S so FSP (frame scheduling policy) can be set/read via SM/MS macros. 2016-06-08 16:21:38 +00:00
adrian
586c614ab0 [ath_hal] correctly initialise the CAB queue default value
* Allow readyTime to just be programmed in directly
* The beacon interval and all of the beacon timing sysctl's are in TU,
  not TSF.  So, we were doing the wrong math on the CAB programming
  in the first place.
2016-06-08 16:10:34 +00:00
adrian
94cde17e1a [ath_hal] initialise ah_beaconInterval when the AP/IBSS/TDMA beacon is setup. 2016-06-08 16:08:05 +00:00
adrian
3564803e32 [ath_hal] add AR9462 (jupiter) RX gain / XLNA programming.
This seems to make 5G work better.

It doesn't fix powersave handling though, that still sees the PHY get
stuck during initial calibration and everything goes pear shaped.
I'll look into that later.

Tested:

* QCAFN222 NIC, STA mode, 5GHz

Obtained from:	Linux ath9k
2016-06-05 05:55:27 +00:00
adrian
e7496fe7db [ath_hal] Add Jupiter 2.1 (AR9462 mac 640.3) support.
Turns out I wasn't even initialising or programming a lot of stuff
for the AR9462 2.1 chip.  Oops.

This mostly gets it working. powersave scan results in some pretty
hilarious NFcal hangs and I don't see beacons reliably.
There are still some xlna gain tables missing that ath9k has; I'll
follow up with some fixes and then see if the QCAFN222 NIC I have
tests this path.

Tested:

* QCAFN222 NIC, STA mode, 2GHz and 5GHz
2016-06-05 02:17:51 +00:00