- 13 Sep, 2017 3 commits
-
-
Stephen Hurd authored
by Matt Macy as well as other changes which he has accepted via pull request to his github repo at https://github.com/mattmacy/networking/ This should bring -CURRENT and the github repo into close enough sync to allow small feature branches rather than a large chain of interdependant patches being developed out of tree. The reset of the synchronization should be able to be completed on github by splitting the remaining changes that are not yet ready into short feature branches for later review as smaller commits. Here is a summary of changes included in this patch: 1) More checks when INVARIANTS are enabled for eariler problem detection 2) Group Task Queue cleanups - Fix use of duplicate shortdesc for gtaskqueue malloc type. Some interfaces such as memguard(9) use the short description to identify malloc types, so duplicates should be avoided. 3) Allow gtaskqueues to use ithreads in addition to taskqueues - In some cases, this can improve performance 4) Better logging when taskqgroup_attach*() fails to set interrupt affinity. 5) Do not start gtaskqueues until they're needed 6) Have mp_ring enqueue function enter the ABDICATED rather than BUSY state. This moves the TX to the gtaskq and allows processing to continue faster as well as make TX batching more likely. 7) Add an ift_txd_errata function to struct if_txrx. This allows drivers to inspect/modify mbufs before transmission. 8) Add a new IFLIB_NEED_ZERO_CSUM for drivers to indicate they need checksums zeroed for checksum offload to work. This avoids modifying packet data in the TX path when possible. 9) Use ithreads for iflib I/O instead of taskqueues 10) Clean up ioctl and support async ioctl functions 11) Prefetch two cachlines from each mbuf instead of one up to 128B. We often need to parse packet header info beyond 64B. 12) Fix potential memory corruption due to fence post error in bit_nclear() usage. 13) Improved hang detection and handling 14) If the packet is smaller than MTU, disable the TSO flags. This avoids extra packet parsing when not needed. 15) Move TCP header parsing inside the IS_TSO?() test. This avoids extra packet parsing when not needed. 16) Pass chains of mbufs that are not consumed by lro to if_input() rather call if_input() for each mbuf. 17) Re-arrange packet header loads to get as much work as possible done before a cache stall. 18) Lock the context when calling IFDI_ATTACH_PRE()/IFDI_ATTACH_POST()/ IFDI_DETACH(); 19) Attempt to distribute RX/TX tasks across cores more sensibly, especially when RX and TX share an interrupt. RX will attempt to take the first threads on a core, and TX will attempt to take successive threads. 20) Allow iflib_softirq_alloc_generic() to request affinity to the same cpus an interrupt has affinity with. This allows TX queues to ensure they are serviced by the socket the device is on. 21) Add new iflib sysctls to net.iflib: - timer_int - interval at which to run per-queue timers in ticks - force_busdma 22) Add new per-device iflib sysctls to dev.X.Y.iflib - rx_budget allows tuning the batch size on the RX path - watchdog_events Count of watchdog events seen since load 23) Fix error where netmap_rxq_init() could get called before IFDI_INIT() 24) e1000: Fixed version of r323008: post-cold sleep instead of DELAY when waiting for firmware - After interrupts are enabled, convert all waits to sleeps - Eliminates e1000 software/firmware synchronization busy waits after startup 25) e1000: Remove special case for budget=1 in em_txrx.c - Premature optimization which may actually be incorrect with multi-segment packets 26) e1000: Split out TX interrupt rather than share an interrupt for RX and TX. - Allows better performance by keeping RX and TX paths separate 27) e1000: Separate igb from em code where suitable Much easier to understand separate functions and "if (is_igb)" than previous tests like "if (reg_icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC))" #blamebruno Reviewed by: sbruno Approved by: sbruno (mentor) Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D12235
-
Navdeep Parhar authored
MFC after: 1 week Sponsored by: Chelsio Communications
-
Matt Joras authored
Normally after receiving a packet, a vlan(4) interface sends the packet back through its parent interface's rx routine so that it can be processed as an untagged frame. It does this by using the parent's ifp->if_input. This is incompatible with netmap(4), which replaces the vlan(4) interface's if_input with a netmap(4) hook. Fix this by using the vlan(4) interface's ifp instead of the parent's directly. Reported by: Harry Schmalzbauer <freebsd@omnilan.de> Reviewed by: rstone Approved by: rstone (mentor) MFC after: 3 days Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D12191
-
- 12 Sep, 2017 28 commits
-
-
Sean Bruno authored
Submitted by: imp
-
Warner Losh authored
The cam_iosched_ticker() can't be scheduled more than once per tick. Some limiters depend on quanta matching the number of calls per second to enforce the proper limits. Limit the quanta to no faster than 1 per clock tick. This fixes some features when running in VMs where the default HZ is 100. PR: 221953 Obtained from: ElectroBSD Differential Revision: https://reviews.freebsd.org/D12337 Submitted by: Fabian Keil
-
Sean Bruno authored
For now, limit to amd64 only.
-
Sean Bruno authored
Intelligent NIC driver. The submission conconsists of firmware binary file and driver sources. Submitted by: pkanneganti@cavium.com (Prasad V Kanneganti) Relnotes: Yes Sponsored by: Cavium Networks Differential Revision: https://reviews.freebsd.org/D11927
-
Ravi Pokala authored
warning about a filesystem which doesn't have a mountpoint. Presumably, the person who wrote the install script knew what they were doing. Submitted by: Brian Mueller <bmueller@panasas.com> MFC after: 1 month Sponsored by: Panasas Differential Revision: https://reviews.freebsd.org/D12346
-
Michael Tuexen authored
-
Ryan Stone authored
If the iovctl command was invoked with only the -C flag, the user would receive a message claiming that they needed to also supply either the -d flag or the -f flag. However, in the case of the -C mode, only the -f flag is acceptable. Correct this error message in this case. PR: 222050 Submitted by: Heinz N. Gies Reported by: Heinz N. Gies MFC after: 1 week
-
Michael Tuexen authored
-
Michael Tuexen authored
Sponsored by: Netflix, Inc.
-
Alan Somers authored
It's awkward to have spaces in CAM device serial numbers. That leads to such things as device nodes named "/dev/diskid/MYSERIAL%20%20%201". Better to replace the spaces with "0"s. This change only affects the default serial numbers for users who don't provide their own. Reviewed by: ken, mav MFC after: Never Relnotes: Yes Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D12263
-
Adriaan de Groot authored
Approved by: tcberner (mentor)
-
John Baldwin authored
Newer binutils supports extensions to the MIPS ABI for non-PIC code that is used when compiling O32 binaries with clang 5 (but not used for N64 oddly enough). These extensions require support for R_MIPS_COPY relocations as well as a second PLT GOT using R_MIPS_JUMP_SLOT relocations. For R_MIPS_COPY, use the same approach as on other architectures where fixups are deferred to the MD do_copy_relocations. The additional PLT GOT for jump slots is located in a .got.plt section which is identified by a DT_MIPS_PLTGOT dynamic entry. This GOT also requires fixups for the first two GOT entries just as the normal GOT. However, the entry point for this second GOT uses a different calling convention. Rather than passing an offset into the GOT, it passes an offset into the .rel.plt section. This requires a second entry point (_rtld_pltbind_start) which calls the normal _rtld_bind() rather than _mips_rtld_bind(). This also means providing a real version of reloc_jmpslot() which is used by _rtld_bind(). In addition, add real implementions of reloc_plt() and reloc_jmpslots() which walk .rel.plt handling R_MIPS_JUMP_SLOT relocations. Reviewed by: kib Sponsored by: DARPA / AFRL Differential Revision: https://reviews.freebsd.org/D12326
-
Warner Losh authored
On hard-float 32-bit arm platforms, always search for the soft float binaries in the alternative locations. Sponsored by: Netflix Differential Review: https://reviews.freebsd.org/D12274 MFC After: 1 week
-
Li-Wen Hsu authored
We have D definitions for the named values in socket.h after r323253. Remove them in test script to prevent compiling failure. Reviewed by: markj, gnn Differential Revision: https://reviews.freebsd.org/D12334
-
Mark Johnston authored
PR: 199810 Reported by: Jukka A. Ukkonen <jau789@gmail.com> MFC after: 3 days
-
Toomas Soome authored
In case of error from disk_open(), we should clean up properly. Reviewed by: allanjude, imp Differential Revision: https://reviews.freebsd.org/D12340
-
Toomas Soome authored
The memory can be leaked if we will have pkt set and will get an error during tftp_open() processing. Differential Revision: https://reviews.freebsd.org/D12202
-
Toomas Soome authored
The zfsonlinux feature large_dnode is not yet supported by the loader. Reviewed by: avg, allanjude Differential Revision: https://reviews.freebsd.org/D12288
-
Michael Tuexen authored
Choose the command line options to be consistent with the ones of sockstat. Sponsored by: Netflix, Inc.
-
Michael Tuexen authored
Sponsored by: Netflix, Inc.
-
Andriy Gapon authored
MFC after: 13 days X-MFC with: r323479
-
Olivier Houchard authored
"probe" method of those drivers to mean we're on e TI SoC. Introduce a new function, ti_soc_is_supported(), and use it to be sure we're really a TI system. PR: 222250
-
Andriy Gapon authored
The uncovered vnode is possible because there is no guarantee that its hold count would go to zero (and it would be inactivated and reclaimed) immediately after a covering filesystem is unmounted. So, such a vnode should be expected and it is possible to re-use it without any trouble. MFC after: 3 weeks Sponsored by: Panzura
-
Andriy Gapon authored
None of the tagged functions had unused parameters. MFC after: 1 week
-
Andriy Gapon authored
This is a FreeBSD specific feature. MFC after: 3 weeks Sponsored by: Panzura
-
Andriy Gapon authored
The only consumer of zfs_get_vfs, zfs_unmount_snap, does not need the filesystem to be busy, it just need a reference that it can pass to dounmount. Also, previously the code was racy as it unbusied the filesystem before taking a reference on it. Now the code should be simpler and safer. MFC after: 2 weeks Sponsored by: Panzura
-
Andriy Gapon authored
MFC after: 2 weeks Sponsored by: Panzura
-
Cy Schubert authored
MFC after: 3 days
-
- 11 Sep, 2017 9 commits
-
-
Ian Lepore authored
stop, read, and write methods. Some controllers don't implement these individual operations and have only a transfer method. In that case, we should return an indication that the device is present but doesn't support the method, as opposed to the kobj default error ENXIO which makes it look like the whole device is missing. Userland tools such as i2c(8) can use the differing return values to switch between the two different i2c IO mechanisms.
-
John Baldwin authored
This allows debuggers to unwind back into the caller when stopped in the runtime linker. Sponsored by: DARPA / AFRL
-
Ian Lepore authored
The existing scan code is based on sending an i2c START condition and if there is no error it assumes there is a device at that i2c address. Some i2c controllers don't support sending individual start/stop signals on the bus, they can only perform complete data transfers with start/stop handled in the silicon. This adds a fallback mechanism that attempts to read a single byte from each i2c address. It's less reliable than looking for an an ACK repsonse to a start, because some devices will NAK an attempt to read that isn't preceeded by a write of a register address. Writing to devices to probe them is too dangerous to even consider. The user is told that a less-reliable scan is being done, so even if the read-scan comes up empty too, it's still a vast improvement over the old situation where it would just claim there were no devices on the bus even though the devices were there and working fine. If the i2c controller responds with a proper ENODEV (device doesn't support operation) or an almost-proper EOPNOTSUPP, the START/STOP scan is switched to a read-scan right away. Most controllers respond with ENXIO or EIO if they don't support START/STOP, so no quick-out is available. For those, if a scan of all 127 addresses and come up empty, the scan is re-done using the read method. Reported by: Maxim Filimonov <che@bein.link>
-
Conrad Meyer authored
They apply to all AMD MCAi_MISC0 registers, not just MCA4 (NB). No functional change. Sponsored by: Dell EMC Isilon
-
Conrad Meyer authored
On AMD, the MCG_CAP feature bit is reserved -- not explicitly zero. Do not use it to determine CMCI support. Reviewed by: avg, markj Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D12320
-
Marcin Wojtas authored
Commit r323359 introduced new Marvell UART controller driver and by mistake it broke correct order in the Makefile. Fix this. Reported by: emaste
-
Ilya Bakulin authored
Approved by: imp (mentor) Differential Revision: https://reviews.freebsd.org/D12114
-
Marcin Wojtas authored
Suggested by: emaste
-
Konstantin Belousov authored
Sponsored by: The FreeBSD Foundation MFC after: 11 days
-