[comp.sys.ibm.pc.rt] Token ring fix

brunner@bullhead.uucp (03/02/90)

Subject: Token ring fix (all-routes bit set)
Fix: /sys/caif/if_lan.c

Description:
	In multipath token rings, broadcasts (typically arps) having
	the all-routes bit set in the rip field of the link-level header
	results in redundent flooding during route discovery. In very
	large multipath rings this may cause bridges to fail. Using
	limited broadcast (implemented in this patch) the total number
	of packets generated during route discovery is reduced.

Fix:	Change directories to /sys/caif and apply the following
	patch, e.g.,
	
		patch < this_file
			

*** if_lan.c.orig	Fri Dec  9 14:50:39 1988
--- if_lan.c.fix	Thu Feb  8 15:14:29 1990
***************
*** 300,306 ****
  		/* set up lan header areas */
  		lns->rp[i]->d_parm[0].d_cnt =
  			(((short)(sizeof(struct mac_hdr)  +
! 			sizeof(struct llc_hdr) + LAN_MTU)) &
  			(~LAN_CHAIN));
  		lns->rp[i]->d_parm[0].d_haddr = DMA_HI_ADDR(tcw);
  		lns->rp[i]->d_parm[0].d_laddr = DMA_LO_ADDR(lns->lns_rdata[i], tcw);
--- 300,306 ----
  		/* set up lan header areas */
  		lns->rp[i]->d_parm[0].d_cnt =
  			(((short)(sizeof(struct mac_hdr)  +
! 			sizeof(struct llc_hdr) + LAN_MTU +3)) &
  			(~LAN_CHAIN));
  		lns->rp[i]->d_parm[0].d_haddr = DMA_HI_ADDR(tcw);
  		lns->rp[i]->d_parm[0].d_laddr = DMA_LO_ADDR(lns->lns_rdata[i], tcw);
***************
*** 1030,1035 ****
--- 1030,1036 ----
  					| LAN_RCF_BROADCAST; /* all rings broadcast */
  			}
  		}
+ 			printf("after local masking rcf=0x%x\n", rcf);
  		break;
  #endif
  	case AF_UNSPEC:

Eric Brunner, Consultant, IBM AWD Palo Alto	(415) 855-4486
inet: brunner@monet.berkeley.edu
uucp: uunet!ibmsupt!brunner