[comp.unix.wizards] sun-3 client from sun-2 server, followup

bparent@sdcc6.ucsd.EDU (Brian Parent) (07/14/87)

Thanks for all the suggestions.  Most of all, thanks to Mark Plotnick who
writes:

>If your sun-2 is using a 3com ethernet controller,
>the sun-3 will flood it with packets faster than it can receive them.
>use adb to patch the window size, ndclient_maxpacks, in
>/pub.MC68020/vmunix to 1 or 2  (it's 6 by default).  or use an ie
>controller in the sun-2.

This works.  I'm currently using 2 and in ~4 days of use have seen not one
message complaining about the nd disk server not responding.

Let me add some details of the patching procedure for those not so familiar
with kernel patching (myself included). (Wizards, please excuse the obvious.)

To get the address of the variable in the kernel, I used:
	% nm vmunix | grep maxpacks
	0f061dc8 D

Then adb the kernel:
	% adb -w vmunix
ask for the value at that address:
	0f061dc8?D
	_ndclient_maxpacks:
	_ndclient_maxpacks:		6
change the value:
	.?W 2
	_ndclient_maxpacks:		0x6		=	0x2
check value again:
	.?D
	_ndclient_maxpacks:
	_ndclient_maxpacks:		2
and you're done.

Again, I'm thankful for your collective help.

(Recently, I've found out that this is a known bug among the folks at Sun, 
but their database pointed to changing Maxpacks for the server via nd.local
commands, not the ndclient_maxpacks variable in the client's kernel.  After
talking to Sun software support, I'm sure they'll update their database.)

-Brian Parent

hedrick@topaz.rutgers.edu (Charles Hedrick) (07/14/87)

I thought that in current releases of Sun OS, the max packet size is
set in /etc/nd.local.  It's an extra argument that can go at the end
of the line.  Clearly it's better to do it just for the one host that
needs it.  I didn't think you needed to patch the kernel.  Am I wrong?

bparent@sdcc6.ucsd.EDU (Brian Parent) (07/16/87)

In article <13315@topaz.rutgers.edu> hedrick@topaz.rutgers.edu (Charles Hedrick) writes:
>I thought that in current releases of Sun OS, the max packet size is
>set in /etc/nd.local.  It's an extra argument that can go at the end
>of the line.  Clearly it's better to do it just for the one host that
>needs it.  I didn't think you needed to patch the kernel.  Am I wrong?

Yes, the max packet size can be set for the *server's* kernel using
/etc/nd.local.  However, this is not enough to keep the faster sun-3 client
from drowning the sun-2's 3comm controller. (It doesn't work like hardware
flow control as I also assumed at the start of my problem.)

You definitely need to patch the *client's* kernel so that it doesn't send
too many packets too quickly.