From 15a379894a7c83fa6e6c5f6b80c90b7de26c0f57 Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Mon, 19 Jan 2015 15:51:55 +0100 Subject: [PATCH] lxip: Fix on OKL4 This has been broken for a while now. Use correct (global) signal transmission, do not use local signal transmission, as signals seems to get lost. Issue #1310 --- repos/dde_linux/src/lib/lxip/nic_handler.cc | 11 +++++------ repos/dde_linux/src/lib/lxip/socket_handler.cc | 3 +-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/repos/dde_linux/src/lib/lxip/nic_handler.cc b/repos/dde_linux/src/lib/lxip/nic_handler.cc index 52c9953f7..b9017e688 100644 --- a/repos/dde_linux/src/lib/lxip/nic_handler.cc +++ b/repos/dde_linux/src/lib/lxip/nic_handler.cc @@ -88,21 +88,20 @@ void Net::Packet_handler::_ready_to_ack(unsigned num) void Net::Packet_handler::_packet_avail(unsigned) { using namespace Net; - enum { MAX_PACKETS = 50 }; + enum { MAX_PACKETS = 20 }; int count = 0; while(Nic::n()->rx()->packet_avail() && Nic::n()->rx()->ready_to_ack() && - ++count < MAX_PACKETS) { - + count++ < MAX_PACKETS) + { Packet_descriptor p = Nic::n()->rx()->get_packet(); net_driver_rx(Net::Nic::n()->rx()->packet_content(p), p.size()); Nic::n()->rx()->acknowledge_packet(p); } - if (count == MAX_PACKETS) - _sink_submit.submit(1); - //Genode::Signal_transmitter(_sink_submit).submit(); + if (Nic::n()->rx()->packet_avail()) + Genode::Signal_transmitter(_sink_submit).submit(); } diff --git a/repos/dde_linux/src/lib/lxip/socket_handler.cc b/repos/dde_linux/src/lib/lxip/socket_handler.cc index 44cac92fd..ae224ccb4 100644 --- a/repos/dde_linux/src/lib/lxip/socket_handler.cc +++ b/repos/dde_linux/src/lib/lxip/socket_handler.cc @@ -126,8 +126,7 @@ class Net::Socketcall : public Genode::Signal_dispatcher_base, void _submit_and_block() { - //_signal.submit(); /* global submit */ - submit(1); /* local submit */ + _signal.submit(); /* global submit */ _block.down(); }