genode/repos/os/include
Martin Stein e32157e21b nic_router: packet allocation w/o exceptions
In overload situations, i.e. when a sender fills up the entire buffer, we land
in situations where the sender receives an ack_avail signal, releases one
packet, allocates and sends a packet and fails to allocate a second packet.
This is especially relevant if the receiver does not batch ack_avail signals
(such as vfs_lwip). In those ping-pong scheduling scenarios, the overhead from
catching the Packet_alloc_failed exception becomes significant. In case of the
NIC router, we will land in an overload situation if the sender is faster than
the receiver. The packet buffer will be filled up at some point and the NIC
router starts to drop packets. For every dropped packet, we currently have to
catch the Packet_alloc_failed exception.

This commit adds a new method alloc_packet_attempt to Packet_stream_source that
has almost the same signature as the older alloc_packet method but returns
an Attempt<Packet_descriptor, Alloc_packet_error> object. As the method already
used the allocator back end exception-less, changes on lower levels were not
needed. Furthermore, the NIC router was modified to use the new exception-less
alloc_packet_attempt instead of alloc_packet.

Ref 
2022-08-10 13:33:03 +02:00
..
audio_in_session Audio_in::Stream: add 'queued()' function 2022-01-19 12:38:12 +01:00
audio_out_session Audio_out::Stream: initialize members 2022-01-19 12:38:12 +01:00
blit os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
block Remove unneeded session_size check 2022-08-10 13:32:57 +02:00
block_session os: simplify split block operations 2022-04-13 14:08:15 +02:00
capture_session Capture session interface 2020-07-13 11:33:13 +02:00
decorator os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
event_session event_session: make Session_client::Batch abstract 2020-08-25 11:49:43 +02:00
file_system file_system/util.h: remove packet-stream helpers 2022-02-15 10:11:10 +01:00
file_system_session Consistent spelling of "writeable" 2022-02-15 10:23:58 +01:00
framebuffer_session Change pixel format to 32 bits per pixel 2020-06-29 14:22:29 +02:00
genode_c_api genode_c_api: key-press/release and relative-motion events 2022-08-10 13:33:00 +02:00
gpio os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
gpio_session base/os: remove deprecated APIs 2019-02-26 14:44:15 +01:00
gpu gpu: add information for lima driver 2022-08-10 13:33:00 +02:00
gpu_session gpu_session: add PPGTT address query function 2022-08-10 13:33:00 +02:00
gui_session Change pixel format to 32 bits per pixel 2020-06-29 14:22:29 +02:00
i2c_session os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
init Adaptation to init refactoring 2017-03-24 16:19:56 +01:00
input os: Input::Event:Axis event type 2022-02-15 10:17:28 +01:00
input_session base/os: remove deprecated APIs 2019-02-26 14:44:15 +01:00
ldso Adjust file headers to refer to the AGPLv3 2017-02-28 12:59:29 +01:00
legacy/x86 legacy_platform_drv: ACPI devices in configuration 2022-08-10 13:33:00 +02:00
loader_session Rename 'Nitpicker' namespace to 'Gui' 2020-06-22 09:39:40 +02:00
mixer os: avoid using deprecated APIs 2019-01-30 13:49:54 +01:00
net nic_router: incremental L4 checksum updates 2022-08-10 13:33:02 +02:00
nic Remove unused Nic::Root implementation (nic/root.h) 2022-05-25 12:19:31 +02:00
nic_session base/os: remove deprecated APIs 2019-02-26 14:44:15 +01:00
nitpicker_gfx os: Don't use char as array subscript. 2022-02-15 10:23:58 +01:00
os nic_router: packet allocation w/o exceptions 2022-08-10 13:33:03 +02:00
packet_stream_rx os: remove blocking semantics from packet stream 2022-02-15 10:10:03 +01:00
packet_stream_tx os: remove blocking semantics from packet stream 2022-02-15 10:10:03 +01:00
pci pci: extend Pci utilities for bridge drivers 2022-05-25 12:22:10 +02:00
pin_control_session os: Pin_control and Pin_state session interfaces 2021-11-29 15:10:52 +01:00
pin_state_session os: Pin_control and Pin_state session interfaces 2021-11-29 15:10:52 +01:00
platform_session platform_drv: wait for device's availability 2022-05-25 12:19:32 +02:00
pointer os: avoid garbage warnings in app/painter 2019-01-07 12:25:45 +01:00
ram_fs os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
report_rom Remove unneeded session_size check 2022-08-10 13:32:57 +02:00
report_session base/os: remove deprecated APIs 2019-02-26 14:44:15 +01:00
rtc_session rtc: extended session with set-signal 2019-08-21 12:37:01 +02:00
sandbox separate sandbox api from os 2021-06-25 11:41:45 +02:00
smbios os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
spec os: deprecate platform API for x86, rpi, imx53 2022-01-19 12:38:12 +01:00
terminal os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
terminal_session os: use Mutex/Blockade 2020-04-17 12:40:12 +02:00
trace trace_buffer: only iterate after initialization 2022-05-25 12:23:04 +02:00
uart_session os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
uplink_session os: introduce new "Uplink" session 2021-01-25 13:48:09 +01:00
usb os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
usb_session os: refine default USB session quota 2022-04-13 08:07:57 +02:00
util os: add util/formatted_output.h utilities 2022-04-13 08:07:57 +02:00
vfs xml_node: support backslash as attribute value 2022-02-21 15:44:22 +01:00
virtio Convert virtio to use Platform::Session::dma_addr 2022-02-15 10:17:28 +01:00