From patchwork Thu Jun 3 06:52:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeremy Kerr X-Patchwork-Id: 454636 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 47A27C47096 for ; Thu, 3 Jun 2021 06:59:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2F167613D8 for ; Thu, 3 Jun 2021 06:59:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229947AbhFCHBS (ORCPT ); Thu, 3 Jun 2021 03:01:18 -0400 Received: from pi.codeconstruct.com.au ([203.29.241.158]:46914 "EHLO codeconstruct.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229864AbhFCHBN (ORCPT ); Thu, 3 Jun 2021 03:01:13 -0400 Received: by codeconstruct.com.au (Postfix, from userid 10000) id 28E57219A6; Thu, 3 Jun 2021 14:52:28 +0800 (AWST) From: Jeremy Kerr To: netdev@vger.kernel.org Cc: Andrew Jeffery , Matt Johnston Subject: [PATCH RFC net-next 00/16] Add Management Controller Transport Protocol support Date: Thu, 3 Jun 2021 14:52:02 +0800 Message-Id: <20210603065218.570867-1-jk@codeconstruct.com.au> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This (RFC) series adds core MCTP support to the kernel. From the Kconfig description: Management Controller Transport Protocol (MCTP) is an in-system protocol for communicating between management controllers and their managed devices (perihperals, host processors, etc.). The protocol is defined by DMTF specification DSP0236. This option enables core MCTP support. For communicating with other devices, you'll want to enable a driver for a specific hardware channel. This implementation allows a sockets-based API for sending and receiving MCTP messages via sendmsg/recvmsg on SOCK_DGRAM sockets. Kernel stack control is all via netlink, using existing RTM_* messages. The userspace ABI change is fairly small; just the necessary AF_/ETH_P_/ARPHDR_ constants, a new sockaddr, and a new netlink attribute. For MAINTAINERS, I've just included netdev@ as the list entry. I'm happy to alter this based on preferences here - an alternative would be the OpenBMC list (the main user of the MCTP interface), or we can create a new list entirely. We have a couple of interface drivers almost ready to go at the moment, but those can wait until the core code has some review. Review, comments, questions etc. are most welcome. Cheers, Jeremy --- Jeremy Kerr (10): mctp: Add MCTP base mctp: Add base socket/protocol definitions mctp: Add base packet definitions mctp: Add sockaddr_mctp to uapi mctp: Add initial driver infrastructure mctp: Add device handling and netlink interface mctp: Add initial routing framework mctp: Populate socket implementation mctp: Implement message fragmentation & reassembly mctp: Add MCTP overview document Matt Johnston (6): mctp: Add netlink route management mctp: Add neighbour implementation mctp: Add neighbour netlink interface mctp: Add dest neighbour lladdr to route output mctp: Allow per-netns default networks mctp: Allow MCTP on tun devices Documentation/networking/index.rst | 1 + Documentation/networking/mctp.rst | 213 ++++++ MAINTAINERS | 12 + drivers/net/Kconfig | 2 + drivers/net/Makefile | 1 + drivers/net/mctp/Kconfig | 8 + drivers/net/mctp/Makefile | 0 include/linux/netdevice.h | 3 + include/linux/socket.h | 6 +- include/net/mctp.h | 235 ++++++ include/net/mctpdevice.h | 42 ++ include/net/net_namespace.h | 4 + include/net/netns/mctp.h | 36 + include/uapi/linux/if_arp.h | 1 + include/uapi/linux/if_ether.h | 3 + include/uapi/linux/if_link.h | 10 + include/uapi/linux/mctp.h | 32 + net/Kconfig | 1 + net/Makefile | 1 + net/mctp/Kconfig | 13 + net/mctp/Makefile | 3 + net/mctp/af_mctp.c | 385 ++++++++++ net/mctp/device.c | 370 ++++++++++ net/mctp/neigh.c | 342 +++++++++ net/mctp/route.c | 1081 ++++++++++++++++++++++++++++ 25 files changed, 2804 insertions(+), 1 deletion(-) create mode 100644 Documentation/networking/mctp.rst create mode 100644 drivers/net/mctp/Kconfig create mode 100644 drivers/net/mctp/Makefile create mode 100644 include/net/mctp.h create mode 100644 include/net/mctpdevice.h create mode 100644 include/net/netns/mctp.h create mode 100644 include/uapi/linux/mctp.h create mode 100644 net/mctp/Kconfig create mode 100644 net/mctp/Makefile create mode 100644 net/mctp/af_mctp.c create mode 100644 net/mctp/device.c create mode 100644 net/mctp/neigh.c create mode 100644 net/mctp/route.c