[OpenAFS-devel] RX_MAX_FRAGS (yet again)

Nickolai Zeldovich kolya@MIT.EDU
Sat, 29 Sep 2001 02:19:31 -0400


>                   Could you try the patch below and see if you
> get a large ifMTU/maxMTU on the Linux box with RX_MAX_FRAGS=4?

Oops, I forgot part of the patch..  The MTU's weren't being
htonl()'ed properly in some places.  I don't know why it's
being converted to network format in the first place, but
there are more places that assume network format than places
that assume host format :-)

-- kolya

--- src/rx/rx_getaddr.c	2001/09/13 23:19:21	1.10
+++ src/rx/rx_getaddr.c	2001/09/29 06:06:25
@@ -303,9 +303,9 @@
                     ifr.ifr_addr.sa_family=AF_INET;
                     strncpy(ifr.ifr_name, sdl->sdl_data, sdl->sdl_nlen);
                     if (ioctl(s, SIOCGIFMTU, (caddr_t)&ifr) < 0)
-                         mtuBuffer[count]=1500;
+                         mtuBuffer[count]=htonl(1500);
                     else
-                         mtuBuffer[count]=ifr.ifr_mtu;
+                         mtuBuffer[count]=htonl(ifr.ifr_mtu);
                     count++;
                }
                addrcount--;
@@ -464,14 +464,14 @@
 	 if ( ioctl(s, SIOCGIFMTU, (caddr_t)ifr) < 0) {
 	    perror("SIOCGIFMTU");
 	 } else {
-	    mtuBuffer[count] = ifr->ifr_metric;
+	    mtuBuffer[count] = htonl(ifr->ifr_metric);
 	 }
 #endif /* SIOCGIFMTU */
 #ifdef SIOCRIPMTU
 	 if ( ioctl(s, SIOCRIPMTU, (caddr_t)ifr) < 0) {
 	    perror("SIOCRIPMTU");
 	 } else {
-	    mtuBuffer[count] = ifr->ifr_metric;
+	    mtuBuffer[count] = htonl(ifr->ifr_metric);
 	 }
 #endif /* SIOCRIPMTU */