[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230110123542.46924-2-simon.horman@corigine.com>
Date: Tue, 10 Jan 2023 13:35:41 +0100
From: Simon Horman <simon.horman@...igine.com>
To: David Miller <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>
Cc: netdev@...r.kernel.org, oss-drivers@...igine.com,
Bin Chen <bin.chen@...igine.com>,
Xingfeng Hu <xingfeng.hu@...igine.com>,
Simon Horman <simon.horman@...igine.com>
Subject: [PATCH net-next 1/2] nfp: add stub implementation of DCB IEEE callbacks
From: Xingfeng Hu <xingfeng.hu@...igine.com>
Add stub implementation of DCB IEEE callbacks to allow exercising
user-driver to NFP driver control plane for related DCB configuration.
These stubs are to be filled out with code that interacts with the NIC.
Signed-off-by: Xingfeng Hu <xingfeng.hu@...igine.com>
Signed-off-by: Simon Horman <simon.horman@...igine.com>
---
drivers/net/ethernet/netronome/nfp/Makefile | 2 +
drivers/net/ethernet/netronome/nfp/nic/dcb.c | 73 +++++++++++++++++++
drivers/net/ethernet/netronome/nfp/nic/main.c | 39 +++++++++-
drivers/net/ethernet/netronome/nfp/nic/main.h | 25 +++++++
4 files changed, 137 insertions(+), 2 deletions(-)
create mode 100644 drivers/net/ethernet/netronome/nfp/nic/dcb.c
create mode 100644 drivers/net/ethernet/netronome/nfp/nic/main.h
diff --git a/drivers/net/ethernet/netronome/nfp/Makefile b/drivers/net/ethernet/netronome/nfp/Makefile
index 8a250214e289..c90d35f5ebca 100644
--- a/drivers/net/ethernet/netronome/nfp/Makefile
+++ b/drivers/net/ethernet/netronome/nfp/Makefile
@@ -83,3 +83,5 @@ endif
nfp-$(CONFIG_NFP_NET_IPSEC) += crypto/ipsec.o nfd3/ipsec.o
nfp-$(CONFIG_NFP_DEBUG) += nfp_net_debugfs.o
+
+nfp-$(CONFIG_DCB) += nic/dcb.o
diff --git a/drivers/net/ethernet/netronome/nfp/nic/dcb.c b/drivers/net/ethernet/netronome/nfp/nic/dcb.c
new file mode 100644
index 000000000000..91508222cbd6
--- /dev/null
+++ b/drivers/net/ethernet/netronome/nfp/nic/dcb.c
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/* Copyright (C) 2020 Netronome Systems, Inc. */
+/* Copyright (C) 2021 Corigine, Inc. */
+
+#include "../nfp_net.h"
+#include <linux/netdevice.h>
+#include <net/dcbnl.h>
+#include "main.h"
+
+static int nfp_nic_dcbnl_ieee_getets(struct net_device *dev,
+ struct ieee_ets *ets)
+{
+ netdev_warn(dev, "%s: UNIMPLEMENTED\n", __func__);
+
+ return -EOPNOTSUPP;
+}
+
+static int nfp_nic_dcbnl_ieee_setets(struct net_device *dev,
+ struct ieee_ets *ets)
+{
+ netdev_warn(dev, "%s: UNIMPLEMENTED\n", __func__);
+
+ return -EOPNOTSUPP;
+}
+
+static int nfp_nic_dcbnl_ieee_getmaxrate(struct net_device *dev,
+ struct ieee_maxrate *maxrate)
+{
+ netdev_warn(dev, "%s: UNIMPLEMENTED\n", __func__);
+
+ return -EOPNOTSUPP;
+}
+
+static int nfp_nic_dcbnl_ieee_setmaxrate(struct net_device *dev,
+ struct ieee_maxrate *maxrate)
+{
+ netdev_warn(dev, "%s: UNIMPLEMENTED\n", __func__);
+
+ return -EOPNOTSUPP;
+}
+
+static int nfp_nic_dcbnl_ieee_setapp(struct net_device *dev,
+ struct dcb_app *app)
+{
+ netdev_warn(dev, "%s: UNIMPLEMENTED\n", __func__);
+
+ return -EOPNOTSUPP;
+}
+
+static int nfp_nic_dcbnl_ieee_delapp(struct net_device *dev,
+ struct dcb_app *app)
+{
+ netdev_warn(dev, "%s: UNIMPLEMENTED\n", __func__);
+
+ return -EOPNOTSUPP;
+}
+
+static const struct dcbnl_rtnl_ops nfp_nic_dcbnl_ops = {
+ /* ieee 802.1Qaz std */
+ .ieee_getets = nfp_nic_dcbnl_ieee_getets,
+ .ieee_setets = nfp_nic_dcbnl_ieee_setets,
+ .ieee_getmaxrate = nfp_nic_dcbnl_ieee_getmaxrate,
+ .ieee_setmaxrate = nfp_nic_dcbnl_ieee_setmaxrate,
+ .ieee_setapp = nfp_nic_dcbnl_ieee_setapp,
+ .ieee_delapp = nfp_nic_dcbnl_ieee_delapp,
+};
+
+int nfp_nic_dcb_init(struct nfp_net *nn)
+{
+ nn->dp.netdev->dcbnl_ops = &nfp_nic_dcbnl_ops;
+
+ return 0;
+}
diff --git a/drivers/net/ethernet/netronome/nfp/nic/main.c b/drivers/net/ethernet/netronome/nfp/nic/main.c
index aea8579206ee..f78c2447d45b 100644
--- a/drivers/net/ethernet/netronome/nfp/nic/main.c
+++ b/drivers/net/ethernet/netronome/nfp/nic/main.c
@@ -5,6 +5,8 @@
#include "../nfpcore/nfp_nsp.h"
#include "../nfp_app.h"
#include "../nfp_main.h"
+#include "../nfp_net.h"
+#include "main.h"
static int nfp_nic_init(struct nfp_app *app)
{
@@ -28,13 +30,46 @@ static void nfp_nic_sriov_disable(struct nfp_app *app)
{
}
+static int nfp_nic_vnic_init(struct nfp_app *app, struct nfp_net *nn)
+{
+ nfp_nic_dcb_init(nn);
+
+ return 0;
+}
+
+static int nfp_nic_vnic_alloc(struct nfp_app *app, struct nfp_net *nn,
+ unsigned int id)
+{
+ struct nfp_app_nic_private *app_pri = nn->app_priv;
+ int err;
+
+ err = nfp_app_nic_vnic_alloc(app, nn, id);
+ if (err)
+ return err;
+
+ if (sizeof(*app_pri)) {
+ nn->app_priv = kzalloc(sizeof(*app_pri), GFP_KERNEL);
+ if (!nn->app_priv)
+ return -ENOMEM;
+ }
+
+ return 0;
+}
+
+static void nfp_nic_vnic_free(struct nfp_app *app, struct nfp_net *nn)
+{
+ kfree(nn->app_priv);
+}
+
const struct nfp_app_type app_nic = {
.id = NFP_APP_CORE_NIC,
.name = "nic",
.init = nfp_nic_init,
- .vnic_alloc = nfp_app_nic_vnic_alloc,
-
+ .vnic_alloc = nfp_nic_vnic_alloc,
+ .vnic_free = nfp_nic_vnic_free,
.sriov_enable = nfp_nic_sriov_enable,
.sriov_disable = nfp_nic_sriov_disable,
+
+ .vnic_init = nfp_nic_vnic_init,
};
diff --git a/drivers/net/ethernet/netronome/nfp/nic/main.h b/drivers/net/ethernet/netronome/nfp/nic/main.h
new file mode 100644
index 000000000000..679531fe2838
--- /dev/null
+++ b/drivers/net/ethernet/netronome/nfp/nic/main.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/* Copyright (C) 2020 Netronome Systems, Inc. */
+/* Copyright (C) 2021 Corigine, Inc. */
+#ifndef __NFP_NIC_H__
+#define __NFP_NIC_H__ 1
+
+#include <linux/netdevice.h>
+
+#ifdef CONFIG_DCB
+struct nfp_dcb {
+};
+
+int nfp_nic_dcb_init(struct nfp_net *nn);
+
+#else
+static inline int nfp_nic_dcb_init(struct nfp_net *nn) { return 0; }
+#endif
+
+struct nfp_app_nic_private {
+#ifdef CONFIG_DCB
+ struct nfp_dcb dcb;
+#endif
+};
+
+#endif
--
2.30.2
Powered by blists - more mailing lists