Comment 9 for bug 1437353

Revision history for this message
Matt Dirba (5qxm) wrote :

I checked out the latest version of grub, built an image using grub-mknetdir, and the ARP storm is from the efinet driver. The
code is stuck in the following loop in net/drivers/efi/efinet.c lines 43 through 66. efi_call_3 always returns a txbuf that does not match dev->txbuf, and eif_call_7 is repeatedly called until the limit_time has been exceeded. Any thoughts from the grub team on what could be the problem or what I should do to continue to debug?

   while (1)
      {
        txbuf = NULL;
        st = efi_call_3 (net->get_status, net, 0, &txbuf);
        if (st != GRUB_EFI_SUCCESS)
          return grub_error (GRUB_ERR_IO,
                             N_("couldn't send network packet"));
        if (txbuf == dev->txbuf)
          {
            dev->txbusy = 0;
            break;
          }
        if (txbuf)
          {
            st = efi_call_7 (net->transmit, net, 0, dev->last_pkt_size,
                             dev->txbuf, NULL, NULL, NULL);
            if (st != GRUB_EFI_SUCCESS)
              return grub_error (GRUB_ERR_IO,
                                 N_("couldn't send network packet"));
          }
        if (limit_time < grub_get_time_ms ())
          return grub_error (GRUB_ERR_TIMEOUT,
                             N_("couldn't send network packet"));
      }