Browse Source

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
devel
Sebastian Sumpf 8 years ago committed by Christian Helmuth
parent
commit
15a379894a
  1. 11
      repos/dde_linux/src/lib/lxip/nic_handler.cc
  2. 3
      repos/dde_linux/src/lib/lxip/socket_handler.cc

11
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();
}

3
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();
}

Loading…
Cancel
Save