meta-ibm: p10bmc: add a MCTP DISTRO_FEATURES switch

The switch enables AF_MCTP and adds the `mctp` tool and `mctpd` so we
can setup and manage an in-kernel MCTP network.

Enable it for p10bmc and also add CONFIG_TUN so we can use a tun device
to transport packets between the kernel and the astlpc interface
implemented in libmctp.

Change-Id: I21d0af9e751f91975c760b4b4708b3b401b95417
Signed-off-by: Rashmica Gupta <rashmica@linux.ibm.com>
diff --git a/meta-ibm/conf/machine/p10bmc.conf b/meta-ibm/conf/machine/p10bmc.conf
index 4f23ec6..e42ec22 100644
--- a/meta-ibm/conf/machine/p10bmc.conf
+++ b/meta-ibm/conf/machine/p10bmc.conf
@@ -21,7 +21,7 @@
 require conf/distro/include/ibm-mpreboot.inc
 require conf/distro/include/ibm-yaml.inc
 include conf/distro/include/extra-dev-debug-tools.inc
-DISTRO_FEATURES += "ibm-service-account-policy"
+DISTRO_FEATURES += "ibm-service-account-policy mctp"
 MACHINE_FEATURES += 'phal tpm2'
 
 SERIAL_CONSOLES = "115200;ttyS4"
diff --git a/meta-ibm/recipes-kernel/linux/linux-aspeed/p10bmc.cfg b/meta-ibm/recipes-kernel/linux/linux-aspeed/p10bmc.cfg
index 74cee4d..94bb5a3 100644
--- a/meta-ibm/recipes-kernel/linux/linux-aspeed/p10bmc.cfg
+++ b/meta-ibm/recipes-kernel/linux/linux-aspeed/p10bmc.cfg
@@ -16,3 +16,4 @@
 CONFIG_USB_SERIAL=y
 CONFIG_USB_SERIAL_PL2303=y
 CONFIG_IPMI_KCS_BMC_CDEV_RAW=y
+CONFIG_TUN=y
diff --git a/meta-phosphor/classes/obmc-phosphor-image.bbclass b/meta-phosphor/classes/obmc-phosphor-image.bbclass
index 4143f34..9ecd14d 100644
--- a/meta-phosphor/classes/obmc-phosphor-image.bbclass
+++ b/meta-phosphor/classes/obmc-phosphor-image.bbclass
@@ -66,6 +66,7 @@
 FEATURE_PACKAGES_obmc-telemetry ?= "packagegroup-obmc-apps-telemetry"
 FEATURE_PACKAGES_obmc-user-mgmt ?= "packagegroup-obmc-apps-user-mgmt"
 FEATURE_PACKAGES_obmc-user-mgmt-ldap ?= "packagegroup-obmc-apps-user-mgmt-ldap"
+FEATURE_PACKAGES_obmc-dmtf-pmci ?= "packagegroup-obmc-apps-dmtf-pmci"
 
 # FIXME: phosphor-net-ipmi depends on phosphor-ipmi-host !?!? and
 # cannot be built on core-qemu machines because of the dependency
diff --git a/meta-phosphor/recipes-kernel/linux/linux-%.bbappend b/meta-phosphor/recipes-kernel/linux/linux-%.bbappend
index 32876c4..db375e4 100644
--- a/meta-phosphor/recipes-kernel/linux/linux-%.bbappend
+++ b/meta-phosphor/recipes-kernel/linux/linux-%.bbappend
@@ -1,2 +1,5 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}:"
-SRC_URI:append = " file://systemd-bootchart.cfg"
+SRC_URI:append = " \
+        file://systemd-bootchart.cfg \
+        ${@bb.utils.contains('DISTRO_FEATURES', 'mctp', 'file://mctp/mctp.scc file://mctp/mctp.cfg', '', d)} \
+        "
diff --git a/meta-phosphor/recipes-kernel/linux/mctp/mctp.cfg b/meta-phosphor/recipes-kernel/linux/mctp/mctp.cfg
new file mode 100644
index 0000000..26f3c41
--- /dev/null
+++ b/meta-phosphor/recipes-kernel/linux/mctp/mctp.cfg
@@ -0,0 +1,3 @@
+CONFIG_MCTP=y
+CONFIG_MCTP_SERIAL=y
+CONFIG_MCTP_TRANSPORT_I2C=y
diff --git a/meta-phosphor/recipes-kernel/linux/mctp/mctp.scc b/meta-phosphor/recipes-kernel/linux/mctp/mctp.scc
new file mode 100644
index 0000000..d1fe804
--- /dev/null
+++ b/meta-phosphor/recipes-kernel/linux/mctp/mctp.scc
@@ -0,0 +1,3 @@
+define KFEATURE_DESCRIPTION "Enable MCTP"
+
+kconf non-hardware mctp.cfg
diff --git a/meta-phosphor/recipes-phosphor/images/obmc-phosphor-image.bb b/meta-phosphor/recipes-phosphor/images/obmc-phosphor-image.bb
index 7759b7e..19e256c 100644
--- a/meta-phosphor/recipes-phosphor/images/obmc-phosphor-image.bb
+++ b/meta-phosphor/recipes-phosphor/images/obmc-phosphor-image.bb
@@ -45,6 +45,7 @@
         obmc-network-mgmt \
         obmc-settings-mgmt \
         obmc-telemetry \
+        obmc-dmtf-pmci \
         "
 # The shadow recipe provides the binaries(like useradd, usermod) needed by the
 # phosphor-user-manager.
diff --git a/meta-phosphor/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb b/meta-phosphor/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
index a1b4355..0247389 100644
--- a/meta-phosphor/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
+++ b/meta-phosphor/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
@@ -31,6 +31,7 @@
         ${PN}-telemetry \
         ${PN}-user-mgmt \
         ${PN}-user-mgmt-ldap \
+        ${PN}-dmtf-pmci \
         "
 
 SUMMARY:${PN}-bmc-state-mgmt = "BMC state management"
@@ -201,3 +202,8 @@
         nss-pam-ldapd \
         phosphor-ldap \
         "
+
+SUMMARY:${PN}-dmtf-pmci = "DMTF PMCI Protocol Implementations"
+RDEPENDS:${PN}-dmtf-pmci = " \
+        ${@bb.utils.contains('DISTRO_FEATURES', 'mctp', 'mctp', '', d)} \
+        "