OpenBSD cvs log

created 2019-04-30T03:43:25Z
begin 2019-03-01T00:00:00Z
end 2019-03-02T00:00:00Z
path src/sys
commits 11

date 2019-03-01T01:46:18Z
author cheloha
files src/sys/sys/mman.h log diff annotate
src/sys/uvm/uvm.h log diff annotate
src/sys/uvm/uvm_extern.h log diff annotate
src/sys/uvm/uvm_map.c log diff annotate
src/sys/uvm/uvm_mmap.c log diff annotate
src/sys/uvm/uvm_unix.c log diff annotate
message New mmap(2) flag: MAP_CONCEAL.

MAP_CONCEAL'd memory is not written to disk in the event of a core dump.
It may grow other qualities in the future.

Wanted by libressl, probably useful elsewhere, too.

Prompted by deraadt@, concept from deraadt@/kettenis@. With input from
deraadt@, cjeker@, kettenis@, otto@, bcook@, matthew@, guenther@, djm@,
and tedu@.

ok otto@ deraadt@

date 2019-03-01T01:58:17Z
author jmatthew
files src/sys/dev/pci/mfii.c log diff annotate
message Background init progress and consistency check progress are reported in
different fields. Use the background init progress when that's the active
task.

lack of progress data noticed by deraadt@
tested on SAS2208 and SAS3508
ok dlg@

date 2019-03-01T04:47:32Z
author dlg
files src/sys/net/if.c log diff annotate
message rework how ifiq_input decides the stack is busy and whether it should drop

previously ifiq_input uses the traditional backpressure or defense
mechanism and counts packets to decide when to shed load by dropping.
currently it ends up waiting for 10240 packets to get queued on the
stack before it would decide to drop packets. this may be ok for
some machines, but for a lot this was too much.

this diff reworks how ifiqs measure how busy the stack is by
introducing an ifiq_pressure counter that is incremented when
ifiq_input is called, and cleared when ifiq_process calls the network
stack to process the queue. if ifiq_input is called multiple times
before ifiq_process in a net taskq runs, ifiq_pressure goes up, and
ifiq_input uses a high value to decide the stack is busy and it
should drop.

i was hoping there would be no performance impact from this change,
but hrvoje popovski notes a slight bump in forwarding performance.
my own testing shows that the ifiq input list length grows to a
fraction of the 10240 it used to get to, which means the maximum
burst of packets through the stack is smoothed out a bit. instead
of big lists of packets followed by big periods of drops, we get
relatively small bursts of packets with smaller gaps where we drop.

the follow-on from this is to make drivers implementing rx ring
moderation to use the return value of ifiq_input to scale the ring
allocation down, allowing the hardware to drop packets so software
doesnt have to.

date 2019-03-01T04:47:33Z
author dlg
files src/sys/net/ifq.c log diff annotate
src/sys/net/ifq.h log diff annotate
message rework how ifiq_input decides the stack is busy and whether it should drop

previously ifiq_input uses the traditional backpressure or defense
mechanism and counts packets to decide when to shed load by dropping.
currently it ends up waiting for 10240 packets to get queued on the
stack before it would decide to drop packets. this may be ok for
some machines, but for a lot this was too much.

this diff reworks how ifiqs measure how busy the stack is by
introducing an ifiq_pressure counter that is incremented when
ifiq_input is called, and cleared when ifiq_process calls the network
stack to process the queue. if ifiq_input is called multiple times
before ifiq_process in a net taskq runs, ifiq_pressure goes up, and
ifiq_input uses a high value to decide the stack is busy and it
should drop.

i was hoping there would be no performance impact from this change,
but hrvoje popovski notes a slight bump in forwarding performance.
my own testing shows that the ifiq input list length grows to a
fraction of the 10240 it used to get to, which means the maximum
burst of packets through the stack is smoothed out a bit. instead
of big lists of packets followed by big periods of drops, we get
relatively small bursts of packets with smaller gaps where we drop.

the follow-on from this is to make drivers implementing rx ring
moderation to use the return value of ifiq_input to scale the ring
allocation down, allowing the hardware to drop packets so software
doesnt have to.

date 2019-03-01T06:15:59Z
author dlg
files src/sys/dev/pci/if_ix.c log diff annotate
message bus_dmamap_sync when we fill the rx ring, not for ever slot on the ring.

date 2019-03-01T07:39:56Z
author stsp
files src/sys/dev/ic/athn.c log diff annotate
message Make athn(4) configure timing of control frames explicitly.
We now update the chip with values for SIFS interval and ACK/RTS/CTS
timeout when configuration changes occur, like Linux ath9k does.
Tested by myself, juanfra@, jmc@ on AR9280 and AR9271.

date 2019-03-01T08:09:00Z
author stsp
files src/sys/net80211/ieee80211_input.c log diff annotate
message Pick up the AP's 11g ERP protection setting properly in 11n client mode.
ok phessler@

date 2019-03-01T08:13:11Z
author stsp
files src/sys/net80211/ieee80211_node.c log diff annotate
src/sys/net80211/ieee80211_node.h log diff annotate
src/sys/net80211/ieee80211_var.h log diff annotate
message Improve handling of HT protection for 'mode 11n' hostap.

Consider the mere presence of HTCAP IEs as indicator of 11n support,
rather than checking advertised Rx MCS. Fixes some devices being
misclassified as 11a/g, causing HT protection to be enabled even
though it is not needed.

Use CTS-to-self frames for HT protection instead of RTS/CTS.

These changes make my athn(4) AR9280 hostap perform much better.

ok phessler@

date 2019-03-01T09:45:40Z
author dlg
files src/sys/dev/pci/if_ixl.c log diff annotate
message use ifiq_input instead of if_input

call if_rxr_livelocked if ifiq_input says to slow down

date 2019-03-01T10:02:44Z
author dlg
files src/sys/dev/pci/if_em.c log diff annotate
src/sys/dev/pci/if_em.h log diff annotate
message use a timeout to refill the rx ring when it's empty.

em had rxr, but didn't use a timeout cos it claimed to generate an
RX overflow interrupt when packets fell off slots in the ring. turns
out that's a lie on at least one chip, so add the timeout like other
drivers.

this was hit by mlarkin@, who had nfs and bufs steal all the packets
and memory for packets from em, which didn't recover after the
memory had been released back to the system.

date 2019-03-01T19:15:59Z
author patrick
files src/sys/dev/usb/xhci.c log diff annotate
message Since ring->index points to the next free slot, once we reach index zero
we know that the last non-link TRB has been written and we can look at
the flags to set the chain bit in the link TRB. Since we will now toggle
the cycle bit on the first TRB of a ring, set it on the ring reset.

Tested by jcs@, jsg@ and visa@
"commit it" jcs@