Hi,

This patch fix a few bugs in efinet.

It also change the tftp block size from 1024 to 8192, which would
result in HUGE speed difference. In my previous testing, the larger
the block size, the faster the speed. It can reach up to 60-70MB/s in
1Gb ethernet when block size is about 60K, therefore it would be a
good idea to allow user to configure this parameter. The native tftp
service in UEFI use a default block size of 8192.

-- 
Best wishes
Bean
=== modified file 'grub-core/net/drivers/efi/efinet.c'
--- grub-core/net/drivers/efi/efinet.c  2012-03-10 19:41:28 +0000
+++ grub-core/net/drivers/efi/efinet.c  2012-04-29 08:12:12 +0000
@@ -63,14 +63,13 @@
   grub_efi_uintn_t bufsize = 1536;
   struct grub_net_buff *nb;
 
-  nb = grub_netbuff_alloc (bufsize);
+  nb = grub_netbuff_alloc (bufsize + 2);
   if (!nb)
     return NULL;
 
   /* Reserve 2 bytes so that 2 + 14/18 bytes of ethernet header is divisible
      by 4. So that IP header is aligned on 4 bytes. */
-  grub_netbuff_reserve (nb, 2);
-  if (!nb)
+  if (grub_netbuff_reserve (nb, 2))
     {
       grub_netbuff_free (nb);
       return NULL;

=== modified file 'grub-core/net/tftp.c'
--- grub-core/net/tftp.c        2012-02-12 18:11:06 +0000
+++ grub-core/net/tftp.c        2012-04-29 08:10:29 +0000
@@ -320,9 +320,9 @@
   rrqlen += grub_strlen ("blksize") + 1;
   rrq += grub_strlen ("blksize") + 1;
 
-  grub_strcpy (rrq, "1024");
-  rrqlen += grub_strlen ("1024") + 1;
-  rrq += grub_strlen ("1024") + 1;
+  grub_strcpy (rrq, "8192");
+  rrqlen += grub_strlen ("8192") + 1;
+  rrq += grub_strlen ("8192") + 1;
 
   grub_strcpy (rrq, "tsize");
   rrqlen += grub_strlen ("tsize") + 1;

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to