All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bing Zhao <bingz@nvidia.com>
To: <viacheslavo@nvidia.com>, <matan@nvidia.com>
Cc: <dev@dpdk.org>, <orika@nvidia.com>, <rasland@nvidia.com>
Subject: [dpdk-dev] [PATCH 16/17] net/mlx5: reduce the reference count of CT
Date: Tue, 27 Apr 2021 18:38:10 +0300	[thread overview]
Message-ID: <20210427153811.11554-17-bingz@nvidia.com> (raw)
In-Reply-To: <20210427153811.11554-1-bingz@nvidia.com>

In order to release the DR actions and reuse the context of a CT,
the reference count should be handled correctly, especially in the
flow destroying.

The CT index will be recorded in the rte_flow by reusing the age
index. The action context type should be saved for CT also. When
destroying a flow, if the context type is CT and the index valid.
The release process should be handled.

By default, the handling will fall back to release the age.

Signed-off-by: Bing Zhao <bingz@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow.h    | 6 +++++-
 drivers/net/mlx5/mlx5_flow_dv.c | 7 ++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 3b896e3..4ad9910 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -977,11 +977,15 @@ struct rte_flow {
 	uint32_t drv_type:2; /**< Driver type. */
 	uint32_t tunnel:1;
 	uint32_t meter:24; /**< Holds flow meter id. */
+	uint32_t indirect_type:2; /**< Indirect action type. */
 	uint32_t rix_mreg_copy;
 	/**< Index to metadata register copy table resource. */
 	uint32_t counter; /**< Holds flow counter. */
 	uint32_t tunnel_id;  /**< Tunnel id */
-	uint32_t age; /**< Holds ASO age bit index. */
+	union {
+		uint32_t age; /**< Holds ASO age bit index. */
+		uint32_t ct; /**< Holds ASO CT index. */
+	};
 	uint32_t geneve_tlv_option; /**< Holds Geneve TLV option id. > */
 } __rte_packed;
 
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 6478625..3e85d5e 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -12185,6 +12185,8 @@ flow_dv_translate(struct rte_eth_dev *dev,
 			else
 				dev_flow->dv.actions[actions_n] =
 							ct->dr_action_rply;
+			flow->indirect_type = MLX5_INDIRECT_ACTION_TYPE_CT;
+			flow->ct = ct_idx;
 			__atomic_fetch_add(&ct->refcnt, 1, __ATOMIC_RELAXED);
 			actions_n++;
 			action_flags |= MLX5_FLOW_ACTION_CT;
@@ -13328,7 +13330,10 @@ flow_dv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
 			mlx5_flow_meter_detach(priv, fm);
 		flow->meter = 0;
 	}
-	if (flow->age)
+	/* Keep the current age handling by default. */
+	if (flow->indirect_type == MLX5_INDIRECT_ACTION_TYPE_CT && flow->ct)
+		flow_dv_aso_ct_release(dev, flow->ct);
+	else if (flow->age)
 		flow_dv_aso_age_release(dev, flow->age);
 	if (flow->geneve_tlv_option) {
 		flow_dv_geneve_tlv_option_resource_release(dev);
-- 
2.5.5


  parent reply	other threads:[~2021-04-27 15:40 UTC|newest]

Thread overview: 147+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-27 15:37 [dpdk-dev] [PATCH 00/17] conntrack support in mlx5 PMD Bing Zhao
2021-04-27 15:37 ` [dpdk-dev] [PATCH 01/17] common/mlx5: add connection tracking object definition Bing Zhao
2021-04-27 15:37 ` [dpdk-dev] [PATCH 02/17] common/mlx5: add CT offload capability checking Bing Zhao
2021-04-27 15:37 ` [dpdk-dev] [PATCH 03/17] net/mlx5: use meter color reg for CT Bing Zhao
2021-04-27 15:37 ` [dpdk-dev] [PATCH 04/17] net/mlx5: initialization of CT management Bing Zhao
2021-04-27 15:37 ` [dpdk-dev] [PATCH 05/17] common/mlx5: add Dexv CT objects creation Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 06/17] net/mlx5: add modify support for CT Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 07/17] net/mlx5: add actions creating " Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 08/17] net/mlx5: close CT management structure Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 09/17] net/mlx5: add ASO CT query implementation Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 10/17] net/mlx5: add ASO CT destroy handling Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 11/17] net/mlx5: add translation for CT action Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 12/17] net/mlx5: add translation of CT item Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 13/17] net/mlx5: add CT context update Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 14/17] net/mlx5: validation of CT action Bing Zhao
2021-04-27 15:38 ` [dpdk-dev] [PATCH 15/17] net/mlx5: validation of CT item Bing Zhao
2021-04-27 15:38 ` Bing Zhao [this message]
2021-04-27 15:38 ` [dpdk-dev] [PATCH 17/17] net/mlx5: add support of CT between two ports Bing Zhao
2021-05-05  4:19 ` [dpdk-dev] [PATCH v2 00/17] conntrack support in mlx5 PMD Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 01/17] common/mlx5: add connection tracking object definition Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 02/17] common/mlx5: add CT offload capability checking Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 03/17] net/mlx5: use meter color reg for CT Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 04/17] net/mlx5: initialization of CT management Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 05/17] common/mlx5: add Dexv CT objects creation Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 06/17] net/mlx5: add modify support for CT Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 07/17] net/mlx5: add actions creating " Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 08/17] net/mlx5: close CT management structure Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 09/17] net/mlx5: add ASO CT query implementation Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 10/17] net/mlx5: add ASO CT destroy handling Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 11/17] net/mlx5: add translation of CT action Bing Zhao
2021-05-05  4:19   ` [dpdk-dev] [PATCH v2 12/17] net/mlx5: add translation of CT item Bing Zhao
2021-05-05  4:20   ` [dpdk-dev] [PATCH v2 13/17] net/mlx5: add CT context update Bing Zhao
2021-05-05  4:20   ` [dpdk-dev] [PATCH v2 14/17] net/mlx5: validation of CT action Bing Zhao
2021-05-05  4:20   ` [dpdk-dev] [PATCH v2 15/17] net/mlx5: validation of CT item Bing Zhao
2021-05-05  4:20   ` [dpdk-dev] [PATCH v2 16/17] net/mlx5: add support of CT between two ports Bing Zhao
2021-05-05  4:20   ` [dpdk-dev] [PATCH v2 17/17] doc: update mlx5 support for conntrack Bing Zhao
2021-05-05  6:05   ` [dpdk-dev] [PATCH v2 00/17] conntrack support in mlx5 PMD Slava Ovsiienko
2021-05-05  6:40 ` [dpdk-dev] [PATCH v3 " Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 01/17] common/mlx5: add connection tracking object definition Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 02/17] common/mlx5: add CT offload capability checking Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 03/17] net/mlx5: use meter color reg for CT Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 04/17] net/mlx5: initialization of CT management Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 05/17] common/mlx5: add Dexv CT objects creation Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 06/17] net/mlx5: add modify support for CT Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 07/17] net/mlx5: add actions creating " Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 08/17] net/mlx5: close CT management structure Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 09/17] net/mlx5: add ASO CT query implementation Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 10/17] net/mlx5: add ASO CT destroy handling Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 11/17] net/mlx5: add translation of CT action Bing Zhao
2021-05-05  6:40   ` [dpdk-dev] [PATCH v3 12/17] net/mlx5: add translation of CT item Bing Zhao
2021-05-05  6:41   ` [dpdk-dev] [PATCH v3 13/17] net/mlx5: add CT context update Bing Zhao
2021-05-05  6:41   ` [dpdk-dev] [PATCH v3 14/17] net/mlx5: validation of CT action Bing Zhao
2021-05-05  6:41   ` [dpdk-dev] [PATCH v3 15/17] net/mlx5: validation of CT item Bing Zhao
2021-05-05  6:41   ` [dpdk-dev] [PATCH v3 16/17] net/mlx5: add support of CT between two ports Bing Zhao
2021-05-05  6:49 ` [dpdk-dev] [PATCH v3 00/17] conntrack support in mlx5 PMD Bing Zhao
2021-05-05  6:49   ` [dpdk-dev] [PATCH v3 01/17] common/mlx5: add connection tracking object definition Bing Zhao
2021-05-05  6:49   ` [dpdk-dev] [PATCH v3 02/17] common/mlx5: add CT offload capability checking Bing Zhao
2021-05-05  6:49   ` [dpdk-dev] [PATCH v3 03/17] net/mlx5: use meter color reg for CT Bing Zhao
2021-05-05  6:49   ` [dpdk-dev] [PATCH v3 04/17] net/mlx5: initialization of CT management Bing Zhao
2021-05-05  6:49   ` [dpdk-dev] [PATCH v3 05/17] common/mlx5: add Dexv CT objects creation Bing Zhao
2021-05-05  6:49   ` [dpdk-dev] [PATCH v3 06/17] net/mlx5: add modify support for CT Bing Zhao
2021-05-05  6:49   ` [dpdk-dev] [PATCH v3 07/17] net/mlx5: add actions creating " Bing Zhao
2021-05-05  6:49   ` [dpdk-dev] [PATCH v3 08/17] net/mlx5: close CT management structure Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 09/17] net/mlx5: add ASO CT query implementation Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 10/17] net/mlx5: add ASO CT destroy handling Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 11/17] net/mlx5: add translation of CT action Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 12/17] net/mlx5: add translation of CT item Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 13/17] net/mlx5: add CT context update Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 14/17] net/mlx5: validation of CT action Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 15/17] net/mlx5: validation of CT item Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 16/17] net/mlx5: add support of CT between two ports Bing Zhao
2021-05-05  6:50   ` [dpdk-dev] [PATCH v3 17/17] doc: update mlx5 support for conntrack Bing Zhao
2021-05-05  7:19 ` [dpdk-dev] [PATCH v4 00/17] conntrack support in mlx5 PMD Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 01/17] common/mlx5: add connection tracking object definition Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 02/17] common/mlx5: add CT offload capability checking Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 03/17] net/mlx5: use meter color reg for CT Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 04/17] net/mlx5: initialization of CT management Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 05/17] common/mlx5: add Dexv CT objects creation Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 06/17] net/mlx5: add modify support for CT Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 07/17] net/mlx5: add actions creating " Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 08/17] net/mlx5: close CT management structure Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 09/17] net/mlx5: add ASO CT query implementation Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 10/17] net/mlx5: add ASO CT destroy handling Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 11/17] net/mlx5: add translation of CT action Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 12/17] net/mlx5: add translation of CT item Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 13/17] net/mlx5: add CT context update Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 14/17] net/mlx5: validation of CT action Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 15/17] net/mlx5: validation of CT item Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 16/17] net/mlx5: add support of CT between two ports Bing Zhao
2021-05-05  7:19   ` [dpdk-dev] [PATCH v4 17/17] doc: update mlx5 support for conntrack Bing Zhao
2021-05-05  8:05 ` [dpdk-dev] [PATCH v5 00/17] conntrack support in mlx5 PMD Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 01/17] common/mlx5: add connection tracking object definition Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 02/17] common/mlx5: add CT offload capability checking Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 03/17] net/mlx5: use meter color reg for CT Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 04/17] net/mlx5: initialization of CT management Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 05/17] common/mlx5: add Dexv CT objects creation Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 06/17] net/mlx5: add modify support for CT Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 07/17] net/mlx5: add actions creating " Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 08/17] net/mlx5: close CT management structure Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 09/17] net/mlx5: add ASO CT query implementation Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 10/17] net/mlx5: add ASO CT destroy handling Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 11/17] net/mlx5: add translation of CT action Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 12/17] net/mlx5: add translation of CT item Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 13/17] net/mlx5: add CT context update Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 14/17] net/mlx5: validation of CT action Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 15/17] net/mlx5: validation of CT item Bing Zhao
2021-05-05  8:05   ` [dpdk-dev] [PATCH v5 16/17] net/mlx5: add support of CT between two ports Bing Zhao
2021-05-05  8:06   ` [dpdk-dev] [PATCH v5 17/17] doc: update mlx5 support for conntrack Bing Zhao
2021-05-05  9:49 ` [dpdk-dev] [PATCH v6 00/17] conntrack support in mlx5 PMD Bing Zhao
2021-05-05  9:49   ` [dpdk-dev] [PATCH v6 01/17] common/mlx5: add connection tracking object definition Bing Zhao
2021-05-05  9:49   ` [dpdk-dev] [PATCH v6 02/17] common/mlx5: add CT offload capability checking Bing Zhao
2021-05-05  9:49   ` [dpdk-dev] [PATCH v6 03/17] net/mlx5: use meter color reg for CT Bing Zhao
2021-05-05  9:49   ` [dpdk-dev] [PATCH v6 04/17] net/mlx5: initialization of CT management Bing Zhao
2021-05-05  9:49   ` [dpdk-dev] [PATCH v6 05/17] common/mlx5: add Dexv CT objects creation Bing Zhao
2021-05-05  9:49   ` [dpdk-dev] [PATCH v6 06/17] net/mlx5: add modify support for CT Bing Zhao
2021-05-05  9:49   ` [dpdk-dev] [PATCH v6 07/17] net/mlx5: add actions creating " Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 08/17] net/mlx5: close CT management structure Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 09/17] net/mlx5: add ASO CT query implementation Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 10/17] net/mlx5: add ASO CT destroy handling Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 11/17] net/mlx5: add translation of CT action Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 12/17] net/mlx5: add translation of CT item Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 13/17] net/mlx5: add CT context update Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 14/17] net/mlx5: validation of CT action Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 15/17] net/mlx5: validation of CT item Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 16/17] net/mlx5: add support of CT between two ports Bing Zhao
2021-05-05  9:50   ` [dpdk-dev] [PATCH v6 17/17] doc: update mlx5 support for conntrack Bing Zhao
2021-05-05 12:23 ` [dpdk-dev] [PATCH v7 00/17] conntrack support in mlx5 PMD Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 01/17] common/mlx5: add connection tracking object definition Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 02/17] common/mlx5: add CT offload capability checking Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 03/17] net/mlx5: use meter color reg for CT Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 04/17] net/mlx5: initialization of CT management Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 05/17] common/mlx5: add Dexv CT objects creation Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 06/17] net/mlx5: add modify support for CT Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 07/17] net/mlx5: add actions creating " Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 08/17] net/mlx5: close CT management structure Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 09/17] net/mlx5: add ASO CT query implementation Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 10/17] net/mlx5: add ASO CT destroy handling Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 11/17] net/mlx5: add translation of CT action Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 12/17] net/mlx5: add translation of CT item Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 13/17] net/mlx5: add CT context update Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 14/17] net/mlx5: validation of CT action Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 15/17] net/mlx5: validation of CT item Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 16/17] net/mlx5: add support of CT between two ports Bing Zhao
2021-05-05 12:23   ` [dpdk-dev] [PATCH v7 17/17] doc: update mlx5 support for conntrack Bing Zhao
2021-05-05 18:21     ` Ferruh Yigit
2021-05-18 13:05       ` Bing Zhao
2021-05-05 17:35   ` [dpdk-dev] [PATCH v7 00/17] conntrack support in mlx5 PMD Raslan Darawsheh

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=20210427153811.11554-17-bingz@nvidia.com \
    --to=bingz@nvidia.com \
    --cc=dev@dpdk.org \
    --cc=matan@nvidia.com \
    --cc=orika@nvidia.com \
    --cc=rasland@nvidia.com \
    --cc=viacheslavo@nvidia.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.