From: Raslan Darawsheh <rasland@nvidia.com>
To: Alex Vesker <valex@nvidia.com>, Alex Vesker <valex@nvidia.com>,
Slava Ovsiienko <viacheslavo@nvidia.com>,
"NBU-Contact-Thomas Monjalon (EXTERNAL)" <thomas@monjalon.net>,
Suanming Mou <suanmingm@nvidia.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>, Ori Kam <orika@nvidia.com>
Subject: RE: [v6 00/18] net/mlx5: Add HW steering low level support
Date: Mon, 24 Oct 2022 10:56:43 +0000 [thread overview]
Message-ID: <BYAPR12MB30783B8A147881F3869D0432CF2E9@BYAPR12MB3078.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20221020155749.16643-1-valex@nvidia.com>
Hi,
> -----Original Message-----
> From: Alex Vesker <valex@nvidia.com>
> Sent: Thursday, October 20, 2022 6:58 PM
> To: Alex Vesker <valex@nvidia.com>; Slava Ovsiienko
> <viacheslavo@nvidia.com>; NBU-Contact-Thomas Monjalon (EXTERNAL)
> <thomas@monjalon.net>; Suanming Mou <suanmingm@nvidia.com>
> Cc: dev@dpdk.org; Ori Kam <orika@nvidia.com>
> Subject: [v6 00/18] net/mlx5: Add HW steering low level support
>
> Mellanox ConnetX devices supports packet matching, packet modification
> and redirection. These functionalities are also referred to as flow-steering.
> To configure a steering rule, the rule is written to the device owned memory,
> this memory is accessed and cached by the device when processing a packet.
>
> The highlight of this patchset is supporting HW Steering (HWS) which is the
> new technology supported in new ConnectX devices, HWS allows configuring
> steering rules directly to the HW using special HW queues with minimal CPU
> effort.
>
> This patchset is the internal low layer implementation for HWS used by the
> mlx5 PMD. The mlx5dr (direct rule) is layer that bridges between the PMD
> and the HW by configuring the HW offloads based on the PMD logic
>
> v2:
> Fix check patch and cosmetic changes
>
> v3:
> -Fix unsupported items
> -Fix compilation with mlx5dv dependency
>
> v4:
> -Fix compile on Windows
>
> v5:
> -Fix compile on old rdma-core or no rdma core
>
> v6:
> -Fix meson style and improve configure
> -Checkpatch and compilation fixes
> -Fix action number issue
>
> Alex Vesker (8):
> net/mlx5: Add additional glue functions for HWS
> net/mlx5/hws: Add HWS send layer
> net/mlx5/hws: Add HWS definer layer
> net/mlx5/hws: Add HWS context object
> net/mlx5/hws: Add HWS table object
> net/mlx5/hws: Add HWS matcher object
> net/mlx5/hws: Add HWS rule object
> net/mlx5/hws: Enable HWS
>
> Bing Zhao (2):
> common/mlx5: query set capability of registers
> net/mlx5: provide the available tag registers
>
> Dariusz Sosnowski (1):
> net/mlx5: add port to metadata conversion
>
> Erez Shitrit (3):
> net/mlx5/hws: Add HWS command layer
> net/mlx5/hws: Add HWS pool and buddy
> net/mlx5/hws: Add HWS action object
>
> Hamdan Igbaria (1):
> net/mlx5/hws: Add HWS debug layer
>
> Suanming Mou (3):
> net/mlx5: split flow item translation
> net/mlx5: split flow item matcher and value translation
> net/mlx5: add hardware steering item translation function
>
> doc/guides/nics/features/default.ini | 1 +
> doc/guides/nics/features/mlx5.ini | 1 +
> doc/guides/nics/mlx5.rst | 5 +-
> doc/guides/rel_notes/release_22_11.rst | 4 +
> drivers/common/mlx5/linux/meson.build | 11 +-
> drivers/common/mlx5/linux/mlx5_glue.c | 121 +-
> drivers/common/mlx5/linux/mlx5_glue.h | 17 +
> drivers/common/mlx5/mlx5_devx_cmds.c | 30 +
> drivers/common/mlx5/mlx5_devx_cmds.h | 2 +
> drivers/common/mlx5/mlx5_prm.h | 652 ++++-
> drivers/net/mlx5/hws/meson.build | 18 +
> drivers/net/mlx5/{mlx5_dr.h => hws/mlx5dr.h} | 201 +-
> drivers/net/mlx5/hws/mlx5dr_action.c | 2237 +++++++++++++++
> drivers/net/mlx5/hws/mlx5dr_action.h | 253 ++
> drivers/net/mlx5/hws/mlx5dr_buddy.c | 200 ++
> drivers/net/mlx5/hws/mlx5dr_buddy.h | 22 +
> drivers/net/mlx5/hws/mlx5dr_cmd.c | 948 +++++++
> drivers/net/mlx5/hws/mlx5dr_cmd.h | 230 ++
> drivers/net/mlx5/hws/mlx5dr_context.c | 223 ++
> drivers/net/mlx5/hws/mlx5dr_context.h | 40 +
> drivers/net/mlx5/hws/mlx5dr_debug.c | 462 ++++
> drivers/net/mlx5/hws/mlx5dr_debug.h | 28 +
> drivers/net/mlx5/hws/mlx5dr_definer.c | 1968 ++++++++++++++
> drivers/net/mlx5/hws/mlx5dr_definer.h | 585 ++++
> drivers/net/mlx5/hws/mlx5dr_internal.h | 93 +
> drivers/net/mlx5/hws/mlx5dr_matcher.c | 919 +++++++
> drivers/net/mlx5/hws/mlx5dr_matcher.h | 76 +
> drivers/net/mlx5/hws/mlx5dr_pat_arg.c | 511 ++++
> drivers/net/mlx5/hws/mlx5dr_pat_arg.h | 83 +
> drivers/net/mlx5/hws/mlx5dr_pool.c | 672 +++++
> drivers/net/mlx5/hws/mlx5dr_pool.h | 152 ++
> drivers/net/mlx5/hws/mlx5dr_rule.c | 528 ++++
> drivers/net/mlx5/hws/mlx5dr_rule.h | 50 +
> drivers/net/mlx5/hws/mlx5dr_send.c | 844 ++++++
> drivers/net/mlx5/hws/mlx5dr_send.h | 275 ++
> drivers/net/mlx5/hws/mlx5dr_table.c | 248 ++
> drivers/net/mlx5/hws/mlx5dr_table.h | 44 +
> drivers/net/mlx5/linux/mlx5_os.c | 12 +-
> drivers/net/mlx5/meson.build | 7 +-
> drivers/net/mlx5/mlx5.c | 9 +-
> drivers/net/mlx5/mlx5.h | 8 +-
> drivers/net/mlx5/mlx5_defs.h | 2 +
> drivers/net/mlx5/mlx5_devx.c | 2 +-
> drivers/net/mlx5/mlx5_dr.c | 383 ---
> drivers/net/mlx5/mlx5_flow.c | 29 +-
> drivers/net/mlx5/mlx5_flow.h | 174 +-
> drivers/net/mlx5/mlx5_flow_dv.c | 2567 +++++++++---------
> drivers/net/mlx5/mlx5_flow_hw.c | 115 +-
> 48 files changed, 14368 insertions(+), 1694 deletions(-) create mode 100644
> drivers/net/mlx5/hws/meson.build rename drivers/net/mlx5/{mlx5_dr.h =>
> hws/mlx5dr.h} (67%) create mode 100644
> drivers/net/mlx5/hws/mlx5dr_action.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_action.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_buddy.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_buddy.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_cmd.c create mode
> 100644 drivers/net/mlx5/hws/mlx5dr_cmd.h create mode 100644
> drivers/net/mlx5/hws/mlx5dr_context.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_context.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_debug.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_debug.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_definer.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_definer.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_internal.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_matcher.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_matcher.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_pat_arg.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_pat_arg.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_pool.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_pool.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_rule.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_rule.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_send.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_send.h
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_table.c
> create mode 100644 drivers/net/mlx5/hws/mlx5dr_table.h
> delete mode 100644 drivers/net/mlx5/mlx5_dr.c
>
> --
> 2.18.1
Series applied to next-net-mlx with small modifications to the commit logs,
Kindest regards,
Raslan Darawsheh
prev parent reply other threads:[~2022-10-24 10:56 UTC|newest]
Thread overview: 134+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-22 19:03 [v1 00/19] " Alex Vesker
2022-09-22 19:03 ` [v1 01/19] net/mlx5: split flow item translation Alex Vesker
2022-09-22 19:03 ` [v1 02/19] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-09-22 19:03 ` [v1 03/19] net/mlx5: add hardware steering item translation function Alex Vesker
2022-09-22 19:03 ` [v1 04/19] net/mlx5: add port to metadata conversion Alex Vesker
2022-09-22 19:03 ` [v1 05/19] common/mlx5: query set capability of registers Alex Vesker
2022-09-22 19:03 ` [v1 06/19] net/mlx5: provide the available tag registers Alex Vesker
2022-09-22 19:03 ` [v1 07/19] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-09-22 19:03 ` [v1 08/19] net/mlx5: Remove stub HWS support Alex Vesker
2022-09-22 19:03 ` [v1 09/19] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-09-22 19:03 ` [v1 10/19] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-09-22 19:03 ` [v1 11/19] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-09-22 19:03 ` [v1 12/19] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-09-22 19:03 ` [v1 13/19] net/mlx5/hws: Add HWS context object Alex Vesker
2022-09-22 19:03 ` [v1 14/19] net/mlx5/hws: Add HWS table object Alex Vesker
2022-09-22 19:03 ` [v1 15/19] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-09-22 19:03 ` [v1 16/19] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-09-22 19:03 ` [v1 17/19] net/mlx5/hws: Add HWS action object Alex Vesker
2022-09-22 19:03 ` [v1 18/19] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-09-22 19:03 ` [v1 19/19] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-06 15:03 ` [v2 00/19] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-06 15:03 ` [v2 01/19] net/mlx5: split flow item translation Alex Vesker
2022-10-06 15:03 ` [v2 02/19] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-06 15:03 ` [v2 03/19] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-06 15:03 ` [v2 04/19] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-06 15:03 ` [v2 05/19] common/mlx5: query set capability of registers Alex Vesker
2022-10-06 15:03 ` [v2 06/19] net/mlx5: provide the available tag registers Alex Vesker
2022-10-06 15:03 ` [v2 07/19] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-06 15:03 ` [v2 08/19] net/mlx5: Remove stub HWS support Alex Vesker
2022-10-06 15:03 ` [v2 09/19] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-06 15:03 ` [v2 10/19] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-06 15:03 ` [v2 11/19] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-06 15:03 ` [v2 12/19] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-06 15:03 ` [v2 13/19] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-06 15:03 ` [v2 14/19] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-06 15:03 ` [v2 15/19] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-06 15:03 ` [v2 16/19] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-06 15:03 ` [v2 17/19] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-06 15:03 ` [v2 18/19] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-06 15:03 ` [v2 19/19] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-14 11:48 ` [v3 00/18] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-14 11:48 ` [v3 01/18] net/mlx5: split flow item translation Alex Vesker
2022-10-14 11:48 ` [v3 02/18] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-14 11:48 ` [v3 03/18] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-14 11:48 ` [v3 04/18] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-14 11:48 ` [v3 05/18] common/mlx5: query set capability of registers Alex Vesker
2022-10-14 11:48 ` [v3 06/18] net/mlx5: provide the available tag registers Alex Vesker
2022-10-14 11:48 ` [v3 07/18] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-14 11:48 ` [v3 08/18] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-14 11:48 ` [v3 09/18] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-14 11:48 ` [v3 10/18] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-14 11:48 ` [v3 11/18] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-14 11:48 ` [v3 12/18] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-14 11:48 ` [v3 13/18] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-14 11:48 ` [v3 14/18] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-14 11:48 ` [v3 15/18] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-14 11:48 ` [v3 16/18] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-14 11:48 ` [v3 17/18] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-14 11:48 ` [v3 18/18] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-19 14:42 ` [v4 00/18] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-19 14:42 ` [v4 01/18] net/mlx5: split flow item translation Alex Vesker
2022-10-19 14:42 ` [v4 02/18] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-19 14:42 ` [v4 03/18] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-19 14:42 ` [v4 04/18] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-19 14:42 ` [v4 05/18] common/mlx5: query set capability of registers Alex Vesker
2022-10-19 14:42 ` [v4 06/18] net/mlx5: provide the available tag registers Alex Vesker
2022-10-19 14:42 ` [v4 07/18] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-19 14:42 ` [v4 08/18] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-19 14:42 ` [v4 09/18] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-19 14:42 ` [v4 10/18] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-19 14:42 ` [v4 11/18] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-19 14:42 ` [v4 12/18] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-19 14:42 ` [v4 13/18] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-19 14:42 ` [v4 14/18] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-19 14:42 ` [v4 15/18] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-19 14:42 ` [v4 16/18] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-19 14:42 ` [v4 17/18] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-19 14:42 ` [v4 18/18] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-19 20:57 ` [v5 00/18] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-19 20:57 ` [v5 01/18] net/mlx5: split flow item translation Alex Vesker
2022-10-19 20:57 ` [v5 02/18] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-19 20:57 ` [v5 03/18] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-19 20:57 ` [v5 04/18] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-19 20:57 ` [v5 05/18] common/mlx5: query set capability of registers Alex Vesker
2022-10-19 20:57 ` [v5 06/18] net/mlx5: provide the available tag registers Alex Vesker
2022-10-19 20:57 ` [v5 07/18] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-19 20:57 ` [v5 08/18] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-19 20:57 ` [v5 09/18] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-19 20:57 ` [v5 10/18] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-19 20:57 ` [v5 11/18] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-19 20:57 ` [v5 12/18] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-19 20:57 ` [v5 13/18] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-19 20:57 ` [v5 14/18] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-19 20:57 ` [v5 15/18] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-19 20:57 ` [v5 16/18] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-19 20:57 ` [v5 17/18] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-19 20:57 ` [v5 18/18] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-20 15:57 ` [v6 00/18] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-20 15:57 ` [v6 01/18] net/mlx5: split flow item translation Alex Vesker
2022-10-24 6:47 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 02/18] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-24 6:49 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 03/18] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-24 6:50 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 04/18] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-24 6:50 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 05/18] common/mlx5: query set capability of registers Alex Vesker
2022-10-24 6:50 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 06/18] net/mlx5: provide the available tag registers Alex Vesker
2022-10-24 6:51 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 07/18] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-24 6:52 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 08/18] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-24 6:52 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 09/18] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-24 6:52 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 10/18] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-24 6:53 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 11/18] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-24 6:53 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 12/18] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-24 6:53 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 13/18] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 14/18] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 15/18] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 16/18] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-20 15:57 ` [v6 17/18] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 18/18] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-24 10:56 ` Raslan Darawsheh [this message]
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=BYAPR12MB30783B8A147881F3869D0432CF2E9@BYAPR12MB3078.namprd12.prod.outlook.com \
--to=rasland@nvidia.com \
--cc=dev@dpdk.org \
--cc=orika@nvidia.com \
--cc=suanmingm@nvidia.com \
--cc=thomas@monjalon.net \
--cc=valex@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).