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
This commit is contained in:
parent
b2947d2187
commit
15a379894a
|
@ -88,21 +88,20 @@ void Net::Packet_handler::_ready_to_ack(unsigned num)
|
||||||
void Net::Packet_handler::_packet_avail(unsigned)
|
void Net::Packet_handler::_packet_avail(unsigned)
|
||||||
{
|
{
|
||||||
using namespace Net;
|
using namespace Net;
|
||||||
enum { MAX_PACKETS = 50 };
|
enum { MAX_PACKETS = 20 };
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
while(Nic::n()->rx()->packet_avail() &&
|
while(Nic::n()->rx()->packet_avail() &&
|
||||||
Nic::n()->rx()->ready_to_ack() &&
|
Nic::n()->rx()->ready_to_ack() &&
|
||||||
++count < MAX_PACKETS) {
|
count++ < MAX_PACKETS)
|
||||||
|
{
|
||||||
Packet_descriptor p = Nic::n()->rx()->get_packet();
|
Packet_descriptor p = Nic::n()->rx()->get_packet();
|
||||||
net_driver_rx(Net::Nic::n()->rx()->packet_content(p), p.size());
|
net_driver_rx(Net::Nic::n()->rx()->packet_content(p), p.size());
|
||||||
Nic::n()->rx()->acknowledge_packet(p);
|
Nic::n()->rx()->acknowledge_packet(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == MAX_PACKETS)
|
if (Nic::n()->rx()->packet_avail())
|
||||||
_sink_submit.submit(1);
|
Genode::Signal_transmitter(_sink_submit).submit();
|
||||||
//Genode::Signal_transmitter(_sink_submit).submit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -126,8 +126,7 @@ class Net::Socketcall : public Genode::Signal_dispatcher_base,
|
||||||
|
|
||||||
void _submit_and_block()
|
void _submit_and_block()
|
||||||
{
|
{
|
||||||
//_signal.submit(); /* global submit */
|
_signal.submit(); /* global submit */
|
||||||
submit(1); /* local submit */
|
|
||||||
_block.down();
|
_block.down();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue