lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
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