Re: [PATCH] Documentation: add missing operstates.txt

2006-05-12 Thread Randy.Dunlap
On Sun, 7 May 2006 12:18:59 +0200 Stefan Rompf wrote:

 Hi,
 
 seems documentation got lost when the RFC2863-patch was applied. Having
 documentation is good, so I resend it ;-)

I have a few comments/questions about this.

 --- /dev/null 2005-03-19 20:36:14.0 +0100
 +++ linux-2.6.17-rc3/Documentation/networking/operstates.txt  2006-04-27 
 22:15:23.0 +0200
 @@ -0,0 +1,161 @@
 +
 +1. Introduction
 +
 +Linux distinguishes between administrative and operational state of an
 +interface. Admininstrative state is the result of ip link set dev
 +dev up or down and reflects whether the administrator wants to use
 +the device for traffic.
 +
 +However, an interface is not usable just because the admin enabled it

Put hyphen/dash at end of previous line, not on next line.

 +- ethernet requires to be plugged into the switch and, depending on

2 small items here, one grammar and the other is that 'switch'
isn't always the link partner device.  so maybe:

ethernet requires a physical link partner and, depending on

 +a site's networking policy and configuration, an 802.1X authentication
 +to be performed before user data can be transferred. Operational state
 +shows the ability of an interface to transmit this user data.
 +
 +Thanks to 802.1X, userspace must be granted the possibility to
 +influence operational state. To accommodate this, operational state is
 +split into two parts: Two flags that can be set by the driver only, and
 +a RFC2863 compatible state that is derived from these flags, a policy,
 +and changeable from userspace under certain rules.
 +
 +
 +2. Querying from userspace
 +
 +Both admin and operational state can be queried via the netlink
 +operation RTM_GETLINK. It is also possible to subscribe to RTMGRP_LINK
 +to be notified of updates. This is important for setting from userspace.
 +
 +These values contain interface state:
 +
 +ifinfomsg::if_flags  IFF_UP:
 + Interface is admin up
 +ifinfomsg::if_flags  IFF_RUNNING:
 + Interface is in RFC2863 operational state UP or UNKNOWN. This is for
 + backward compatibility, routing daemons, dhcp clients can use this
 + flag to determine whether they should use the interface.
 +ifinfomsg::if_flags  IFF_LOWER_UP:
 + Driver has signaled netif_carrier_on()
 +ifinfomsg::if_flags  IFF_DORMANT:
 + Driver has signaled netif_dormant_on()

Could above list have more spacing added for readability?

 +These interface flags can also be queried without netlink using the
 +SIOCGIFFLAGS ioctl.
 +
 +TLV IFLA_OPERSTATE
 +
 +contains RFC2863 state of the interface in numeric representation:
 +
 +IF_OPER_UNKNOWN (0):
 + Interface is in unknown state, neither driver nor userspace has set
 + operational state. Interface must be considered for user data as
 + setting operational state has not been implemented in every driver.
 +IF_OPER_NOTPRESENT (1):
 + Unused in current kernel (notpresent interfaces normally disappear),
 + just a numerical placeholder.
 +IF_OPER_DOWN (2):
 + Interface is unable to transfer data on L1, f.e. ethernet is not
 + plugged or interface is ADMIN down.

maybe:
ethernet is not plugged in
or
ethernet is not connected
or
ethernet is not physically connected

Also, is f.e. well known to mean for example?
I think that I see e.g. more often than f.e. and I prefer
e.g..

 +IF_OPER_LOWERLAYERDOWN (3):
 + Interfaces stacked on an interface that is IF_OPER_DOWN show this
 + state (f.e. VLAN).
 +IF_OPER_TESTING (4):
 + Unused in current kernel.
 +IF_OPER_DORMANT (5):
 + Interface is L1 up, but waiting for an external event, f.e. for a
 + protocol to establish. (802.1X)
 +IF_OPER_UP (6):
 + Interface is operational up and can be used.
 +
 +This TLV can also be queried via sysfs.

What is TLV?

 +TLV IFLA_LINKMODE
 +
 +contains link policy. This is needed for userspace interaction
 +described below.
 +
 +This TLV can also be queried via sysfs.
 +
 +
 +3. Kernel driver API
 +
 +Kernel drivers have access to two flags that map to IFF_LOWER_UP and
 +IFF_DORMANT. These flags can be set from everywhere, even from
 +interrupts. It is guaranteed that only the driver has write access,
 +however, if different layers of the driver manipulate the same flag,
 +the driver has to provide the synchronisation needed.
 +
 +__LINK_STATE_NOCARRIER, maps to !IFF_LOWER_UP:
 +
 +The driver uses netif_carrier_on() to clear and netif_carrier_off() to
 +set this flag. On netif_carrier_off(), the scheduler stops sending
 +packets. The name 'carrier' and the inversion are historical, think of
 +it as lower layer.
 +
 +netif_carrier_ok() can be used to query that bit.
 +
 +__LINK_STATE_DORMANT, maps to IFF_DORMANT:
 +
 +Set by the driver to express that the device cannot yet be used
 +because some driver controlled protocol establishment has to
 +complete. Corresponding functions are netif_dormant_on() to set the
 +flag, netif_dormant_off() to clear it and netif_dormant() to query.
 +
 +On device allocation, networking core sets the flags equivalent to
 +netif_carrier_ok() 

Re: [PATCH] Documentation: add missing operstates.txt

2006-05-09 Thread David S. Miller
From: Stefan Rompf [EMAIL PROTECTED]
Date: Sun, 7 May 2006 12:18:59 +0200

 seems documentation got lost when the RFC2863-patch was applied. Having
 documentation is good, so I resend it ;-)
 
 Signed-off-by: Stefan Rompf [EMAIL PROTECTED]

Applied, thanks Stefan.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html