meta-google: gbmc-ncsi-config: Set NICEnabled property

Sometimes the phosphor-networkd starts before systemd-networkd finishes
configuring NCSI interface. This causes phosphor-networkd to mark this
interface as unmanaged.

Setting NICEnabled property to true will ensure the interface is
enabled. If this service starts before systemd-networkd is done, the
set-property command will fail. So retry till the command succeeds.

Signed-off-by: Vivekanand Veeracholan <vveerach@google.com>
Change-Id: I232d363cff48bbf955ac0f1f9a6dac7ae5467257
diff --git a/meta-google/recipes-google/ncsi/files/gbmc-ncsi-set-nicenabled.service.in b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-set-nicenabled.service.in
new file mode 100644
index 0000000..99f0400
--- /dev/null
+++ b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-set-nicenabled.service.in
@@ -0,0 +1,17 @@
+[Unit]
+Description=Set NICEnabled property to true
+Wants=xyz.openbmc_project.Network.service
+After=xyz.openbmc_project.Network.service
+Wants=mapper-wait@-xyz-openbmc_project-network-@NCSI_IF@.service
+After=mapper-wait@-xyz-openbmc_project-network-@NCSI_IF@.service
+StartLimitIntervalSec=10
+StartLimitBurst=3
+
+[Service]
+Type=oneshot
+ExecStart=busctl set-property xyz.openbmc_project.Network /xyz/openbmc_project/network/@NCSI_IF@ xyz.openbmc_project.Network.EthernetInterface NICEnabled b true
+Restart=on-failure
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb b/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb
index 0988199..8989026 100644
--- a/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb
+++ b/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb
@@ -11,6 +11,7 @@
   file://gbmc-ncsi-sslh.service \
   file://gbmc-ncsi-nft.sh.in \
   file://gbmc-ncsi-br-pub-addr.sh.in \
+  file://gbmc-ncsi-set-nicenabled.service.in \
   "
 
 S = "${WORKDIR}"
@@ -30,6 +31,7 @@
 SYSTEMD_SERVICE_${PN} += " \
   gbmc-ncsi-sslh.service \
   gbmc-ncsi-sslh.socket \
+  gbmc-ncsi-set-nicenabled.service \
   "
 
 do_install_append() {
@@ -75,4 +77,7 @@
   sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh.in \
     >${WORKDIR}/gbmc-ncsi-br-pub-addr.sh
   install -m644 ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh $mondir
+
+  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-set-nicenabled.service.in \
+    >${D}${systemd_system_unitdir}/gbmc-ncsi-set-nicenabled.service
 }