Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Jul 1995 11:05:36 +0600 (GMT+0600)
From:      "Serge A. Babkin" <babkin@hq.icb.chel.su>
To:        jkh@freefall.cdrom.com (Jordan K. Hubbard)
Cc:        hackers@freebsd.org
Subject:   3c509 multicast fix
Message-ID:  <199507110505.LAA09308@hq.icb.chel.su>
In-Reply-To: <3401.804920412@freefall.cdrom.com> from "Jordan K. Hubbard" at Jul 4, 95 10:00:12 pm

next in thread | previous in thread | raw e-mail | index | archive | help
I have tested this patch with gated and the multicast support seems
to work. Commit it please if nobody done the multicast support yet
(I don't have -currnet).

------------------------------- cut here -------------------------------
*** if_ep.c	1995/05/19 05:36:10
--- if_ep.c	1995/06/22 11:13:32
***************
*** 38,45 ****
   */
  
  /*
-  *  $Id: if_ep.c,v 1.16 1995/05/19 05:36:10 root Exp $
-  *
   *  Promiscuous mode added and interrupt logic slightly changed
   *  to reduce the number of adapter failures. Transceiver select
   *  logic changed to use value from EEPROM. Autoconfiguration
--- 38,43 ----
***************
*** 439,445 ****
      ifp->if_unit = is->id_unit;
      ifp->if_name = "ep";
      ifp->if_mtu = ETHERMTU;
!     ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_NOTRAILERS;
      ifp->if_init = epinit;
      ifp->if_output = ether_output;
      ifp->if_start = epstart;
--- 437,444 ----
      ifp->if_unit = is->id_unit;
      ifp->if_name = "ep";
      ifp->if_mtu = ETHERMTU;
!     ifp->if_flags = IFF_BROADCAST | IFF_MULTICAST | 
! 	IFF_SIMPLEX | IFF_NOTRAILERS;
      ifp->if_init = epinit;
      ifp->if_output = ether_output;
      ifp->if_start = epstart;
***************
*** 552,563 ****
  
      outw(BASE + EP_COMMAND, SET_INTR_MASK | S_5_INTS);
  
! 	if(ifp->if_flags & IFF_PROMISC)
! 		outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL |
! 		 FIL_GROUP | FIL_BRDCST | FIL_ALL);
! 	else
! 		outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL |
! 		 FIL_GROUP | FIL_BRDCST);
  
  	 /*
  	  * S.B.
--- 551,562 ----
  
      outw(BASE + EP_COMMAND, SET_INTR_MASK | S_5_INTS);
  
!     if(ifp->if_flags & IFF_PROMISC)
! 	outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL |
! 	 FIL_GROUP | FIL_BRDCST | FIL_ALL);
!     else
! 	outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL |
! 	 FIL_GROUP | FIL_BRDCST);
  
  	 /*
  	  * S.B.
***************
*** 1191,1196 ****
--- 1190,1196 ----
  	}
  
  	/* NOTREACHED */
+ #if 0
  
  	if (ifp->if_flags & IFF_UP && (ifp->if_flags & IFF_RUNNING) == 0)
  	    epinit(ifp->if_unit);
***************
*** 1203,1208 ****
--- 1203,1209 ----
  	    ep_frst(F_PROMISC);
  	    epinit(ifp->if_unit);
  	    }
+ #endif
  
  	break;
  #ifdef notdef
***************
*** 1222,1228 ****
--- 1223,1240 ----
  			ifp->if_mtu = ifr->ifr_mtu; 
  		}
  		break;  
+ 	case SIOCADDMULTI:
+ 	case SIOCDELMULTI:
+ 	    error= (cmd==SIOCADDMULTI) ?
+ 		ether_addmulti(ifr, &sc->arpcom) :
+ 		ether_delmulti(ifr, &sc->arpcom);
  
+ 	    if(error=ENETRESET) {
+ 		epinit(ifp->if_unit);
+ 		error=0;
+ 	    }
+ 
+ 	    break;
        default:
  		error = EINVAL;
      }
------------------------------- cut here -------------------------------

		Serge Babkin

! (babkin@hq.icb.chel.su)
! Headquarter of Joint Stock Commercial Bank "Chelindbank"
! Chelyabinsk, Russia



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199507110505.LAA09308>