card->flags = 0;
shortname = find_alias (alias->path);
card->name = grub_xasprintf ("ofnet_%s", shortname ? : alias->path);
+ card->idle_poll_delay_ms = 1;
grub_free (shortname);
card->driver = &ofdriver;
if (!nb)
{
grub_print_error ();
+ card->last_poll = grub_get_time_ms ();
return;
}
if (actual < 0)
{
grub_netbuff_free (nb);
+ card->last_poll = grub_get_time_ms ();
break;
}
grub_net_recv_ethernet_packet (nb, card);
{
struct grub_net_card *card;
FOR_NET_CARDS (card)
- receive_packets (card);
+ {
+ grub_uint64_t ctime = grub_get_time_ms ();
+
+ if (ctime < card->last_poll
+ || ctime >= card->last_poll + card->idle_poll_delay_ms)
+ receive_packets (card);
+ }
}
/* Read from the packets list*/