[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d4adc9631f8849e3a3398d78bc9ddb80@amazon.com>
Date: Tue, 10 Jan 2023 15:17:33 +0000
From: "Arinzon, David" <darinzon@...zon.com>
To: "Iwashima, Kuniyuki" <kuniyu@...zon.co.jp>
CC: "Kiyanovski, Arthur" <akiyano@...zon.com>,
"Saidi, Ali" <alisaidi@...zon.com>,
"davem@...emloft.net" <davem@...emloft.net>,
"Itzko, Shahar" <itzko@...zon.com>,
"kuba@...nel.org" <kuba@...nel.org>,
"Matushevsky, Alexander" <matua@...zon.com>,
"Bshara, Nafea" <nafea@...zon.com>,
"Dagan, Noam" <ndagan@...zon.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"Abboud, Osama" <osamaabb@...zon.com>,
"Bshara, Saeed" <saeedb@...zon.com>,
"Agroskin, Shay" <shayagr@...zon.com>,
"Machulsky, Zorik" <zorik@...zon.com>
Subject: RE: [PATCH V1 net-next 1/5] net: ena: Register ena device to devlink
Thank you! This feedback will be addressed in the next version of the patchset.
> -----Original Message-----
> From: Iwashima, Kuniyuki <kuniyu@...zon.co.jp>
> Sent: Monday, January 9, 2023 7:59 AM
> To: Arinzon, David <darinzon@...zon.com>
> Cc: Kiyanovski, Arthur <akiyano@...zon.com>; Saidi, Ali
> <alisaidi@...zon.com>; davem@...emloft.net; Itzko, Shahar
> <itzko@...zon.com>; kuba@...nel.org; Matushevsky, Alexander
> <matua@...zon.com>; Bshara, Nafea <nafea@...zon.com>; Dagan,
> Noam <ndagan@...zon.com>; netdev@...r.kernel.org; Abboud, Osama
> <osamaabb@...zon.com>; Bshara, Saeed <saeedb@...zon.com>;
> Agroskin, Shay <shayagr@...zon.com>; Machulsky, Zorik
> <zorik@...zon.com>; Iwashima, Kuniyuki <kuniyu@...zon.co.jp>
> Subject: Re: [PATCH V1 net-next 1/5] net: ena: Register ena device to
> devlink
>
> From: David Arinzon <darinzon@...zon.com>
> Date: Sun, 8 Jan 2023 10:35:29 +0000
> > This patch registers ena as a device that supports devlink.
> > This makes it listed when running
> > $ devlink dev show
> >
> > The patch lands the base upon which the driver's devlink callbacks
> > will be added.
> >
> > Signed-off-by: Shay Agroskin <shayagr@...zon.com>
> > Signed-off-by: David Arinzon <darinzon@...zon.com>
> > ---
> > drivers/net/ethernet/amazon/Kconfig | 1 +
> > drivers/net/ethernet/amazon/ena/Makefile | 2 +-
> > drivers/net/ethernet/amazon/ena/ena_devlink.c | 42
> > +++++++++++++++++++
> drivers/net/ethernet/amazon/ena/ena_devlink.h |
> > 20 +++++++++ drivers/net/ethernet/amazon/ena/ena_netdev.c | 24
> > ++++++++++- drivers/net/ethernet/amazon/ena/ena_netdev.h | 2 +
> > 6 files changed, 88 insertions(+), 3 deletions(-) create mode 100644
> > drivers/net/ethernet/amazon/ena/ena_devlink.c
> > create mode 100644 drivers/net/ethernet/amazon/ena/ena_devlink.h
> >
> > diff --git a/drivers/net/ethernet/amazon/Kconfig
> > b/drivers/net/ethernet/amazon/Kconfig
> > index c37fa393b99e..8f1b3302a89e 100644
> > --- a/drivers/net/ethernet/amazon/Kconfig
> > +++ b/drivers/net/ethernet/amazon/Kconfig
> > @@ -18,6 +18,7 @@ if NET_VENDOR_AMAZON
> >
> > config ENA_ETHERNET
> > tristate "Elastic Network Adapter (ENA) support"
> > + select NET_DEVLINK
> > depends on PCI_MSI && !CPU_BIG_ENDIAN
> > select DIMLIB
> > help
> > diff --git a/drivers/net/ethernet/amazon/ena/Makefile
> > b/drivers/net/ethernet/amazon/ena/Makefile
> > index f1f752a8f7bb..34abcedd9132 100644
> > --- a/drivers/net/ethernet/amazon/ena/Makefile
> > +++ b/drivers/net/ethernet/amazon/ena/Makefile
> > @@ -5,4 +5,4 @@
> >
> > obj-$(CONFIG_ENA_ETHERNET) += ena.o
> >
> > -ena-y := ena_netdev.o ena_com.o ena_eth_com.o ena_ethtool.o
> > +ena-y := ena_netdev.o ena_com.o ena_eth_com.o ena_ethtool.o
> > +ena_devlink.o
> > diff --git a/drivers/net/ethernet/amazon/ena/ena_devlink.c
> > b/drivers/net/ethernet/amazon/ena/ena_devlink.c
> > new file mode 100644
> > index 000000000000..6897d60d8376
> > --- /dev/null
> > +++ b/drivers/net/ethernet/amazon/ena/ena_devlink.c
> > @@ -0,0 +1,42 @@
> > +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
> > +/*
> > + * Copyright 2015-2021 Amazon.com, Inc. or its affiliates. All rights
> reserved.
>
> nit: s/2015-2021 //
>
> ---8<---
> Copyright dates are not needed in open source code that Amazon creates.
> I.e., “Copyright [YEAR]-[YEAR] Amazon.com Inc. or its affiliates” will
> become “Copyright Amazon.com Inc. or its affiliates.”
> ---8<---
>
>
> > + */
> > +
> > +#include "linux/pci.h"
> > +
> > +#include "ena_devlink.h"
> > +
> > +static const struct devlink_ops ena_devlink_ops = {};
> > +
> > +struct devlink *ena_devlink_alloc(struct ena_adapter *adapter) {
> > + struct device *dev = &adapter->pdev->dev;
> > + struct devlink *devlink;
> > +
> > + devlink = devlink_alloc(&ena_devlink_ops, sizeof(struct
> ena_adapter *), dev);
> > + if (!devlink) {
> > + netdev_err(adapter->netdev, "Failed to allocate devlink
> struct\n");
> > + return NULL;
> > + }
> > +
> > + ENA_DEVLINK_PRIV(devlink) = adapter;
> > + adapter->devlink = devlink;
> > +
> > + return devlink;
> > +}
> > +
> > +void ena_devlink_free(struct devlink *devlink) {
> > + devlink_free(devlink);
> > +}
> > +
> > +void ena_devlink_register(struct devlink *devlink, struct device
> > +*dev) {
> > + devlink_register(devlink);
> > +}
> > +
> > +void ena_devlink_unregister(struct devlink *devlink) {
> > + devlink_unregister(devlink);
> > +}
> > diff --git a/drivers/net/ethernet/amazon/ena/ena_devlink.h
> > b/drivers/net/ethernet/amazon/ena/ena_devlink.h
> > new file mode 100644
> > index 000000000000..6f737884b850
> > --- /dev/null
> > +++ b/drivers/net/ethernet/amazon/ena/ena_devlink.h
> > @@ -0,0 +1,20 @@
> > +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
> > +/*
> > + * Copyright 2015-2021 Amazon.com, Inc. or its affiliates. All rights
> reserved.
>
> Same here.
>
>
> > + */
> > +
> > +#ifndef DEVLINK_H
> > +#define DEVLINK_H
> > +
> > +#include "ena_netdev.h"
> > +#include <net/devlink.h>
> > +
> > +#define ENA_DEVLINK_PRIV(devlink) \
> > + (*(struct ena_adapter **)devlink_priv(devlink))
> > +
> > +struct devlink *ena_devlink_alloc(struct ena_adapter *adapter); void
> > +ena_devlink_free(struct devlink *devlink); void
> > +ena_devlink_register(struct devlink *devlink, struct device *dev);
> > +void ena_devlink_unregister(struct devlink *devlink);
> > +
> > +#endif /* DEVLINK_H */
> > diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c
> > b/drivers/net/ethernet/amazon/ena/ena_netdev.c
> > index e8ad5ea31aff..ce79a0c42e6a 100644
> > --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
> > +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
> > @@ -22,6 +22,8 @@
> > #include <linux/bpf_trace.h>
> > #include "ena_pci_id_tbl.h"
> >
> > +#include "ena_devlink.h"
> > +
> > MODULE_AUTHOR("Amazon.com, Inc. or its affiliates");
> > MODULE_DESCRIPTION(DEVICE_NAME); MODULE_LICENSE("GPL"); @@ -
> 4243,6
> > +4245,7 @@ static int ena_probe(struct pci_dev *pdev, const struct
> pci_device_id *ent)
> > struct ena_adapter *adapter;
> > struct net_device *netdev;
> > static int adapters_found;
> > + struct devlink *devlink;
> > u32 max_num_io_queues;
> > bool wd_state;
> > int bars, rc;
> > @@ -4308,12 +4311,18 @@ static int ena_probe(struct pci_dev *pdev,
> > const struct pci_device_id *ent)
> >
> > pci_set_drvdata(pdev, adapter);
> >
> > - rc = ena_device_init(ena_dev, pdev, &get_feat_ctx, &wd_state);
> > + devlink = ena_devlink_alloc(adapter);
> > + if (!devlink) {
> > + netdev_err(netdev, "ena_devlink_alloc failed\n");
> > + goto err_netdev_destroy;
> > + }
> > +
> > + rc = ena_device_init(adapter, pdev, &get_feat_ctx, &wd_state);
> > if (rc) {
> > dev_err(&pdev->dev, "ENA device init failed\n");
> > if (rc == -ETIME)
> > rc = -EPROBE_DEFER;
> > - goto err_netdev_destroy;
> > + goto err_devlink_destroy;
> > }
> >
> > rc = ena_map_llq_mem_bar(pdev, ena_dev, bars); @@ -4362,6
> +4371,7 @@
> > static int ena_probe(struct pci_dev *pdev, const struct pci_device_id
> *ent)
> > "Failed to query interrupt moderation feature\n");
> > goto err_device_destroy;
> > }
> > +
> > ena_init_io_rings(adapter,
> > 0,
> > adapter->xdp_num_queues +
> > @@ -4420,6 +4430,8 @@ static int ena_probe(struct pci_dev *pdev,
> const
> > struct pci_device_id *ent)
> >
> > adapters_found++;
> >
> > + ena_devlink_register(devlink, &pdev->dev);
> > +
> > return 0;
> >
> > err_rss:
> > @@ -4436,6 +4448,8 @@ static int ena_probe(struct pci_dev *pdev,
> const
> > struct pci_device_id *ent)
> > err_device_destroy:
> > ena_com_delete_host_info(ena_dev);
> > ena_com_admin_destroy(ena_dev);
> > +err_devlink_destroy:
> > + ena_devlink_free(devlink);
> > err_netdev_destroy:
> > free_netdev(netdev);
> > err_free_region:
> > @@ -4462,10 +4476,15 @@ static void __ena_shutoff(struct pci_dev
> *pdev, bool shutdown)
> > struct ena_adapter *adapter = pci_get_drvdata(pdev);
> > struct ena_com_dev *ena_dev;
> > struct net_device *netdev;
> > + struct devlink *devlink;
> >
> > ena_dev = adapter->ena_dev;
> > netdev = adapter->netdev;
> >
> > + devlink = adapter->devlink;
> > + ena_devlink_unregister(devlink);
> > + ena_devlink_free(devlink);
> > +
> > #ifdef CONFIG_RFS_ACCEL
> > if ((adapter->msix_vecs >= 1) && (netdev->rx_cpu_rmap)) {
> > free_irq_cpu_rmap(netdev->rx_cpu_rmap);
> > @@ -4482,6 +4501,7 @@ static void __ena_shutoff(struct pci_dev
> *pdev, bool shutdown)
> > rtnl_lock(); /* lock released inside the below if-else block */
> > adapter->reset_reason = ENA_REGS_RESET_SHUTDOWN;
> > ena_destroy_device(adapter, true);
> > +
> > if (shutdown) {
> > netif_device_detach(netdev);
> > dev_close(netdev);
> > diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h
> > b/drivers/net/ethernet/amazon/ena/ena_netdev.h
> > index 2cb141079474..c6132aa229df 100644
> > --- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
> > +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
> > @@ -313,6 +313,8 @@ struct ena_adapter {
> > struct net_device *netdev;
> > struct pci_dev *pdev;
> >
> > + struct devlink *devlink;
> > +
> > /* rx packets that shorter that this len will be copied to the skb
> > * header
> > */
> > --
> > 2.38.1
Powered by blists - more mailing lists