From: Laatz, Kevin <kevin.laatz@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH bpf-next v3 03/11] xsk: add support to allow unaligned chunk placement
Date: Fri, 26 Jul 2019 10:58:14 +0100 [thread overview]
Message-ID: <15523237-8aab-f341-3af9-57b8ab65be03@intel.com> (raw)
In-Reply-To: <096504af-35a9-7604-7c06-e500224256ea@intel.com>
On 26/07/2019 10:47, Laatz, Kevin wrote:
> On 25/07/2019 16:39, Jonathan Lemon wrote:
>> On 23 Jul 2019, at 22:10, Kevin Laatz wrote:
>>
>>> Currently, addresses are chunk size aligned. This means, we are very
>>> restricted in terms of where we can place chunk within the umem. For
>>> example, if we have a chunk size of 2k, then our chunks can only be
>>> placed
>>> at 0,2k,4k,6k,8k... and so on (ie. every 2k starting from 0).
>>>
>>> This patch introduces the ability to use unaligned chunks. With these
>>> changes, we are no longer bound to having to place chunks at a 2k (or
>>> whatever your chunk size is) interval. Since we are no longer
>>> dealing with
>>> aligned chunks, they can now cross page boundaries. Checks for page
>>> contiguity have been added in order to keep track of which pages are
>>> followed by a physically contiguous page.
>>>
>>> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
>>> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
>>> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
>>>
>>> ---
>>> v2:
>>> ? - Add checks for the flags coming from userspace
>>> ? - Fix how we get chunk_size in xsk_diag.c
>>> ? - Add defines for masking the new descriptor format
>>> ? - Modified the rx functions to use new descriptor format
>>> ? - Modified the tx functions to use new descriptor format
>>>
>>> v3:
>>> ? - Add helper function to do address/offset masking/addition
>>> ---
>>> ?include/net/xdp_sock.h????? | 17 ++++++++
>>> ?include/uapi/linux/if_xdp.h |? 9 ++++
>>> ?net/xdp/xdp_umem.c????????? | 18 +++++---
>>> ?net/xdp/xsk.c?????????????? | 86 ++++++++++++++++++++++++++++++-------
>>> ?net/xdp/xsk_diag.c????????? |? 2 +-
>>> ?net/xdp/xsk_queue.h???????? | 68 +++++++++++++++++++++++++----
>>> ?6 files changed, 170 insertions(+), 30 deletions(-)
>>>
>>> diff --git a/include/net/xdp_sock.h b/include/net/xdp_sock.h
>>> index 69796d264f06..738996c0f995 100644
>>> --- a/include/net/xdp_sock.h
>>> +++ b/include/net/xdp_sock.h
>>> @@ -19,6 +19,7 @@ struct xsk_queue;
>>> ?struct xdp_umem_page {
>>> ???? void *addr;
>>> ???? dma_addr_t dma;
>>> +??? bool next_pg_contig;
>>> ?};
>>>
>>> ?struct xdp_umem_fq_reuse {
>>> @@ -48,6 +49,7 @@ struct xdp_umem {
>>> ???? bool zc;
>>> ???? spinlock_t xsk_list_lock;
>>> ???? struct list_head xsk_list;
>>> +??? u32 flags;
>>> ?};
>>>
>>> ?struct xdp_sock {
>>> @@ -144,6 +146,15 @@ static inline void xsk_umem_fq_reuse(struct
>>> xdp_umem *umem, u64 addr)
>>>
>>> ???? rq->handles[rq->length++] = addr;
>>> ?}
>>> +
>>> +static inline u64 xsk_umem_handle_offset(struct xdp_umem *umem, u64
>>> handle,
>>> +???????????????????? u64 offset)
>>> +{
>>> +??? if (umem->flags & XDP_UMEM_UNALIGNED_CHUNKS)
>>> +??????? return handle |= (offset << XSK_UNALIGNED_BUF_OFFSET_SHIFT);
>>> +??? else
>>> +??????? return handle += offset;
>>> +}
>>
>> This should be something like 'xsk_umem_adjust_offset()', and use
>> "+=" for both cases.
>
> I'll try to come up with a better name for this, I see how
> "handle_offset" could be misleading :)
>
> In terms of the "+=", we can't do that for both. We need to use | for
> the unaligned case since we store the offset in the upper 16-bits of
> the address field so that we leave the lower 48-bits (the original
> base address) untouched.
>
Correction, we can do "+=". With that, the lower 48-bits will still
remain untouched though, so we still have the original address :)
>
> <...>
>
>>>
>>> ???? if (!PAGE_ALIGNED(addr)) {
>>> @@ -331,9 +335,11 @@ static int xdp_umem_reg(struct xdp_umem *umem,
>>> struct xdp_umem_reg *mr)
>>> ???? if (chunks == 0)
>>> ???????? return -EINVAL;
>>>
>>> -??? chunks_per_page = PAGE_SIZE / chunk_size;
>>> -??? if (chunks < chunks_per_page || chunks % chunks_per_page)
>>> -??????? return -EINVAL;
>>> +??? if (!unaligned_chunks) {
>>> +??????? chunks_per_page = PAGE_SIZE / chunk_size;
>>> +??????? if (chunks < chunks_per_page || chunks % chunks_per_page)
>>> +??????????? return -EINVAL;
>>> +??? }
>>>
>>> ???? headroom = ALIGN(headroom, 64);
>>>
>>> @@ -342,13 +348,15 @@ static int xdp_umem_reg(struct xdp_umem *umem,
>>> struct xdp_umem_reg *mr)
>>> ???????? return -EINVAL;
>>>
>>> ???? umem->address = (unsigned long)addr;
>>> -??? umem->chunk_mask = ~((u64)chunk_size - 1);
>>> +??? umem->chunk_mask = unaligned_chunks ? XSK_UNALIGNED_BUF_ADDR_MASK
>>> +??????????????????????? : ~((u64)chunk_size - 1);
>>
>> The handle needs to be cleaned (reset to base address) when removed
>> from the fill queue or recycle stack.? This will not provide the correct
>> semantics for unaligned mode.
>
> When we use aligned mode, the chunk mask is ~0x07FF which will remove
> the low 11-bits in order to get us back to the original base address.
>
> In unaligned mode, the chunk mask is ~0xFFFF00....00 which will remove
> the upper 16-bits. This will remove the offset from the address field
> and, since we have not directly modified the low 48-bits (original
> base address), leave us with the original base address.
>
> Cleaning the handle will therefore work as it does now, using the
> appropriate mask based on which mode we are using.
>
> <...>
>
>>>
>>> ???????? if (xskq_produce_addr_lazy(umem->cq, desc->addr))
>>> @@ -243,7 +269,7 @@ static int xsk_generic_xmit(struct sock *sk,
>>> struct msghdr *m,
>>> ???? if (xs->queue_id >= xs->dev->real_num_tx_queues)
>>> ???????? goto out;
>>>
>>> -??? while (xskq_peek_desc(xs->tx, &desc)) {
>>> +??? while (xskq_peek_desc(xs->tx, &desc, xs->umem)) {
>>> ???????? char *buffer;
>>> ???????? u64 addr;
>>> ???????? u32 len;
>>> @@ -262,6 +288,10 @@ static int xsk_generic_xmit(struct sock *sk,
>>> struct msghdr *m,
>>>
>>> ???????? skb_put(skb, len);
>>> ???????? addr = desc.addr;
>>> +??????? if (xs->umem->flags & XDP_UMEM_UNALIGNED_CHUNKS)
>>> +??????????? addr = (addr & XSK_UNALIGNED_BUF_ADDR_MASK) |
>>> +??????????????? (addr >> XSK_UNALIGNED_BUF_OFFSET_SHIFT);
>>
>> This doesn't look right to me.? Shouldn't it be "(addr & mask) +
>> (addr >> shift)"?
>> I'd also prefer to see this type of logic in an inline/macro
>
> Will fix in the v4, thanks!
>
> I'll look to move this to an inline function as well.
>
> <...>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20190726/75ab8880/attachment-0001.html>
next prev parent reply other threads:[~2019-07-26 9:58 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-20 9:09 [Intel-wired-lan] [PATCH 00/11] XDP unaligned chunk placement support Kevin Laatz
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-06-24 14:29 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 02/11] ixgbe: " Kevin Laatz
2019-06-24 14:30 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 03/11] xdp: add offset param to zero_copy_allocator Kevin Laatz
2019-06-24 14:31 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-24 19:23 ` Jakub Kicinski
2019-06-25 13:14 ` Laatz, Kevin
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 04/11] i40e: add offset to zca_free Kevin Laatz
2019-06-24 14:32 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 05/11] ixgbe: " Kevin Laatz
2019-06-24 14:32 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 06/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-06-24 15:29 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 07/11] libbpf: add flags to umem config Kevin Laatz
2019-06-24 15:30 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-06-24 15:31 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-06-24 15:35 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-06-24 15:36 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-06-24 15:34 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 00/10] XDP unaligned chunk placement support Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 01/10] i40e: simplify Rx buffer recycle Kevin Laatz
2019-07-19 17:19 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 02/10] ixgbe: " Kevin Laatz
2019-07-19 17:20 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 03/10] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-07-19 17:21 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 04/10] i40e: modify driver for handling offsets Kevin Laatz
2019-07-19 17:22 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 05/10] ixgbe: " Kevin Laatz
2019-07-19 17:22 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 06/10] libbpf: add flags to umem config Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 07/10] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 08/10] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 09/10] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 10/10] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-07-23 21:08 ` [Intel-wired-lan] [PATCH v2 00/10] XDP unaligned chunk placement support Alexei Starovoitov
2019-07-24 13:25 ` Magnus Karlsson
2019-07-25 15:43 ` Jonathan Lemon
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 00/11] " Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 02/11] ixgbe: " Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 03/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-07-25 2:22 ` Jakub Kicinski
2019-07-25 17:01 ` Laatz, Kevin
2019-07-25 9:27 ` Maxim Mikityanskiy
2019-07-25 17:00 ` Laatz, Kevin
2019-07-25 10:08 ` Maxim Mikityanskiy
2019-07-25 15:39 ` Jonathan Lemon
2019-07-26 9:47 ` Laatz, Kevin
2019-07-26 9:58 ` Laatz, Kevin [this message]
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 04/11] i40e: modify driver for handling offsets Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 05/11] ixgbe: " Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 06/11] mlx5e: " Kevin Laatz
2019-07-25 10:15 ` Maxim Mikityanskiy
2019-07-25 17:00 ` Laatz, Kevin
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 07/11] libbpf: add flags to umem config Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-07-25 9:43 ` Maxim Mikityanskiy
2019-07-25 17:00 ` Laatz, Kevin
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-07-25 15:39 ` [Intel-wired-lan] [PATCH bpf-next v3 00/11] XDP unaligned chunk placement support Jonathan Lemon
2019-07-25 15:56 ` Richardson, Bruce
2019-07-25 17:30 ` Jonathan Lemon
2019-07-26 8:41 ` Bruce Richardson
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 " Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 02/11] ixgbe: " Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 03/11] libbpf: add flags to umem config Kevin Laatz
2019-07-31 12:45 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-07-31 14:25 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-08-01 6:59 ` Andrii Nakryiko
2019-08-01 7:34 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-08-02 7:19 ` Andrii Nakryiko
2019-08-02 7:26 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 04/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-07-31 18:11 ` Jonathan Lemon
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 05/11] i40e: modify driver for handling offsets Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 06/11] ixgbe: " Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 07/11] mlx5e: " Kevin Laatz
2019-07-31 18:10 ` Jonathan Lemon
2019-08-01 10:05 ` Maxim Mikityanskiy
2019-08-19 14:36 ` Maxim Mikityanskiy
2019-08-19 14:47 ` Laatz, Kevin
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-07-31 18:26 ` Jonathan Lemon
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-07-30 8:54 ` [Intel-wired-lan] [PATCH bpf-next v4 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 00/11] XDP unaligned chunk placement support Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 02/11] ixgbe: " Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 03/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-08-22 18:43 ` Jonathan Lemon
2019-08-23 13:35 ` Laatz, Kevin
2019-08-27 7:36 ` Maxim Mikityanskiy
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 04/11] i40e: modify driver for handling offsets Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 05/11] ixgbe: " Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 06/11] mlx5e: " Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 07/11] libbpf: add flags to umem config Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 00/12] XDP unaligned chunk placement support Kevin Laatz
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 01/12] i40e: simplify Rx buffer recycle Kevin Laatz
2019-08-30 15:37 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 02/12] ixgbe: " Kevin Laatz
2019-08-30 15:39 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 03/12] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-08-30 15:41 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 04/12] i40e: modify driver for handling offsets Kevin Laatz
2019-08-30 15:42 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 05/12] ixgbe: " Kevin Laatz
2019-08-30 15:42 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 06/12] mlx5e: " Kevin Laatz
2019-08-30 15:43 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 07/12] net/mlx5e: Allow XSK frames smaller than a page Kevin Laatz
2019-08-30 15:45 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 08/12] libbpf: add flags to umem config Kevin Laatz
2019-08-30 15:46 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 09/12] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-08-30 15:47 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 10/12] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-08-30 15:49 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 11/12] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-08-30 15:51 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 12/12] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-08-30 15:51 ` Jonathan Lemon
2019-08-30 15:52 ` [Intel-wired-lan] [PATCH bpf-next v6 00/12] XDP unaligned chunk placement support Jonathan Lemon
2019-08-30 23:29 ` Daniel Borkmann
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=15523237-8aab-f341-3af9-57b8ab65be03@intel.com \
--to=kevin.laatz@intel.com \
--cc=intel-wired-lan@osuosl.org \
/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