From: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
To: Jiri Pirko <jiri@resnulli.us>
Cc: shayd@nvidia.com, maciej.fijalkowski@intel.com, horms@kernel.org,
mateusz.polchlopek@intel.com, netdev@vger.kernel.org,
jiri@nvidia.com, kalesh-anakkur.purayil@broadcom.com,
michal.kubiak@intel.com, intel-wired-lan@lists.osuosl.org,
pio.raczynski@gmail.com, sridhar.samudrala@intel.com,
jacob.e.keller@intel.com, wojciech.drewek@intel.com,
przemyslaw.kitszel@intel.com
Subject: Re: [Intel-wired-lan] [iwl-next v4 05/15] ice: allocate devlink for subfunction
Date: Mon, 3 Jun 2024 15:57:04 +0200 [thread overview]
Message-ID: <Zl3LsLK6LZGUZkkA@mev-dev> (raw)
In-Reply-To: <Zl25Rioa4K2BmYe6@nanopsycho.orion>
On Mon, Jun 03, 2024 at 02:38:30PM +0200, Jiri Pirko wrote:
> Mon, Jun 03, 2024 at 11:50:15AM CEST, michal.swiatkowski@linux.intel.com wrote:
> >From: Piotr Raczynski <piotr.raczynski@intel.com>
> >
> >Make devlink allocation function generic to use it for PF and for SF.
> >
> >Add function for SF devlink port creation. It will be used in next
> >patch.
> >
> >Create header file for subfunction device. Define subfunction device
> >structure there as it is needed for devlink allocation and port
> >creation.
> >
> >Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> >Signed-off-by: Piotr Raczynski <piotr.raczynski@intel.com>
> >Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> >---
> > .../net/ethernet/intel/ice/devlink/devlink.c | 33 +++++++++++++++
> > .../net/ethernet/intel/ice/devlink/devlink.h | 1 +
> > .../ethernet/intel/ice/devlink/devlink_port.c | 41 +++++++++++++++++++
> > .../ethernet/intel/ice/devlink/devlink_port.h | 3 ++
> > drivers/net/ethernet/intel/ice/ice_sf_eth.h | 21 ++++++++++
> > 5 files changed, 99 insertions(+)
> > create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_eth.h
> >
> >diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink.c b/drivers/net/ethernet/intel/ice/devlink/devlink.c
> >index bfb3d5b59a62..00f549daca57 100644
> >--- a/drivers/net/ethernet/intel/ice/devlink/devlink.c
> >+++ b/drivers/net/ethernet/intel/ice/devlink/devlink.c
> >@@ -10,6 +10,7 @@
> > #include "ice_eswitch.h"
> > #include "ice_fw_update.h"
> > #include "ice_dcb_lib.h"
> >+#include "ice_sf_eth.h"
> >
> > /* context for devlink info version reporting */
> > struct ice_info_ctx {
> >@@ -1282,6 +1283,8 @@ static const struct devlink_ops ice_devlink_ops = {
> > .port_new = ice_devlink_port_new,
> > };
> >
> >+static const struct devlink_ops ice_sf_devlink_ops;
> >+
> > static int
> > ice_devlink_enable_roce_get(struct devlink *devlink, u32 id,
> > struct devlink_param_gset_ctx *ctx)
> >@@ -1422,6 +1425,7 @@ static void ice_devlink_free(void *devlink_ptr)
> > * Allocate a devlink instance for this device and return the private area as
> > * the PF structure. The devlink memory is kept track of through devres by
> > * adding an action to remove it when unwinding.
> >+ *
> > */
> > struct ice_pf *ice_allocate_pf(struct device *dev)
> > {
> >@@ -1438,6 +1442,35 @@ struct ice_pf *ice_allocate_pf(struct device *dev)
> > return devlink_priv(devlink);
> > }
> >
> >+/**
> >+ * ice_allocate_sf - Allocate devlink and return SF structure pointer
> >+ * @dev: the device to allocate for
> >+ * @pf: pointer to the PF structure
> >+ *
> >+ * Allocate a devlink instance for SF.
> >+ *
> >+ * Return: ice_sf_priv pointer to allocated memory or ERR_PTR in case of error
> >+ */
> >+struct ice_sf_priv *ice_allocate_sf(struct device *dev, struct ice_pf *pf)
> >+{
> >+ struct devlink *devlink;
> >+ int err;
> >+
> >+ devlink = devlink_alloc_ns(&ice_sf_devlink_ops,
> >+ sizeof(struct ice_sf_priv),
> >+ devlink_net(priv_to_devlink(pf)), dev);
>
> I don't think this is correct. This is devlink instance for the actual
> SF. It is probed on auxiliary bus. I don't see any reason why the
> devlink instance netns should be determined by the PF devlink netns.
> For VFs, you also don't do it. In mlx5, the only SF implementation, SF
> devlink instances are created in initial netns. Please follow that.
>
Ok, I will change it, thanks.
>
>
> >+ if (!devlink)
> >+ return ERR_PTR(-ENOMEM);
> >+
> >+ err = devl_nested_devlink_set(priv_to_devlink(pf), devlink);
> >+ if (err) {
> >+ devlink_free(devlink);
> >+ return ERR_PTR(err);
> >+ }
> >+
> >+ return devlink_priv(devlink);
> >+}
> >+
> > /**
> > * ice_devlink_register - Register devlink interface for this PF
> > * @pf: the PF to register the devlink for.
> >diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink.h b/drivers/net/ethernet/intel/ice/devlink/devlink.h
> >index d291c0e2e17b..1af3b0763fbb 100644
> >--- a/drivers/net/ethernet/intel/ice/devlink/devlink.h
> >+++ b/drivers/net/ethernet/intel/ice/devlink/devlink.h
> >@@ -5,6 +5,7 @@
> > #define _ICE_DEVLINK_H_
> >
> > struct ice_pf *ice_allocate_pf(struct device *dev);
> >+struct ice_sf_priv *ice_allocate_sf(struct device *dev, struct ice_pf *pf);
> >
> > void ice_devlink_register(struct ice_pf *pf);
> > void ice_devlink_unregister(struct ice_pf *pf);
> >diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink_port.c b/drivers/net/ethernet/intel/ice/devlink/devlink_port.c
> >index 5d1fe08e4bab..f06baabd0112 100644
> >--- a/drivers/net/ethernet/intel/ice/devlink/devlink_port.c
> >+++ b/drivers/net/ethernet/intel/ice/devlink/devlink_port.c
> >@@ -489,6 +489,47 @@ void ice_devlink_destroy_vf_port(struct ice_vf *vf)
> > devl_port_unregister(&vf->devlink_port);
> > }
> >
> >+/**
> >+ * ice_devlink_create_sf_dev_port - Register virtual port for a subfunction
> >+ * @sf_dev: the subfunction device to create a devlink port for
> >+ *
> >+ * Register virtual flavour devlink port for the subfunction auxiliary device
> >+ * created after activating a dynamically added devlink port.
> >+ *
> >+ * Return: zero on success or an error code on failure.
> >+ */
> >+int ice_devlink_create_sf_dev_port(struct ice_sf_dev *sf_dev)
> >+{
> >+ struct devlink_port_attrs attrs = {};
> >+ struct ice_dynamic_port *dyn_port;
> >+ struct devlink_port *devlink_port;
> >+ struct devlink *devlink;
> >+ struct ice_vsi *vsi;
> >+
> >+ dyn_port = sf_dev->dyn_port;
> >+ vsi = dyn_port->vsi;
> >+
> >+ devlink_port = &sf_dev->priv->devlink_port;
> >+
> >+ attrs.flavour = DEVLINK_PORT_FLAVOUR_VIRTUAL;
> >+
> >+ devlink_port_attrs_set(devlink_port, &attrs);
> >+ devlink = priv_to_devlink(sf_dev->priv);
> >+
> >+ return devl_port_register(devlink, devlink_port, vsi->idx);
> >+}
> >+
> >+/**
> >+ * ice_devlink_destroy_sf_dev_port - Destroy virtual port for a subfunction
> >+ * @sf_dev: the subfunction device to create a devlink port for
> >+ *
> >+ * Unregisters the virtual port associated with this subfunction.
> >+ */
> >+void ice_devlink_destroy_sf_dev_port(struct ice_sf_dev *sf_dev)
> >+{
> >+ devl_port_unregister(&sf_dev->priv->devlink_port);
> >+}
> >+
> > /**
> > * ice_dealloc_dynamic_port - Deallocate and remove a dynamic port
> > * @dyn_port: dynamic port instance to deallocate
> >diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink_port.h b/drivers/net/ethernet/intel/ice/devlink/devlink_port.h
> >index 08ebf56664a5..97b21b58c300 100644
> >--- a/drivers/net/ethernet/intel/ice/devlink/devlink_port.h
> >+++ b/drivers/net/ethernet/intel/ice/devlink/devlink_port.h
> >@@ -5,6 +5,7 @@
> > #define _DEVLINK_PORT_H_
> >
> > #include "../ice.h"
> >+#include "../ice_sf_eth.h"
> >
> > /**
> > * struct ice_dynamic_port - Track dynamically added devlink port instance
> >@@ -34,6 +35,8 @@ int ice_devlink_create_vf_port(struct ice_vf *vf);
> > void ice_devlink_destroy_vf_port(struct ice_vf *vf);
> > int ice_devlink_create_sf_port(struct ice_dynamic_port *dyn_port);
> > void ice_devlink_destroy_sf_port(struct ice_dynamic_port *dyn_port);
> >+int ice_devlink_create_sf_dev_port(struct ice_sf_dev *sf_dev);
> >+void ice_devlink_destroy_sf_dev_port(struct ice_sf_dev *sf_dev);
> >
> > #define ice_devlink_port_to_dyn(port) \
> > container_of(port, struct ice_dynamic_port, devlink_port)
> >diff --git a/drivers/net/ethernet/intel/ice/ice_sf_eth.h b/drivers/net/ethernet/intel/ice/ice_sf_eth.h
> >new file mode 100644
> >index 000000000000..a08f8b2bceef
> >--- /dev/null
> >+++ b/drivers/net/ethernet/intel/ice/ice_sf_eth.h
> >@@ -0,0 +1,21 @@
> >+/* SPDX-License-Identifier: GPL-2.0 */
> >+/* Copyright (c) 2024, Intel Corporation. */
> >+
> >+#ifndef _ICE_SF_ETH_H_
> >+#define _ICE_SF_ETH_H_
> >+
> >+#include <linux/auxiliary_bus.h>
> >+#include "ice.h"
> >+
> >+struct ice_sf_dev {
> >+ struct auxiliary_device adev;
> >+ struct ice_dynamic_port *dyn_port;
> >+ struct ice_sf_priv *priv;
> >+};
> >+
> >+struct ice_sf_priv {
> >+ struct ice_sf_dev *dev;
> >+ struct devlink_port devlink_port;
> >+};
> >+
> >+#endif /* _ICE_SF_ETH_H_ */
> >--
> >2.42.0
> >
> >
WARNING: multiple messages have this Message-ID (diff)
From: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
To: Jiri Pirko <jiri@resnulli.us>
Cc: intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org,
jacob.e.keller@intel.com, michal.kubiak@intel.com,
maciej.fijalkowski@intel.com, sridhar.samudrala@intel.com,
przemyslaw.kitszel@intel.com, wojciech.drewek@intel.com,
pio.raczynski@gmail.com, jiri@nvidia.com,
mateusz.polchlopek@intel.com, shayd@nvidia.com,
kalesh-anakkur.purayil@broadcom.com, horms@kernel.org
Subject: Re: [iwl-next v4 05/15] ice: allocate devlink for subfunction
Date: Mon, 3 Jun 2024 15:57:04 +0200 [thread overview]
Message-ID: <Zl3LsLK6LZGUZkkA@mev-dev> (raw)
In-Reply-To: <Zl25Rioa4K2BmYe6@nanopsycho.orion>
On Mon, Jun 03, 2024 at 02:38:30PM +0200, Jiri Pirko wrote:
> Mon, Jun 03, 2024 at 11:50:15AM CEST, michal.swiatkowski@linux.intel.com wrote:
> >From: Piotr Raczynski <piotr.raczynski@intel.com>
> >
> >Make devlink allocation function generic to use it for PF and for SF.
> >
> >Add function for SF devlink port creation. It will be used in next
> >patch.
> >
> >Create header file for subfunction device. Define subfunction device
> >structure there as it is needed for devlink allocation and port
> >creation.
> >
> >Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> >Signed-off-by: Piotr Raczynski <piotr.raczynski@intel.com>
> >Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> >---
> > .../net/ethernet/intel/ice/devlink/devlink.c | 33 +++++++++++++++
> > .../net/ethernet/intel/ice/devlink/devlink.h | 1 +
> > .../ethernet/intel/ice/devlink/devlink_port.c | 41 +++++++++++++++++++
> > .../ethernet/intel/ice/devlink/devlink_port.h | 3 ++
> > drivers/net/ethernet/intel/ice/ice_sf_eth.h | 21 ++++++++++
> > 5 files changed, 99 insertions(+)
> > create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_eth.h
> >
> >diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink.c b/drivers/net/ethernet/intel/ice/devlink/devlink.c
> >index bfb3d5b59a62..00f549daca57 100644
> >--- a/drivers/net/ethernet/intel/ice/devlink/devlink.c
> >+++ b/drivers/net/ethernet/intel/ice/devlink/devlink.c
> >@@ -10,6 +10,7 @@
> > #include "ice_eswitch.h"
> > #include "ice_fw_update.h"
> > #include "ice_dcb_lib.h"
> >+#include "ice_sf_eth.h"
> >
> > /* context for devlink info version reporting */
> > struct ice_info_ctx {
> >@@ -1282,6 +1283,8 @@ static const struct devlink_ops ice_devlink_ops = {
> > .port_new = ice_devlink_port_new,
> > };
> >
> >+static const struct devlink_ops ice_sf_devlink_ops;
> >+
> > static int
> > ice_devlink_enable_roce_get(struct devlink *devlink, u32 id,
> > struct devlink_param_gset_ctx *ctx)
> >@@ -1422,6 +1425,7 @@ static void ice_devlink_free(void *devlink_ptr)
> > * Allocate a devlink instance for this device and return the private area as
> > * the PF structure. The devlink memory is kept track of through devres by
> > * adding an action to remove it when unwinding.
> >+ *
> > */
> > struct ice_pf *ice_allocate_pf(struct device *dev)
> > {
> >@@ -1438,6 +1442,35 @@ struct ice_pf *ice_allocate_pf(struct device *dev)
> > return devlink_priv(devlink);
> > }
> >
> >+/**
> >+ * ice_allocate_sf - Allocate devlink and return SF structure pointer
> >+ * @dev: the device to allocate for
> >+ * @pf: pointer to the PF structure
> >+ *
> >+ * Allocate a devlink instance for SF.
> >+ *
> >+ * Return: ice_sf_priv pointer to allocated memory or ERR_PTR in case of error
> >+ */
> >+struct ice_sf_priv *ice_allocate_sf(struct device *dev, struct ice_pf *pf)
> >+{
> >+ struct devlink *devlink;
> >+ int err;
> >+
> >+ devlink = devlink_alloc_ns(&ice_sf_devlink_ops,
> >+ sizeof(struct ice_sf_priv),
> >+ devlink_net(priv_to_devlink(pf)), dev);
>
> I don't think this is correct. This is devlink instance for the actual
> SF. It is probed on auxiliary bus. I don't see any reason why the
> devlink instance netns should be determined by the PF devlink netns.
> For VFs, you also don't do it. In mlx5, the only SF implementation, SF
> devlink instances are created in initial netns. Please follow that.
>
Ok, I will change it, thanks.
>
>
> >+ if (!devlink)
> >+ return ERR_PTR(-ENOMEM);
> >+
> >+ err = devl_nested_devlink_set(priv_to_devlink(pf), devlink);
> >+ if (err) {
> >+ devlink_free(devlink);
> >+ return ERR_PTR(err);
> >+ }
> >+
> >+ return devlink_priv(devlink);
> >+}
> >+
> > /**
> > * ice_devlink_register - Register devlink interface for this PF
> > * @pf: the PF to register the devlink for.
> >diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink.h b/drivers/net/ethernet/intel/ice/devlink/devlink.h
> >index d291c0e2e17b..1af3b0763fbb 100644
> >--- a/drivers/net/ethernet/intel/ice/devlink/devlink.h
> >+++ b/drivers/net/ethernet/intel/ice/devlink/devlink.h
> >@@ -5,6 +5,7 @@
> > #define _ICE_DEVLINK_H_
> >
> > struct ice_pf *ice_allocate_pf(struct device *dev);
> >+struct ice_sf_priv *ice_allocate_sf(struct device *dev, struct ice_pf *pf);
> >
> > void ice_devlink_register(struct ice_pf *pf);
> > void ice_devlink_unregister(struct ice_pf *pf);
> >diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink_port.c b/drivers/net/ethernet/intel/ice/devlink/devlink_port.c
> >index 5d1fe08e4bab..f06baabd0112 100644
> >--- a/drivers/net/ethernet/intel/ice/devlink/devlink_port.c
> >+++ b/drivers/net/ethernet/intel/ice/devlink/devlink_port.c
> >@@ -489,6 +489,47 @@ void ice_devlink_destroy_vf_port(struct ice_vf *vf)
> > devl_port_unregister(&vf->devlink_port);
> > }
> >
> >+/**
> >+ * ice_devlink_create_sf_dev_port - Register virtual port for a subfunction
> >+ * @sf_dev: the subfunction device to create a devlink port for
> >+ *
> >+ * Register virtual flavour devlink port for the subfunction auxiliary device
> >+ * created after activating a dynamically added devlink port.
> >+ *
> >+ * Return: zero on success or an error code on failure.
> >+ */
> >+int ice_devlink_create_sf_dev_port(struct ice_sf_dev *sf_dev)
> >+{
> >+ struct devlink_port_attrs attrs = {};
> >+ struct ice_dynamic_port *dyn_port;
> >+ struct devlink_port *devlink_port;
> >+ struct devlink *devlink;
> >+ struct ice_vsi *vsi;
> >+
> >+ dyn_port = sf_dev->dyn_port;
> >+ vsi = dyn_port->vsi;
> >+
> >+ devlink_port = &sf_dev->priv->devlink_port;
> >+
> >+ attrs.flavour = DEVLINK_PORT_FLAVOUR_VIRTUAL;
> >+
> >+ devlink_port_attrs_set(devlink_port, &attrs);
> >+ devlink = priv_to_devlink(sf_dev->priv);
> >+
> >+ return devl_port_register(devlink, devlink_port, vsi->idx);
> >+}
> >+
> >+/**
> >+ * ice_devlink_destroy_sf_dev_port - Destroy virtual port for a subfunction
> >+ * @sf_dev: the subfunction device to create a devlink port for
> >+ *
> >+ * Unregisters the virtual port associated with this subfunction.
> >+ */
> >+void ice_devlink_destroy_sf_dev_port(struct ice_sf_dev *sf_dev)
> >+{
> >+ devl_port_unregister(&sf_dev->priv->devlink_port);
> >+}
> >+
> > /**
> > * ice_dealloc_dynamic_port - Deallocate and remove a dynamic port
> > * @dyn_port: dynamic port instance to deallocate
> >diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink_port.h b/drivers/net/ethernet/intel/ice/devlink/devlink_port.h
> >index 08ebf56664a5..97b21b58c300 100644
> >--- a/drivers/net/ethernet/intel/ice/devlink/devlink_port.h
> >+++ b/drivers/net/ethernet/intel/ice/devlink/devlink_port.h
> >@@ -5,6 +5,7 @@
> > #define _DEVLINK_PORT_H_
> >
> > #include "../ice.h"
> >+#include "../ice_sf_eth.h"
> >
> > /**
> > * struct ice_dynamic_port - Track dynamically added devlink port instance
> >@@ -34,6 +35,8 @@ int ice_devlink_create_vf_port(struct ice_vf *vf);
> > void ice_devlink_destroy_vf_port(struct ice_vf *vf);
> > int ice_devlink_create_sf_port(struct ice_dynamic_port *dyn_port);
> > void ice_devlink_destroy_sf_port(struct ice_dynamic_port *dyn_port);
> >+int ice_devlink_create_sf_dev_port(struct ice_sf_dev *sf_dev);
> >+void ice_devlink_destroy_sf_dev_port(struct ice_sf_dev *sf_dev);
> >
> > #define ice_devlink_port_to_dyn(port) \
> > container_of(port, struct ice_dynamic_port, devlink_port)
> >diff --git a/drivers/net/ethernet/intel/ice/ice_sf_eth.h b/drivers/net/ethernet/intel/ice/ice_sf_eth.h
> >new file mode 100644
> >index 000000000000..a08f8b2bceef
> >--- /dev/null
> >+++ b/drivers/net/ethernet/intel/ice/ice_sf_eth.h
> >@@ -0,0 +1,21 @@
> >+/* SPDX-License-Identifier: GPL-2.0 */
> >+/* Copyright (c) 2024, Intel Corporation. */
> >+
> >+#ifndef _ICE_SF_ETH_H_
> >+#define _ICE_SF_ETH_H_
> >+
> >+#include <linux/auxiliary_bus.h>
> >+#include "ice.h"
> >+
> >+struct ice_sf_dev {
> >+ struct auxiliary_device adev;
> >+ struct ice_dynamic_port *dyn_port;
> >+ struct ice_sf_priv *priv;
> >+};
> >+
> >+struct ice_sf_priv {
> >+ struct ice_sf_dev *dev;
> >+ struct devlink_port devlink_port;
> >+};
> >+
> >+#endif /* _ICE_SF_ETH_H_ */
> >--
> >2.42.0
> >
> >
next prev parent reply other threads:[~2024-06-03 13:58 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-03 9:50 [Intel-wired-lan] [iwl-next v4 00/15] ice: support devlink subfunction Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 01/15] ice: add new VSI type for subfunctions Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 02/15] ice: export ice ndo_ops functions Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 03/15] ice: add basic devlink subfunctions support Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 04/15] ice: treat subfunction VSI the same as PF VSI Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 05/15] ice: allocate devlink for subfunction Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 12:38 ` [Intel-wired-lan] " Jiri Pirko
2024-06-03 12:38 ` Jiri Pirko
2024-06-03 13:57 ` Michal Swiatkowski [this message]
2024-06-03 13:57 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 06/15] ice: base subfunction aux driver Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 07/15] ice: implement netdev for subfunction Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 08/15] ice: make representor code generic Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 09/15] ice: create port representor for SF Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 10/15] ice: don't set target VSI for subfunction Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 11/15] ice: check if SF is ready in ethtool ops Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 12/15] ice: implement netdevice ops for SF representor Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 13/15] ice: support subfunction devlink Tx topology Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 14/15] ice: basic support for VLAN in subfunctions Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
2024-06-03 9:50 ` [Intel-wired-lan] [iwl-next v4 15/15] ice: allow to activate and deactivate subfunction Michal Swiatkowski
2024-06-03 9:50 ` Michal Swiatkowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zl3LsLK6LZGUZkkA@mev-dev \
--to=michal.swiatkowski@linux.intel.com \
--cc=horms@kernel.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jacob.e.keller@intel.com \
--cc=jiri@nvidia.com \
--cc=jiri@resnulli.us \
--cc=kalesh-anakkur.purayil@broadcom.com \
--cc=maciej.fijalkowski@intel.com \
--cc=mateusz.polchlopek@intel.com \
--cc=michal.kubiak@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pio.raczynski@gmail.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=shayd@nvidia.com \
--cc=sridhar.samudrala@intel.com \
--cc=wojciech.drewek@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.