mbox series

[v2,0/4] NC-SI PHY Support

Message ID 20190618013720.2823-1-sam@mendozajonas.com
Headers show
Series NC-SI PHY Support | expand

Message

Sam Mendoza-Jonas June 18, 2019, 1:37 a.m. UTC
This series introduces support for the NC-SI protocol to u-boot,
functionality which so far has only been available in vendor trees.

NC-SI (Network Controller Sideband Interface) is a protocol to manage a
sideband connection to a proper network interface, for example a BMC
(Baseboard Management Controller) sharing the NIC of the host system.
Probing and configuration occurs by communicating with the "remote" NIC
via NC-SI control frames (Ethernet header 0x88f8).

Since the RFC[0] the changes have been split out into a few different
patches to make the overall changes more obvious. Additionally a few
small improvements have been added including adding a check to see if
NC-SI is already configured, and marking the PHY bus "reset" as invalid
since it does not define a bus.

An example of NC-SI setup before a normal network command:

=> dhcp
net_loop: configuring NCSI first
ethernet@1e660000: link up, 100 Mbps full-duplex mac:0c:c4:7a:d5:48:43
NCSI: probing channels
NCSI: configuring channel 0
NCSI: configuration done!
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 10.61.161.188 (255 ms)

[0]: https://patchwork.ozlabs.org/patch/1107087/

Changes in v2:
- Fix endianess issue when setting MAC address
- Make checksum offsets easier to read
- Instantiate per-phy ncsi_priv structures
- Update ncsi command help text
- Used update ncsi-pkt.h version to include SPDX header


Samuel Mendoza-Jonas (4):
  phy: Add support for the NC-SI protocol
  phy: Include NC-SI in phy setup
  net/ftgmac100: Add NC-SI mode support
  net: NC-SI setup and handling

 cmd/Kconfig              |   8 +
 cmd/net.c                |  18 +
 drivers/net/ftgmac100.c  |  39 +-
 drivers/net/phy/Kconfig  |   4 +
 drivers/net/phy/Makefile |   1 +
 drivers/net/phy/ncsi.c   | 896 +++++++++++++++++++++++++++++++++++++++
 drivers/net/phy/phy.c    |   7 +
 include/net.h            |   3 +-
 include/net/ncsi-pkt.h   | 442 +++++++++++++++++++
 include/net/ncsi.h       |  14 +
 include/phy.h            |  12 +
 include/phy_interface.h  |   2 +
 net/net.c                |  27 +-
 13 files changed, 1461 insertions(+), 12 deletions(-)
 create mode 100644 drivers/net/phy/ncsi.c
 create mode 100644 include/net/ncsi-pkt.h
 create mode 100644 include/net/ncsi.h

Comments

Cédric Le Goater June 18, 2019, 8:35 a.m. UTC | #1
On 18/06/2019 03:37, Samuel Mendoza-Jonas wrote:
> This series introduces support for the NC-SI protocol to u-boot,
> functionality which so far has only been available in vendor trees.

Would it be complex to add a romulus DT and config file ? 

Thanks,

C. 

> 
> NC-SI (Network Controller Sideband Interface) is a protocol to manage a
> sideband connection to a proper network interface, for example a BMC
> (Baseboard Management Controller) sharing the NIC of the host system.
> Probing and configuration occurs by communicating with the "remote" NIC
> via NC-SI control frames (Ethernet header 0x88f8).
> 
> Since the RFC[0] the changes have been split out into a few different
> patches to make the overall changes more obvious. Additionally a few
> small improvements have been added including adding a check to see if
> NC-SI is already configured, and marking the PHY bus "reset" as invalid
> since it does not define a bus.
> 
> An example of NC-SI setup before a normal network command:
> 
> => dhcp
> net_loop: configuring NCSI first
> ethernet@1e660000: link up, 100 Mbps full-duplex mac:0c:c4:7a:d5:48:43
> NCSI: probing channels
> NCSI: configuring channel 0
> NCSI: configuration done!
> BOOTP broadcast 1
> BOOTP broadcast 2
> DHCP client bound to address 10.61.161.188 (255 ms)
> 
> [0]: https://patchwork.ozlabs.org/patch/1107087/
> 
> Changes in v2:
> - Fix endianess issue when setting MAC address
> - Make checksum offsets easier to read
> - Instantiate per-phy ncsi_priv structures
> - Update ncsi command help text
> - Used update ncsi-pkt.h version to include SPDX header
> 
> 
> Samuel Mendoza-Jonas (4):
>   phy: Add support for the NC-SI protocol
>   phy: Include NC-SI in phy setup
>   net/ftgmac100: Add NC-SI mode support
>   net: NC-SI setup and handling
> 
>  cmd/Kconfig              |   8 +
>  cmd/net.c                |  18 +
>  drivers/net/ftgmac100.c  |  39 +-
>  drivers/net/phy/Kconfig  |   4 +
>  drivers/net/phy/Makefile |   1 +
>  drivers/net/phy/ncsi.c   | 896 +++++++++++++++++++++++++++++++++++++++
>  drivers/net/phy/phy.c    |   7 +
>  include/net.h            |   3 +-
>  include/net/ncsi-pkt.h   | 442 +++++++++++++++++++
>  include/net/ncsi.h       |  14 +
>  include/phy.h            |  12 +
>  include/phy_interface.h  |   2 +
>  net/net.c                |  27 +-
>  13 files changed, 1461 insertions(+), 12 deletions(-)
>  create mode 100644 drivers/net/phy/ncsi.c
>  create mode 100644 include/net/ncsi-pkt.h
>  create mode 100644 include/net/ncsi.h
>
Joel Stanley June 19, 2019, 2:27 a.m. UTC | #2
On Tue, 18 Jun 2019 at 08:35, Cédric Le Goater <clg@kaod.org> wrote:
>
> On 18/06/2019 03:37, Samuel Mendoza-Jonas wrote:
> > This series introduces support for the NC-SI protocol to u-boot,
> > functionality which so far has only been available in vendor trees.
>
> Would it be complex to add a romulus DT and config file ?

I think it's a great idea to follow up with that. I suggested Sam
focus on the network and ftgmac100 parts of NCSI first.

We will need to add support for the NCSI clocking in addition to the
device tree and config.

Cheers,

Joel