Browse Source

[undi] Ask for promiscuous packet reception when using UNDI driver

We never set up specific multicast filters; native drivers will ask
the card to receive all multicast packets.  The only way to achieve
this via the UNDI API is to enable promiscuous mode.
tags/v0.9.4
Michael Brown 16 years ago
parent
commit
798ddf884f
1 changed files with 6 additions and 2 deletions
  1. 6
    2
      src/arch/i386/drivers/net/undinet.c

+ 6
- 2
src/arch/i386/drivers/net/undinet.c View File

@@ -543,9 +543,13 @@ static int undinet_open ( struct net_device *netdev ) {
543 543
 	undinet_call ( undinic, PXENV_UNDI_SET_STATION_ADDRESS,
544 544
 		       &undi_set_address, sizeof ( undi_set_address ) );
545 545
 
546
-	/* Open NIC */
546
+	/* Open NIC.  We ask for promiscuous operation, since it's the
547
+	 * only way to ask for all multicast addresses.  On any
548
+	 * switched network, it shouldn't really make a difference to
549
+	 * performance.
550
+	 */
547 551
 	memset ( &undi_open, 0, sizeof ( undi_open ) );
548
-	undi_open.PktFilter = ( FLTR_DIRECTED | FLTR_BRDCST );
552
+	undi_open.PktFilter = ( FLTR_DIRECTED | FLTR_BRDCST | FLTR_PRMSCS );
549 553
 	if ( ( rc = undinet_call ( undinic, PXENV_UNDI_OPEN, &undi_open,
550 554
 				   sizeof ( undi_open ) ) ) != 0 )
551 555
 		goto err;

Loading…
Cancel
Save