netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, benh@kernel.crashing.org, joel@jms.id.au,
	weixue@trustnetic.com, Gavin Shan <gwshan@linux.vnet.ibm.com>
Subject: [PATCH net-next 00/10] NCSI Support
Date: Sun,  3 Jul 2016 15:32:23 +1000	[thread overview]
Message-ID: <1467523953-18998-1-git-send-email-gwshan@linux.vnet.ibm.com> (raw)

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

Gavin Shan (10):
  net/ncsi: Resource management
  net/ncsi: NCSI command packet handler
  net/ncsi: NCSI response packet handler
  net/ncsi: Package and channel management
  net/ncsi: NCSI AEN packet handler
  net/farady: Helper functions to create or destroy MDIO interface
  net/farady: Read MAC address from chip
  net/farady: Support NCSI mode
  net/farady: Match driver according to compatible property
  net/farady: Mask PHY interrupt with NCSI mode

 drivers/net/ethernet/faraday/ftgmac100.c | 280 +++++++--
 include/net/ncsi.h                       |  52 ++
 include/uapi/linux/if_ether.h            |   1 +
 net/Kconfig                              |   1 +
 net/Makefile                             |   1 +
 net/ncsi/Kconfig                         |  12 +
 net/ncsi/Makefile                        |   4 +
 net/ncsi/internal.h                      | 310 ++++++++++
 net/ncsi/ncsi-aen.c                      | 169 ++++++
 net/ncsi/ncsi-cmd.c                      | 396 ++++++++++++
 net/ncsi/ncsi-manage.c                   | 893 +++++++++++++++++++++++++++
 net/ncsi/ncsi-pkt.h                      | 395 ++++++++++++
 net/ncsi/ncsi-rsp.c                      | 997 +++++++++++++++++++++++++++++++
 13 files changed, 3448 insertions(+), 63 deletions(-)
 create mode 100644 include/net/ncsi.h
 create mode 100644 net/ncsi/Kconfig
 create mode 100644 net/ncsi/Makefile
 create mode 100644 net/ncsi/internal.h
 create mode 100644 net/ncsi/ncsi-aen.c
 create mode 100644 net/ncsi/ncsi-cmd.c
 create mode 100644 net/ncsi/ncsi-manage.c
 create mode 100644 net/ncsi/ncsi-pkt.h
 create mode 100644 net/ncsi/ncsi-rsp.c

-- 
2.1.0

             reply	other threads:[~2016-07-03  5:32 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-03  5:32 Gavin Shan [this message]
2016-07-03  5:32 ` [PATCH net-next 01/10] net/ncsi: Resource management Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 02/10] net/ncsi: NCSI command packet handler Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 03/10] net/ncsi: NCSI response " Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 04/10] net/ncsi: Package and channel management Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 05/10] net/ncsi: NCSI AEN packet handler Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 06/10] net/farady: Helper functions to create or destroy MDIO interface Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 07/10] net/farady: Read MAC address from chip Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 08/10] net/farady: Support NCSI mode Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 09/10] net/farady: Match driver according to compatible property Gavin Shan
2016-07-03  5:32 ` [PATCH net-next 10/10] net/farady: Mask PHY interrupt with NCSI mode Gavin Shan
2016-07-03 22:03 ` [PATCH net-next 00/10] NCSI Support Or Gerlitz
2016-07-03 22:49   ` Benjamin Herrenschmidt
2016-07-04  0:24     ` Gavin Shan
2016-07-05 17:44   ` Alexei Starovoitov
2016-07-05 21:42     ` Benjamin Herrenschmidt
2016-07-06  2:07       ` Alexei Starovoitov
2016-07-06  2:14         ` Benjamin Herrenschmidt
2016-07-07  9:12     ` Or Gerlitz
2016-07-07  9:17       ` Benjamin Herrenschmidt
2016-07-07  9:18         ` Benjamin Herrenschmidt
2016-07-07 13:05         ` Gavin Shan
2016-07-07 13:44         ` Or Gerlitz
2016-07-07 16:34           ` Gavin Shan
2016-07-07 17:32 ` Florian Fainelli
2016-07-07 22:05   ` Benjamin Herrenschmidt
2016-07-08  1:10   ` Gavin Shan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1467523953-18998-1-git-send-email-gwshan@linux.vnet.ibm.com \
    --to=gwshan@linux.vnet.ibm.com \
    --cc=benh@kernel.crashing.org \
    --cc=davem@davemloft.net \
    --cc=joel@jms.id.au \
    --cc=netdev@vger.kernel.org \
    --cc=weixue@trustnetic.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).