[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 */