MAC promiscuous dead interfaces removal [PSARC/2009/252 Self Review]

Kais Belgaied kais at sac.sfbay.sun.com
Wed Apr 22 18:06:24 PDT 2009


Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
	 MAC promiscuous dead interfaces removal
    1.2. Name of Document Author/Supplier:
	 Author:  Girish Moodalbail
    1.3  Date of This Document:
	22 April, 2009
4. Technical Description
I am sponsoring this case on behalf of Girish Moodalbail. The case documents the
removal of Consolidation Private interfaces that became unused and therefore has no architectural impact. I believe it qualifies for a self-review.

The interfaces being changed are all Project Private and patch binding is requested. There are no consumers of these interfaces outside of ON.

This case proposes to remove some of the interface changes that were introduced as part of PSARC 2005/289 aka "Promiscuous Nemo". With the integration of Crossbow into Nevada (build 105), those changes are not needed any more and the dead code needs to be removed.


Background & Introduction
===========================

PSARC case 2005/289 introduced a set of interface changes to separate device-level and MAC-level promiscuous behavior. These changes were required to address an issue with missing 'promiscuous' on/off notification when the underlying data-link became promiscuous. This notification was necessary to adjust the transmit routine to either use a special loopback routine, mac_txloop() or not. This routine would loop back transmitted packets so that they can be observed (almost all Ethernet devices are deaf while transmitting, so transmitted packets which this host must also receive must be looped back by software). See the 2005/289 case directory for more details.

With the integration of Crossbow there is no need for interface changes suggested by 2005/289. Crossbow achieves this using mac_promisc_add() MAC client API and MAC_PROMISC_FLAGS_NO_TX_LOOP MAC Client flag.

When a MAC client desires to capture packets on an interface, it registers a promiscuous callback with mac_promisc_add(). This callback function is added to the promiscuous callback list maintained by the underlying MAC instance. Further, the MAC_PROMISC_FLAGS_NO_TX_LOOP flag passed to mac_promisc_add() function determines if the sender MAC client wants to receive copies of the packets it sends.

Interface Changes
==================

Following changes are proposed:

   * There is no need to separate device-level and MAC-level promiscuous      behavior. Only device-level promiscuous notification (MAC_NOTE_DEVPROMISC) is required. So MAC_NOTE_PROMISC is obsolete and needs to be removed.

   * Removal of mac_promisc_type_t enumeration. It had two values: MAC_PROMISC and MAC_DEVPROMISC

   * Updating mac_promisc_get() and mac_promisc_set() functions to not to use above enum as function arguments.

Note that all of these changes are to the MAC client layer, which is Project Private. 

6. Resources and Schedule
    6.4. Steering Committee requested information
   	6.4.1. Consolidation C-team Name:
		ON
    6.5. ARC review type: Automatic
    6.6. ARC Exposure: open




More information about the opensolaris-arc mailing list