On Sun, Jul 3, 2016 at 8:32 AM, Gavin Shan <gws...@linux.vnet.ibm.com> wrote: > This series rebases on David's linux-net git repo ("master" branch). It's > to support NCSI stack on net/farady/ftgmac100.c > > The following figure gives an example about how NCSI is deployed: The NCSI is > specified by DSP0222, which can be downloaded from the following link here > (http://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.0.0.pdf). > > * The NC-SI (aka NCSI) is defined as the interface between a (Base) > Management > Controller (BMC) and one or multiple Network Controlers (NC) on host > side. > The interface is responsible for providing external network connectivity > for BMC. > * Each BMC can connect to multiple packages, up to 8. Each package can have > multiple channels, up to 32. Every package and channel are identified by > 3-bits and 5-bits in NCSI packet. At one moment, one channel is active to > provide service. > * NCSI packet, encapsulated in ethernet frame, has 0x88F8 in the protocol > field. The destination MAC address should be 0xFF's while the source MAC > address can be arbitrary one. > * NCSI packets are classified to command, response, AEN (Asynchronous Event > Notification). Commands are sent from BMC to host for configuration and > information retrival. Responses, corresponding to commands, are sent from > host to BMC for confirmation and requested information. One command > should > have one and only one response. AEN is sent from host to BMC for > notification > (e.g. link down on active channel) so that BMC can take appropriate > action. > > +------------------+ > +----------------------------------------------+ > | | | Host > | > | BMC | | > | > | | | +-------------------+ +-------------------+ > | > | +---------+ | | | Package-A | | Package-B | > | > | | | | | +---------+---------+ +-------------------+ > | > | | NIC | | | | Channel | Channel | | Channel | Channel | > | > +----+----+----+---+ > +-+---------+---------+--+---------+---------+-+ > | | | > | | | > +-----------------------------+----------------------+ > > The design for the patchset is highlighted as below: > > * The NCSI interface is abstracted with "struct ncsi_dev". It's registered > when net_device is created, started to work by calling ncsi_start_dev() > when net_device is opened (ndo_open()). For the first time, NCSI packets > are sent and received to/from the far end (host in above figure) to probe > available NCSI packages and channels. After that, one channel is chosen > as > active one to provide service. > * The NCSI stack is driven by workqueue and state machine internally. > * AEN (Asychronous Event Notification) might be received from the far end > (host). The currently active NCSI channel fails over to another available > one if possible. Otherwise, the NCSI channel is out of service. > * NCSI stack should be configurable through netlink or another mechanism, > but it's not implemented in this patchset. It's something TBD. > * The first NIC driver that is aware of NCSI: > drivers/net/ethernet/faraday/ftgmac100.c
FWIW, talking to a colleague, he made a comment that some of the text above is wrong: AENs are sent from NIC to BMC. Not from Host to BMC. The traffic between a BMC and a NIC is over RBT if it is formatted as NC-SI packets. This is not over network traffic.... Or.