All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Tantilov, Emil S" <emil.s.tantilov@intel.com>
To: Larysa Zaremba <larysa.zaremba@intel.com>,
	<intel-wired-lan@lists.osuosl.org>,
	Tony Nguyen <anthony.l.nguyen@intel.com>
Cc: <aleksander.lobakin@intel.com>, <sridhar.samudrala@intel.com>,
	"Singhai, Anjali" <anjali.singhai@intel.com>,
	Michal Swiatkowski <michal.swiatkowski@linux.intel.com>,
	"Fijalkowski, Maciej" <maciej.fijalkowski@intel.com>,
	Madhu Chittim <madhu.chittim@intel.com>,
	"Josh Hay" <joshua.a.hay@intel.com>,
	"Keller, Jacob E" <jacob.e.keller@intel.com>,
	<jayaprakash.shanmugam@intel.com>, <natalia.wochtman@intel.com>,
	Jiri Pirko <jiri@resnulli.us>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Simon Horman <horms@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
	Richard Cochran <richardcochran@gmail.com>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>,
	Andrew Lunn <andrew+netdev@lunn.ch>, <netdev@vger.kernel.org>,
	<linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Subject: Re: [Intel-wired-lan] [PATCH iwl-next v5 09/15] idpf: refactor idpf to use libie control queues
Date: Wed, 10 Dec 2025 19:42:53 -0800	[thread overview]
Message-ID: <f9a69abd-dabc-440a-a3cd-c88b184f7e77@intel.com> (raw)
In-Reply-To: <20251117134912.18566-10-larysa.zaremba@intel.com>


On 11/17/2025 5:48 AM, Larysa Zaremba wrote:
> From: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
> 
> Support to initialize and configure controlqs, and manage their
> transactions was introduced in libie. As part of it, most of the existing
> controlq structures are renamed and modified. Use those APIs in idpf and
> make all the necessary changes.
> 
> Previously for the send and receive virtchnl messages, there used to be a
> memcpy involved in controlq code to copy the buffer info passed by the send
> function into the controlq specific buffers. There was no restriction to
> use automatic memory in that case. The new implementation in libie removed
> copying of the send buffer info and introduced DMA mapping of the send
> buffer itself. To accommodate it, use dynamic memory for the larger send
> buffers. For smaller ones (<= 128 bytes) libie still can copy them into the
> pre-allocated message memory.
> 
> In case of receive, idpf receives a page pool buffer allocated by the libie
> and care should be taken to release it after use in the idpf.
> 
> The changes are fairly trivial and localized, with a notable exception
> being the consolidation of idpf_vc_xn_shutdown and idpf_deinit_dflt_mbx
> under the latter name. This has some additional consequences that are
> addressed in the following patches.
> 
> This refactoring introduces roughly additional 40KB of module storage used
> for systems that only run idpf, so idpf + libie_cp + libie_pci takes about
> 7% more storage than just idpf before refactoring.
> 
> We now pre-allocate small TX buffers, so that does increase the memory
> usage, but reduces the need to allocate. This results in additional 256 *
> 128B of memory permanently used, increasing the worst-case memory usage by
> 32KB but our ctlq RX buffers need to be of size 4096B anyway (not changed
> by the patchset), so this is hardly noticeable.
> 
> As for the timings, the fact that we are mostly limited by the HW response
> time which is far from instant, is not changed by this refactor.
> 
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
> Co-developed-by: Larysa Zaremba <larysa.zaremba@intel.com>
> Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
> ---
>   drivers/net/ethernet/intel/idpf/Makefile      |    2 -
>   drivers/net/ethernet/intel/idpf/idpf.h        |   28 +-
>   .../net/ethernet/intel/idpf/idpf_controlq.c   |  633 -------
>   .../net/ethernet/intel/idpf/idpf_controlq.h   |  142 --
>   .../ethernet/intel/idpf/idpf_controlq_api.h   |  177 --
>   .../ethernet/intel/idpf/idpf_controlq_setup.c |  171 --
>   drivers/net/ethernet/intel/idpf/idpf_dev.c    |   60 +-
>   .../net/ethernet/intel/idpf/idpf_ethtool.c    |   20 +-
>   drivers/net/ethernet/intel/idpf/idpf_lib.c    |   67 +-
>   drivers/net/ethernet/intel/idpf/idpf_main.c   |    5 -
>   drivers/net/ethernet/intel/idpf/idpf_mem.h    |   20 -
>   drivers/net/ethernet/intel/idpf/idpf_txrx.h   |    2 +-
>   drivers/net/ethernet/intel/idpf/idpf_vf_dev.c |   67 +-
>   .../net/ethernet/intel/idpf/idpf_virtchnl.c   | 1580 ++++++-----------
>   .../net/ethernet/intel/idpf/idpf_virtchnl.h   |   90 +-
>   .../ethernet/intel/idpf/idpf_virtchnl_ptp.c   |  239 ++-
>   16 files changed, 783 insertions(+), 2520 deletions(-)
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq.c
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq.h
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq_api.h
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq_setup.c
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_mem.h
> 

<snip>

> diff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ethernet/intel/idpf/idpf_lib.c
> index e15b1e8effc8..7751a81fc29d 100644
> --- a/drivers/net/ethernet/intel/idpf/idpf_lib.c
> +++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c
> @@ -1363,6 +1363,7 @@ void idpf_statistics_task(struct work_struct *work)
>    */
>   void idpf_mbx_task(struct work_struct *work)
>   {
> +	struct libie_ctlq_xn_recv_params xn_params;
>   	struct idpf_adapter *adapter;
>   
>   	adapter = container_of(work, struct idpf_adapter, mbx_task.work);
> @@ -1373,7 +1374,14 @@ void idpf_mbx_task(struct work_struct *work)
>   		queue_delayed_work(adapter->mbx_wq, &adapter->mbx_task,
>   				   usecs_to_jiffies(300));
>   
> -	idpf_recv_mb_msg(adapter, adapter->hw.arq);
> +	xn_params = (struct libie_ctlq_xn_recv_params) {
> +		.xnm = adapter->xn_init_params.xnm,
> +		.ctlq = adapter->arq,
> +		.ctlq_msg_handler = idpf_recv_event_msg,
> +		.budget = LIBIE_CTLQ_MAX_XN_ENTRIES,
> +	};
> +
> +	libie_ctlq_xn_recv(&xn_params);
>   }
>   
>   /**
> @@ -1907,7 +1915,6 @@ static void idpf_init_hard_reset(struct idpf_adapter *adapter)
>   		idpf_vc_core_deinit(adapter);
>   		if (!is_reset)
>   			reg_ops->trigger_reset(adapter, IDPF_HR_FUNC_RESET);
> -		idpf_deinit_dflt_mbx(adapter);
>   	} else {
>   		dev_err(dev, "Unhandled hard reset cause\n");
>   		err = -EBADRQC;
> @@ -1972,19 +1979,11 @@ void idpf_vc_event_task(struct work_struct *work)
>   	if (test_bit(IDPF_REMOVE_IN_PROG, adapter->flags))
>   		return;
>   
> -	if (test_bit(IDPF_HR_FUNC_RESET, adapter->flags))
> -		goto func_reset;
> -
> -	if (test_bit(IDPF_HR_DRV_LOAD, adapter->flags))
> -		goto drv_load;
> -
> -	return;
> -
> -func_reset:
> -	idpf_vc_xn_shutdown(adapter->vcxn_mngr);

This will cause a regression where VC can timeout on reset:
https://lore.kernel.org/intel-wired-lan/20250508184715.7631-1-emil.s.tantilov@intel.com/

I think we can keep this logic, remove the calls to vc_xn_shutdown in
idpf_vc_core_deinit() and add it to idpf_remove().

Thanks,
Emil


WARNING: multiple messages have this Message-ID (diff)
From: "Tantilov, Emil S" <emil.s.tantilov@intel.com>
To: Larysa Zaremba <larysa.zaremba@intel.com>,
	<intel-wired-lan@lists.osuosl.org>,
	Tony Nguyen <anthony.l.nguyen@intel.com>
Cc: <aleksander.lobakin@intel.com>, <sridhar.samudrala@intel.com>,
	"Singhai, Anjali" <anjali.singhai@intel.com>,
	Michal Swiatkowski <michal.swiatkowski@linux.intel.com>,
	"Fijalkowski, Maciej" <maciej.fijalkowski@intel.com>,
	Madhu Chittim <madhu.chittim@intel.com>,
	"Josh Hay" <joshua.a.hay@intel.com>,
	"Keller, Jacob E" <jacob.e.keller@intel.com>,
	<jayaprakash.shanmugam@intel.com>, <natalia.wochtman@intel.com>,
	Jiri Pirko <jiri@resnulli.us>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Simon Horman <horms@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
	Richard Cochran <richardcochran@gmail.com>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>,
	Andrew Lunn <andrew+netdev@lunn.ch>, <netdev@vger.kernel.org>,
	<linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Subject: Re: [PATCH iwl-next v5 09/15] idpf: refactor idpf to use libie control queues
Date: Wed, 10 Dec 2025 19:42:53 -0800	[thread overview]
Message-ID: <f9a69abd-dabc-440a-a3cd-c88b184f7e77@intel.com> (raw)
In-Reply-To: <20251117134912.18566-10-larysa.zaremba@intel.com>


On 11/17/2025 5:48 AM, Larysa Zaremba wrote:
> From: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
> 
> Support to initialize and configure controlqs, and manage their
> transactions was introduced in libie. As part of it, most of the existing
> controlq structures are renamed and modified. Use those APIs in idpf and
> make all the necessary changes.
> 
> Previously for the send and receive virtchnl messages, there used to be a
> memcpy involved in controlq code to copy the buffer info passed by the send
> function into the controlq specific buffers. There was no restriction to
> use automatic memory in that case. The new implementation in libie removed
> copying of the send buffer info and introduced DMA mapping of the send
> buffer itself. To accommodate it, use dynamic memory for the larger send
> buffers. For smaller ones (<= 128 bytes) libie still can copy them into the
> pre-allocated message memory.
> 
> In case of receive, idpf receives a page pool buffer allocated by the libie
> and care should be taken to release it after use in the idpf.
> 
> The changes are fairly trivial and localized, with a notable exception
> being the consolidation of idpf_vc_xn_shutdown and idpf_deinit_dflt_mbx
> under the latter name. This has some additional consequences that are
> addressed in the following patches.
> 
> This refactoring introduces roughly additional 40KB of module storage used
> for systems that only run idpf, so idpf + libie_cp + libie_pci takes about
> 7% more storage than just idpf before refactoring.
> 
> We now pre-allocate small TX buffers, so that does increase the memory
> usage, but reduces the need to allocate. This results in additional 256 *
> 128B of memory permanently used, increasing the worst-case memory usage by
> 32KB but our ctlq RX buffers need to be of size 4096B anyway (not changed
> by the patchset), so this is hardly noticeable.
> 
> As for the timings, the fact that we are mostly limited by the HW response
> time which is far from instant, is not changed by this refactor.
> 
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
> Co-developed-by: Larysa Zaremba <larysa.zaremba@intel.com>
> Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
> ---
>   drivers/net/ethernet/intel/idpf/Makefile      |    2 -
>   drivers/net/ethernet/intel/idpf/idpf.h        |   28 +-
>   .../net/ethernet/intel/idpf/idpf_controlq.c   |  633 -------
>   .../net/ethernet/intel/idpf/idpf_controlq.h   |  142 --
>   .../ethernet/intel/idpf/idpf_controlq_api.h   |  177 --
>   .../ethernet/intel/idpf/idpf_controlq_setup.c |  171 --
>   drivers/net/ethernet/intel/idpf/idpf_dev.c    |   60 +-
>   .../net/ethernet/intel/idpf/idpf_ethtool.c    |   20 +-
>   drivers/net/ethernet/intel/idpf/idpf_lib.c    |   67 +-
>   drivers/net/ethernet/intel/idpf/idpf_main.c   |    5 -
>   drivers/net/ethernet/intel/idpf/idpf_mem.h    |   20 -
>   drivers/net/ethernet/intel/idpf/idpf_txrx.h   |    2 +-
>   drivers/net/ethernet/intel/idpf/idpf_vf_dev.c |   67 +-
>   .../net/ethernet/intel/idpf/idpf_virtchnl.c   | 1580 ++++++-----------
>   .../net/ethernet/intel/idpf/idpf_virtchnl.h   |   90 +-
>   .../ethernet/intel/idpf/idpf_virtchnl_ptp.c   |  239 ++-
>   16 files changed, 783 insertions(+), 2520 deletions(-)
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq.c
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq.h
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq_api.h
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq_setup.c
>   delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_mem.h
> 

<snip>

> diff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ethernet/intel/idpf/idpf_lib.c
> index e15b1e8effc8..7751a81fc29d 100644
> --- a/drivers/net/ethernet/intel/idpf/idpf_lib.c
> +++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c
> @@ -1363,6 +1363,7 @@ void idpf_statistics_task(struct work_struct *work)
>    */
>   void idpf_mbx_task(struct work_struct *work)
>   {
> +	struct libie_ctlq_xn_recv_params xn_params;
>   	struct idpf_adapter *adapter;
>   
>   	adapter = container_of(work, struct idpf_adapter, mbx_task.work);
> @@ -1373,7 +1374,14 @@ void idpf_mbx_task(struct work_struct *work)
>   		queue_delayed_work(adapter->mbx_wq, &adapter->mbx_task,
>   				   usecs_to_jiffies(300));
>   
> -	idpf_recv_mb_msg(adapter, adapter->hw.arq);
> +	xn_params = (struct libie_ctlq_xn_recv_params) {
> +		.xnm = adapter->xn_init_params.xnm,
> +		.ctlq = adapter->arq,
> +		.ctlq_msg_handler = idpf_recv_event_msg,
> +		.budget = LIBIE_CTLQ_MAX_XN_ENTRIES,
> +	};
> +
> +	libie_ctlq_xn_recv(&xn_params);
>   }
>   
>   /**
> @@ -1907,7 +1915,6 @@ static void idpf_init_hard_reset(struct idpf_adapter *adapter)
>   		idpf_vc_core_deinit(adapter);
>   		if (!is_reset)
>   			reg_ops->trigger_reset(adapter, IDPF_HR_FUNC_RESET);
> -		idpf_deinit_dflt_mbx(adapter);
>   	} else {
>   		dev_err(dev, "Unhandled hard reset cause\n");
>   		err = -EBADRQC;
> @@ -1972,19 +1979,11 @@ void idpf_vc_event_task(struct work_struct *work)
>   	if (test_bit(IDPF_REMOVE_IN_PROG, adapter->flags))
>   		return;
>   
> -	if (test_bit(IDPF_HR_FUNC_RESET, adapter->flags))
> -		goto func_reset;
> -
> -	if (test_bit(IDPF_HR_DRV_LOAD, adapter->flags))
> -		goto drv_load;
> -
> -	return;
> -
> -func_reset:
> -	idpf_vc_xn_shutdown(adapter->vcxn_mngr);

This will cause a regression where VC can timeout on reset:
https://lore.kernel.org/intel-wired-lan/20250508184715.7631-1-emil.s.tantilov@intel.com/

I think we can keep this logic, remove the calls to vc_xn_shutdown in
idpf_vc_core_deinit() and add it to idpf_remove().

Thanks,
Emil


  reply	other threads:[~2025-12-11  3:43 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-17 13:48 [Intel-wired-lan] [PATCH iwl-next v5 00/15] Introduce iXD driver Larysa Zaremba
2025-11-17 13:48 ` Larysa Zaremba
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 01/15] virtchnl: create 'include/linux/intel' and move necessary header files Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-24 17:49   ` [Intel-wired-lan] " Salin, Samuel
2026-02-24 17:49     ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 02/15] virtchnl: introduce control plane version fields Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 03/15] libie: add PCI device initialization helpers to libie Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-24  7:20   ` [Intel-wired-lan] " R, Bharath
2026-02-24  7:20     ` R, Bharath
2026-02-24 17:17     ` Salin, Samuel
2026-02-24 17:17       ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 04/15] libeth: allow to create fill queues without NAPI Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-24  7:17   ` [Intel-wired-lan] " R, Bharath
2026-02-24  7:17     ` R, Bharath
2026-02-24 17:17     ` Salin, Samuel
2026-02-24 17:17       ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 05/15] libie: add control queue support Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-24  7:15   ` [Intel-wired-lan] " R, Bharath
2026-02-24  7:15     ` R, Bharath
2026-02-24 17:17     ` Salin, Samuel
2026-02-24 17:17       ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 06/15] libie: add bookkeeping support for control queue messages Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-24  7:12   ` [Intel-wired-lan] " R, Bharath
2026-02-24  7:12     ` R, Bharath
2026-02-24 17:17     ` Salin, Samuel
2026-02-24 17:17       ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 07/15] idpf: remove 'vport_params_reqd' field Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-23 17:16   ` [Intel-wired-lan] " Salin, Samuel
2026-02-23 17:16     ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 08/15] idpf: refactor idpf to use libie_pci APIs Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-23 17:16   ` [Intel-wired-lan] " Salin, Samuel
2026-02-23 17:16     ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 09/15] idpf: refactor idpf to use libie control queues Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2025-12-11  3:42   ` Tantilov, Emil S [this message]
2025-12-11  3:42     ` Tantilov, Emil S
2025-12-15 16:10     ` [Intel-wired-lan] " Larysa Zaremba
2025-12-15 16:10       ` Larysa Zaremba
2026-02-23 17:18       ` [Intel-wired-lan] " Salin, Samuel
2026-02-23 17:18         ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 10/15] idpf: make mbx_task queueing and cancelling more consistent Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-23 17:16   ` [Intel-wired-lan] " Salin, Samuel
2026-02-23 17:16     ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 11/15] idpf: print a debug message and bail in case of non-event ctlq message Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-23 17:16   ` [Intel-wired-lan] " Salin, Samuel
2026-02-23 17:16     ` Salin, Samuel
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 12/15] ixd: add basic driver framework for Intel(R) Control Plane Function Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2025-11-17 14:18   ` [Intel-wired-lan] " Loktionov, Aleksandr
2025-11-17 14:18     ` Loktionov, Aleksandr
2025-11-17 14:40     ` Larysa Zaremba
2026-02-24  7:02   ` R, Bharath
2026-02-24  7:02     ` R, Bharath
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 13/15] ixd: add reset checks and initialize the mailbox Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2025-11-17 14:21   ` [Intel-wired-lan] " Loktionov, Aleksandr
2025-11-17 14:21     ` Loktionov, Aleksandr
2025-11-17 14:42     ` Larysa Zaremba
2025-11-17 14:47       ` Loktionov, Aleksandr
2025-11-17 14:47         ` Loktionov, Aleksandr
2026-02-24  7:00   ` R, Bharath
2026-02-24  7:00     ` R, Bharath
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 14/15] ixd: add the core initialization Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2026-02-24  6:57   ` [Intel-wired-lan] " R, Bharath
2026-02-24  6:57     ` R, Bharath
2025-11-17 13:48 ` [Intel-wired-lan] [PATCH iwl-next v5 15/15] ixd: add devlink support Larysa Zaremba
2025-11-17 13:48   ` Larysa Zaremba
2025-11-17 14:28   ` [Intel-wired-lan] " Loktionov, Aleksandr
2025-11-17 14:28     ` Loktionov, Aleksandr
2025-11-18  6:58     ` Jacob Keller
2026-02-24  5:36   ` R, Bharath
2026-02-24  5:36     ` R, Bharath

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=f9a69abd-dabc-440a-a3cd-c88b184f7e77@intel.com \
    --to=emil.s.tantilov@intel.com \
    --cc=aleksander.lobakin@intel.com \
    --cc=aleksandr.loktionov@intel.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=anjali.singhai@intel.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=jacob.e.keller@intel.com \
    --cc=jayaprakash.shanmugam@intel.com \
    --cc=jiri@resnulli.us \
    --cc=joshua.a.hay@intel.com \
    --cc=kuba@kernel.org \
    --cc=larysa.zaremba@intel.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciej.fijalkowski@intel.com \
    --cc=madhu.chittim@intel.com \
    --cc=michal.swiatkowski@linux.intel.com \
    --cc=natalia.wochtman@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=przemyslaw.kitszel@intel.com \
    --cc=richardcochran@gmail.com \
    --cc=sridhar.samudrala@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.