From: Jesper Dangaard Brouer <brouer@redhat.com> To: bpf@vger.kernel.org Cc: Jesper Dangaard Brouer <brouer@redhat.com>, netdev@vger.kernel.org, Stanislav Fomichev <sdf@google.com>, martin.lau@kernel.org, ast@kernel.org, daniel@iogearbox.net, alexandr.lobakin@intel.com, larysa.zaremba@intel.com, xdp-hints@xdp-project.net, anthony.l.nguyen@intel.com, yoong.siang.song@intel.com, boon.leong.ong@intel.com, intel-wired-lan@lists.osuosl.org, pabeni@redhat.com, jesse.brandeburg@intel.com, kuba@kernel.org, edumazet@google.com, john.fastabend@gmail.com, hawk@kernel.org, davem@davemloft.net Subject: [PATCH bpf RFC 4/4] mlx5: bpf_xdp_metadata_rx_hash return xdp rss hash type Date: Tue, 28 Mar 2023 22:16:13 +0200 [thread overview] Message-ID: <168003457335.3027256.7577085917635608718.stgit@firesoul> (raw) In-Reply-To: <168003451121.3027256.13000250073816770554.stgit@firesoul> Update API for bpf_xdp_metadata_rx_hash() by returning xdp rss hash type via mapping table. The mlx5 hardware can also identify and RSS hash IPSEC. This indicate hash includes SPI (Security Parameters Index) as part of IPSEC hash. Extend xdp core enum xdp_rss_hash_type with IPSEC hash type. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> --- drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 61 +++++++++++++++++++++- include/linux/mlx5/device.h | 14 ++++- include/net/xdp.h | 3 + 3 files changed, 74 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c index c5dae48b7932..07bd70249c42 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c @@ -34,6 +34,7 @@ #include <net/xdp_sock_drv.h> #include "en/xdp.h" #include "en/params.h" +#include <linux/bitfield.h> int mlx5e_xdp_max_mtu(struct mlx5e_params *params, struct mlx5e_xsk_param *xsk) { @@ -169,15 +170,71 @@ static int mlx5e_xdp_rx_timestamp(const struct xdp_md *ctx, u64 *timestamp) return 0; } +/* Mapping HW RSS Type bits CQE_RSS_HTYPE_IP + CQE_RSS_HTYPE_L4 into 4-bits*/ +#define RSS_TYPE_MAX_TABLE 16 /* 4-bits max 16 entries */ +#define RSS_L4 GENMASK(1,0) +#define RSS_L3 GENMASK(3,2) /* Same as CQE_RSS_HTYPE_IP */ + +/* Valid combinations of CQE_RSS_HTYPE_IP + CQE_RSS_HTYPE_L4 sorted numerical */ +enum mlx5_rss_hash_type { + RSS_TYPE_NO_HASH = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IP_NONE)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_NONE)), + RSS_TYPE_L3_IPV4 = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV4)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_NONE)), + RSS_TYPE_L4_IPV4_TCP = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV4)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_TCP)), + RSS_TYPE_L4_IPV4_UDP = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV4)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_UDP)), + RSS_TYPE_L4_IPV4_IPSEC = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV4)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_IPSEC)), + RSS_TYPE_L3_IPV6 = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV6)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_NONE)), + RSS_TYPE_L4_IPV6_TCP = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV6)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_TCP)), + RSS_TYPE_L4_IPV6_UDP = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV6)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_UDP)), + RSS_TYPE_L4_IPV6_IPSEC = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV6)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_IPSEC)), +} mlx5_rss_hash_type; + +/* The invalid combinations will simply return zero */ +static const enum xdp_rss_hash_type mlx5_xdp_rss_type[RSS_TYPE_MAX_TABLE] = { + [RSS_TYPE_NO_HASH] = XDP_RSS_TYPE_NONE, + [1] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [2] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [3] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [RSS_TYPE_L3_IPV4] = XDP_RSS_TYPE_L3_IPV4, + [RSS_TYPE_L4_IPV4_TCP] = XDP_RSS_TYPE_L4_IPV4_TCP, + [RSS_TYPE_L4_IPV4_UDP] = XDP_RSS_TYPE_L4_IPV4_UDP, + [RSS_TYPE_L4_IPV4_IPSEC]= XDP_RSS_TYPE_L4_IPV4_IPSEC, + [RSS_TYPE_L3_IPV6] = XDP_RSS_TYPE_L3_IPV6, + [RSS_TYPE_L4_IPV6_TCP] = XDP_RSS_TYPE_L4_IPV6_TCP, + [RSS_TYPE_L4_IPV6_UDP] = XDP_RSS_TYPE_L4_IPV6_UDP, + [RSS_TYPE_L4_IPV6_IPSEC]= XDP_RSS_TYPE_L4_IPV6_IPSEC, + [12] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [13] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [14] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [15] = XDP_RSS_TYPE_NONE, /* Implicit zero */ +}; + static int mlx5e_xdp_rx_hash(const struct xdp_md *ctx, u32 *hash) { const struct mlx5e_xdp_buff *_ctx = (void *)ctx; + const struct mlx5_cqe64 *cqe = _ctx->cqe; + u32 hash_type, l4_type, ip_type, lookup; if (unlikely(!(_ctx->xdp.rxq->dev->features & NETIF_F_RXHASH))) return -ENODATA; - *hash = be32_to_cpu(_ctx->cqe->rss_hash_result); - return 0; + *hash = be32_to_cpu(cqe->rss_hash_result); + + hash_type = cqe->rss_hash_type; + BUILD_BUG_ON(CQE_RSS_HTYPE_IP != RSS_L3); /* same mask */ + ip_type = hash_type & CQE_RSS_HTYPE_IP; + l4_type = FIELD_GET(CQE_RSS_HTYPE_L4, hash_type); + lookup = ip_type | l4_type; + + return mlx5_xdp_rss_type[lookup]; } const struct xdp_metadata_ops mlx5e_xdp_metadata_ops = { diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h index 71b06ebad402..27aa9ae10996 100644 --- a/include/linux/mlx5/device.h +++ b/include/linux/mlx5/device.h @@ -36,6 +36,7 @@ #include <linux/types.h> #include <rdma/ib_verbs.h> #include <linux/mlx5/mlx5_ifc.h> +#include <linux/bitfield.h> #if defined(__LITTLE_ENDIAN) #define MLX5_SET_HOST_ENDIANNESS 0 @@ -980,14 +981,23 @@ enum { }; enum { - CQE_RSS_HTYPE_IP = 0x3 << 2, + CQE_RSS_HTYPE_IP = GENMASK(3,2), /* cqe->rss_hash_type[3:2] - IP destination selected for hash * (00 = none, 01 = IPv4, 10 = IPv6, 11 = Reserved) */ - CQE_RSS_HTYPE_L4 = 0x3 << 6, + CQE_RSS_IP_NONE = 0x0, + CQE_RSS_IPV4 = 0x1, + CQE_RSS_IPV6 = 0x2, + CQE_RSS_RESERVED = 0x3, + + CQE_RSS_HTYPE_L4 = GENMASK(7,6), /* cqe->rss_hash_type[7:6] - L4 destination selected for hash * (00 = none, 01 = TCP. 10 = UDP, 11 = IPSEC.SPI */ + CQE_RSS_L4_NONE = 0x0, + CQE_RSS_L4_TCP = 0x1, + CQE_RSS_L4_UDP = 0x2, + CQE_RSS_L4_IPSEC = 0x3, }; enum { diff --git a/include/net/xdp.h b/include/net/xdp.h index 63f462f5ea7f..962611d5bc02 100644 --- a/include/net/xdp.h +++ b/include/net/xdp.h @@ -429,16 +429,19 @@ enum xdp_rss_hash_type { XDP_RSS_TYPE_L4_IPV4_TCP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV4, 1), XDP_RSS_TYPE_L4_IPV4_UDP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV4, 2), XDP_RSS_TYPE_L4_IPV4_SCTP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV4, 3), + XDP_RSS_TYPE_L4_IPV4_IPSEC = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV4, 4), XDP_RSS_TYPE_L4_IPV6_MASK = RSS_L4_IPV6, XDP_RSS_TYPE_L4_IPV6_TCP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV6, 1), XDP_RSS_TYPE_L4_IPV6_UDP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV6, 2), XDP_RSS_TYPE_L4_IPV6_SCTP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV6, 3), + XDP_RSS_TYPE_L4_IPV6_IPSEC = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV6, 4), XDP_RSS_TYPE_L4_IPV6_EX_MASK = L4_IPV6_EX_BIT, XDP_RSS_TYPE_L4_IPV6_TCP_EX = XDP_RSS_TYPE_L4_IPV6_TCP |L4_IPV6_EX_BIT, XDP_RSS_TYPE_L4_IPV6_UDP_EX = XDP_RSS_TYPE_L4_IPV6_UDP |L4_IPV6_EX_BIT, XDP_RSS_TYPE_L4_IPV6_SCTP_EX = XDP_RSS_TYPE_L4_IPV6_SCTP|L4_IPV6_EX_BIT, + XDP_RSS_TYPE_L4_IPV6_IPSEC_EX= XDP_RSS_TYPE_L4_IPV6_IPSEC|L4_IPV6_EX_BIT, }; #undef RSS_L3 #undef L4_BIT
WARNING: multiple messages have this Message-ID (diff)
From: Jesper Dangaard Brouer <brouer@redhat.com> To: bpf@vger.kernel.org Cc: xdp-hints@xdp-project.net, martin.lau@kernel.org, daniel@iogearbox.net, larysa.zaremba@intel.com, netdev@vger.kernel.org, john.fastabend@gmail.com, ast@kernel.org, jesse.brandeburg@intel.com, kuba@kernel.org, edumazet@google.com, pabeni@redhat.com, Stanislav Fomichev <sdf@google.com>, yoong.siang.song@intel.com, Jesper Dangaard Brouer <brouer@redhat.com>, boon.leong.ong@intel.com, anthony.l.nguyen@intel.com, intel-wired-lan@lists.osuosl.org, davem@davemloft.net, hawk@kernel.org Subject: [Intel-wired-lan] [PATCH bpf RFC 4/4] mlx5: bpf_xdp_metadata_rx_hash return xdp rss hash type Date: Tue, 28 Mar 2023 22:16:13 +0200 [thread overview] Message-ID: <168003457335.3027256.7577085917635608718.stgit@firesoul> (raw) In-Reply-To: <168003451121.3027256.13000250073816770554.stgit@firesoul> Update API for bpf_xdp_metadata_rx_hash() by returning xdp rss hash type via mapping table. The mlx5 hardware can also identify and RSS hash IPSEC. This indicate hash includes SPI (Security Parameters Index) as part of IPSEC hash. Extend xdp core enum xdp_rss_hash_type with IPSEC hash type. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> --- drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 61 +++++++++++++++++++++- include/linux/mlx5/device.h | 14 ++++- include/net/xdp.h | 3 + 3 files changed, 74 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c index c5dae48b7932..07bd70249c42 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c @@ -34,6 +34,7 @@ #include <net/xdp_sock_drv.h> #include "en/xdp.h" #include "en/params.h" +#include <linux/bitfield.h> int mlx5e_xdp_max_mtu(struct mlx5e_params *params, struct mlx5e_xsk_param *xsk) { @@ -169,15 +170,71 @@ static int mlx5e_xdp_rx_timestamp(const struct xdp_md *ctx, u64 *timestamp) return 0; } +/* Mapping HW RSS Type bits CQE_RSS_HTYPE_IP + CQE_RSS_HTYPE_L4 into 4-bits*/ +#define RSS_TYPE_MAX_TABLE 16 /* 4-bits max 16 entries */ +#define RSS_L4 GENMASK(1,0) +#define RSS_L3 GENMASK(3,2) /* Same as CQE_RSS_HTYPE_IP */ + +/* Valid combinations of CQE_RSS_HTYPE_IP + CQE_RSS_HTYPE_L4 sorted numerical */ +enum mlx5_rss_hash_type { + RSS_TYPE_NO_HASH = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IP_NONE)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_NONE)), + RSS_TYPE_L3_IPV4 = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV4)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_NONE)), + RSS_TYPE_L4_IPV4_TCP = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV4)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_TCP)), + RSS_TYPE_L4_IPV4_UDP = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV4)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_UDP)), + RSS_TYPE_L4_IPV4_IPSEC = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV4)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_IPSEC)), + RSS_TYPE_L3_IPV6 = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV6)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_NONE)), + RSS_TYPE_L4_IPV6_TCP = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV6)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_TCP)), + RSS_TYPE_L4_IPV6_UDP = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV6)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_UDP)), + RSS_TYPE_L4_IPV6_IPSEC = (FIELD_PREP_CONST(RSS_L3, CQE_RSS_IPV6)| \ + FIELD_PREP_CONST(RSS_L4, CQE_RSS_L4_IPSEC)), +} mlx5_rss_hash_type; + +/* The invalid combinations will simply return zero */ +static const enum xdp_rss_hash_type mlx5_xdp_rss_type[RSS_TYPE_MAX_TABLE] = { + [RSS_TYPE_NO_HASH] = XDP_RSS_TYPE_NONE, + [1] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [2] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [3] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [RSS_TYPE_L3_IPV4] = XDP_RSS_TYPE_L3_IPV4, + [RSS_TYPE_L4_IPV4_TCP] = XDP_RSS_TYPE_L4_IPV4_TCP, + [RSS_TYPE_L4_IPV4_UDP] = XDP_RSS_TYPE_L4_IPV4_UDP, + [RSS_TYPE_L4_IPV4_IPSEC]= XDP_RSS_TYPE_L4_IPV4_IPSEC, + [RSS_TYPE_L3_IPV6] = XDP_RSS_TYPE_L3_IPV6, + [RSS_TYPE_L4_IPV6_TCP] = XDP_RSS_TYPE_L4_IPV6_TCP, + [RSS_TYPE_L4_IPV6_UDP] = XDP_RSS_TYPE_L4_IPV6_UDP, + [RSS_TYPE_L4_IPV6_IPSEC]= XDP_RSS_TYPE_L4_IPV6_IPSEC, + [12] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [13] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [14] = XDP_RSS_TYPE_NONE, /* Implicit zero */ + [15] = XDP_RSS_TYPE_NONE, /* Implicit zero */ +}; + static int mlx5e_xdp_rx_hash(const struct xdp_md *ctx, u32 *hash) { const struct mlx5e_xdp_buff *_ctx = (void *)ctx; + const struct mlx5_cqe64 *cqe = _ctx->cqe; + u32 hash_type, l4_type, ip_type, lookup; if (unlikely(!(_ctx->xdp.rxq->dev->features & NETIF_F_RXHASH))) return -ENODATA; - *hash = be32_to_cpu(_ctx->cqe->rss_hash_result); - return 0; + *hash = be32_to_cpu(cqe->rss_hash_result); + + hash_type = cqe->rss_hash_type; + BUILD_BUG_ON(CQE_RSS_HTYPE_IP != RSS_L3); /* same mask */ + ip_type = hash_type & CQE_RSS_HTYPE_IP; + l4_type = FIELD_GET(CQE_RSS_HTYPE_L4, hash_type); + lookup = ip_type | l4_type; + + return mlx5_xdp_rss_type[lookup]; } const struct xdp_metadata_ops mlx5e_xdp_metadata_ops = { diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h index 71b06ebad402..27aa9ae10996 100644 --- a/include/linux/mlx5/device.h +++ b/include/linux/mlx5/device.h @@ -36,6 +36,7 @@ #include <linux/types.h> #include <rdma/ib_verbs.h> #include <linux/mlx5/mlx5_ifc.h> +#include <linux/bitfield.h> #if defined(__LITTLE_ENDIAN) #define MLX5_SET_HOST_ENDIANNESS 0 @@ -980,14 +981,23 @@ enum { }; enum { - CQE_RSS_HTYPE_IP = 0x3 << 2, + CQE_RSS_HTYPE_IP = GENMASK(3,2), /* cqe->rss_hash_type[3:2] - IP destination selected for hash * (00 = none, 01 = IPv4, 10 = IPv6, 11 = Reserved) */ - CQE_RSS_HTYPE_L4 = 0x3 << 6, + CQE_RSS_IP_NONE = 0x0, + CQE_RSS_IPV4 = 0x1, + CQE_RSS_IPV6 = 0x2, + CQE_RSS_RESERVED = 0x3, + + CQE_RSS_HTYPE_L4 = GENMASK(7,6), /* cqe->rss_hash_type[7:6] - L4 destination selected for hash * (00 = none, 01 = TCP. 10 = UDP, 11 = IPSEC.SPI */ + CQE_RSS_L4_NONE = 0x0, + CQE_RSS_L4_TCP = 0x1, + CQE_RSS_L4_UDP = 0x2, + CQE_RSS_L4_IPSEC = 0x3, }; enum { diff --git a/include/net/xdp.h b/include/net/xdp.h index 63f462f5ea7f..962611d5bc02 100644 --- a/include/net/xdp.h +++ b/include/net/xdp.h @@ -429,16 +429,19 @@ enum xdp_rss_hash_type { XDP_RSS_TYPE_L4_IPV4_TCP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV4, 1), XDP_RSS_TYPE_L4_IPV4_UDP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV4, 2), XDP_RSS_TYPE_L4_IPV4_SCTP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV4, 3), + XDP_RSS_TYPE_L4_IPV4_IPSEC = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV4, 4), XDP_RSS_TYPE_L4_IPV6_MASK = RSS_L4_IPV6, XDP_RSS_TYPE_L4_IPV6_TCP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV6, 1), XDP_RSS_TYPE_L4_IPV6_UDP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV6, 2), XDP_RSS_TYPE_L4_IPV6_SCTP = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV6, 3), + XDP_RSS_TYPE_L4_IPV6_IPSEC = L4_BIT|FIELD_PREP_CONST(RSS_L4_IPV6, 4), XDP_RSS_TYPE_L4_IPV6_EX_MASK = L4_IPV6_EX_BIT, XDP_RSS_TYPE_L4_IPV6_TCP_EX = XDP_RSS_TYPE_L4_IPV6_TCP |L4_IPV6_EX_BIT, XDP_RSS_TYPE_L4_IPV6_UDP_EX = XDP_RSS_TYPE_L4_IPV6_UDP |L4_IPV6_EX_BIT, XDP_RSS_TYPE_L4_IPV6_SCTP_EX = XDP_RSS_TYPE_L4_IPV6_SCTP|L4_IPV6_EX_BIT, + XDP_RSS_TYPE_L4_IPV6_IPSEC_EX= XDP_RSS_TYPE_L4_IPV6_IPSEC|L4_IPV6_EX_BIT, }; #undef RSS_L3 #undef L4_BIT _______________________________________________ Intel-wired-lan mailing list Intel-wired-lan@osuosl.org https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
next prev parent reply other threads:[~2023-03-28 20:17 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-03-28 20:15 [Intel-wired-lan] [PATCH bpf RFC 0/4] XDP-hints: API change for RX-hash kfunc bpf_xdp_metadata_rx_hash Jesper Dangaard Brouer 2023-03-28 20:15 ` Jesper Dangaard Brouer 2023-03-28 20:15 ` [Intel-wired-lan] [PATCH bpf RFC 1/4] xdp: rss hash types representation Jesper Dangaard Brouer 2023-03-28 20:15 ` Jesper Dangaard Brouer 2023-03-28 21:58 ` Stanislav Fomichev 2023-03-28 21:58 ` [Intel-wired-lan] " Stanislav Fomichev 2023-03-29 11:23 ` Jesper Dangaard Brouer 2023-03-29 11:23 ` [Intel-wired-lan] " Jesper Dangaard Brouer 2023-03-29 17:18 ` Stanislav Fomichev 2023-03-29 17:18 ` [Intel-wired-lan] " Stanislav Fomichev 2023-03-29 18:19 ` Jesper Dangaard Brouer 2023-03-29 18:19 ` Jesper Dangaard Brouer 2023-03-29 23:19 ` Stanislav Fomichev 2023-03-29 23:19 ` [Intel-wired-lan] " Stanislav Fomichev 2023-03-30 9:51 ` Jesper Dangaard Brouer 2023-03-30 9:51 ` Jesper Dangaard Brouer 2023-03-30 17:11 ` Stanislav Fomichev 2023-03-30 17:11 ` [Intel-wired-lan] " Stanislav Fomichev 2023-03-30 18:52 ` Jesper Dangaard Brouer 2023-03-30 18:52 ` [Intel-wired-lan] " Jesper Dangaard Brouer 2023-03-29 8:10 ` Edward Cree 2023-03-29 8:10 ` Edward Cree 2023-03-29 12:13 ` [xdp-hints] " Jesper Dangaard Brouer 2023-03-29 12:13 ` [Intel-wired-lan] " Jesper Dangaard Brouer 2023-03-28 20:16 ` [Intel-wired-lan] [PATCH bpf RFC 2/4] igc: bpf_xdp_metadata_rx_hash return xdp rss hash type Jesper Dangaard Brouer 2023-03-28 20:16 ` Jesper Dangaard Brouer 2023-03-28 20:16 ` [PATCH bpf RFC 3/4] veth: " Jesper Dangaard Brouer 2023-03-28 20:16 ` [Intel-wired-lan] " Jesper Dangaard Brouer 2023-03-28 20:16 ` Jesper Dangaard Brouer [this message] 2023-03-28 20:16 ` [Intel-wired-lan] [PATCH bpf RFC 4/4] mlx5: " Jesper Dangaard Brouer
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=168003457335.3027256.7577085917635608718.stgit@firesoul \ --to=brouer@redhat.com \ --cc=alexandr.lobakin@intel.com \ --cc=anthony.l.nguyen@intel.com \ --cc=ast@kernel.org \ --cc=boon.leong.ong@intel.com \ --cc=bpf@vger.kernel.org \ --cc=daniel@iogearbox.net \ --cc=davem@davemloft.net \ --cc=edumazet@google.com \ --cc=hawk@kernel.org \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=jesse.brandeburg@intel.com \ --cc=john.fastabend@gmail.com \ --cc=kuba@kernel.org \ --cc=larysa.zaremba@intel.com \ --cc=martin.lau@kernel.org \ --cc=netdev@vger.kernel.org \ --cc=pabeni@redhat.com \ --cc=sdf@google.com \ --cc=xdp-hints@xdp-project.net \ --cc=yoong.siang.song@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: linkBe 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.