History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next

Daniel Borkmann says: ==================== pull-request: bpf-next 2019-07-03 The following pull-request contains BPF updates for your *net-next* tree. There is a minor merge conflict in mlx5 due to 8960b38932be ("linux/dim: Rename externally used net_dim members") which has been pulled into your tree in the meantime, but resolution seems not that bad ... getting current bpf-next out now before there's coming more on mlx5. ;) I'm Cc'ing Saeed just so he's aware of the resolution below: ** First conflict in drivers/net/ethernet/mellanox/mlx5/core/en_main.c: <<<<<<< HEAD static int mlx5e_open_cq(struct mlx5e_channel *c, struct dim_cq_moder moder, struct mlx5e_cq_param *param, struct mlx5e_cq *cq) ======= int mlx5e_open_cq(struct mlx5e_channel *c, struct net_dim_cq_moder moder, struct mlx5e_cq_param *param, struct mlx5e_cq *cq) >>>>>>> e5a3e259ef239f443951d401db10db7d426c9497 Resolution is to take the second chunk and rename net_dim_cq_moder into dim_cq_moder. Also the signature for mlx5e_open_cq() in ... drivers/net/ethernet/mellanox/mlx5/core/en.h +977 ... and in mlx5e_open_xsk() ... drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c +64 ... needs the same rename from net_dim_cq_moder into dim_cq_moder. ** Second conflict in drivers/net/ethernet/mellanox/mlx5/core/en_main.c: <<<<<<< HEAD int cpu = cpumask_first(mlx5_comp_irq_get_affinity_mask(priv->mdev, ix)); struct dim_cq_moder icocq_moder = {0, 0}; struct net_device *netdev = priv->netdev; struct mlx5e_channel *c; unsigned int irq; ======= struct net_dim_cq_moder icocq_moder = {0, 0}; >>>>>>> e5a3e259ef239f443951d401db10db7d426c9497 Take the second chunk and rename net_dim_cq_moder into dim_cq_moder as well. Let me know if you run into any issues. Anyway, the main changes are: 1) Long-awaited AF_XDP support for mlx5e driver, from Maxim. 2) Addition of two new per-cgroup BPF hooks for getsockopt and setsockopt along with a new sockopt program type which allows more fine-grained pass/reject settings for containers. Also add a sock_ops callback that can be selectively enabled on a per-socket basis and is executed for every RTT to help tracking TCP statistics, both features from Stanislav. 3) Follow-up fix from loops in precision tracking which was not propagating precision marks and as a result verifier assumed that some branches were not taken and therefore wrongly removed as dead code, from Alexei. 4) Fix BPF cgroup release synchronization race which could lead to a double-free if a leaf's cgroup_bpf object is released and a new BPF program is attached to the one of ancestor cgroups in parallel, from Roman. 5) Support for bulking XDP_TX on veth devices which improves performance in some cases by around 9%, from Toshiaki. 6) Allow for lookups into BPF devmap and improve feedback when calling into bpf_redirect_map() as lookup is now performed right away in the helper itself, from Toke. 7) Add support for fq's Earliest Departure Time to the Host Bandwidth Manager (HBM) sample BPF program, from Lawrence. 8) Various cleanups and minor fixes all over the place from many others. ====================

David S. Miller committed 7 years ago

Commit c4cde582 parents e2c7469 e5a3e2598 files · +6197 −841Browse files

Showing the changes to tools/include/uapi/linux (2 of 98 files). Show all

Unified · Split

2 files
  1. tools/include/uapi/linux/bpf.h +25 −1
  2. tools/include/uapi/linux/if_xdp.h +8 −0
tools/include/uapi/linux/bpf.h+25−1
@@ -170,6 +170,7 @@ enum bpf_prog_type { · 169 unmodified lines
170170 BPF_PROG_TYPE_FLOW_DISSECTOR,
171171 BPF_PROG_TYPE_CGROUP_SYSCTL,
172172 BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
173+ BPF_PROG_TYPE_CGROUP_SOCKOPT,
173174 };
174175
175176 enum bpf_attach_type {
@@ -194,6 +195,8 @@ enum bpf_attach_type { · 18 unmodified lines
194195 BPF_CGROUP_SYSCTL,
195196 BPF_CGROUP_UDP4_RECVMSG,
196197 BPF_CGROUP_UDP6_RECVMSG,
198+ BPF_CGROUP_GETSOCKOPT,
199+ BPF_CGROUP_SETSOCKOPT,
197200 __MAX_BPF_ATTACH_TYPE
198201 };
199202
@@ -1764,6 +1767,7 @@ union bpf_attr { · 1564 unmodified lines
17641767 * * **BPF_SOCK_OPS_RTO_CB_FLAG** (retransmission time out)
17651768 * * **BPF_SOCK_OPS_RETRANS_CB_FLAG** (retransmission)
17661769 * * **BPF_SOCK_OPS_STATE_CB_FLAG** (TCP state change)
1770+ * * **BPF_SOCK_OPS_RTT_CB_FLAG** (every RTT)
17671771 *
17681772 * Therefore, this function can be used to clear a callback flag by
17691773 * setting the appropriate bit to zero. e.g. to disable the RTO
@@ -3066,6 +3070,12 @@ struct bpf_tcp_sock { · 1296 unmodified lines
30663070 * sum(delta(snd_una)), or how many bytes
30673071 * were acked.
30683072 */
3073+ __u32 dsack_dups; /* RFC4898 tcpEStatsStackDSACKDups
3074+ * total number of DSACK blocks received
3075+ */
3076+ __u32 delivered; /* Total data packets delivered incl. rexmits */
3077+ __u32 delivered_ce; /* Like the above but only ECE marked packets */
3078+ __u32 icsk_retransmits; /* Number of unrecovered [RTO] timeouts */
30693079 };
30703080
30713081 struct bpf_sock_tuple {
@@ -3308,7 +3318,8 @@ struct bpf_sock_ops { · 236 unmodified lines
33083318 #define BPF_SOCK_OPS_RTO_CB_FLAG (1<<0)
33093319 #define BPF_SOCK_OPS_RETRANS_CB_FLAG (1<<1)
33103320 #define BPF_SOCK_OPS_STATE_CB_FLAG (1<<2)
3311−#define BPF_SOCK_OPS_ALL_CB_FLAGS 0x7 /* Mask of all currently
3321+#define BPF_SOCK_OPS_RTT_CB_FLAG (1<<3)
3322+#define BPF_SOCK_OPS_ALL_CB_FLAGS 0xF /* Mask of all currently
33123323 * supported cb flags
33133324 */
33143325
@@ -3363,6 +3374,8 @@ enum { · 48 unmodified lines
33633374 BPF_SOCK_OPS_TCP_LISTEN_CB, /* Called on listen(2), right after
33643375 * socket transition to LISTEN state.
33653376 */
3377+ BPF_SOCK_OPS_RTT_CB, /* Called on every RTT.
3378+ */
33663379 };
33673380
33683381 /* List of TCP states. There is a build check in net/ipv4/tcp.c to detect
@@ -3541,4 +3554,15 @@ struct bpf_sysctl { · 172 unmodified lines
35413554 */
35423555 };
35433556
3557+struct bpf_sockopt {
3558+ __bpf_md_ptr(struct bpf_sock *, sk);
3559+ __bpf_md_ptr(void *, optval);
3560+ __bpf_md_ptr(void *, optval_end);
3561+
3562+ __s32 level;
3563+ __s32 optname;
3564+ __s32 optlen;
3565+ __s32 retval;
3566+};
3567+
35443568 #endif /* _UAPI__LINUX_BPF_H__ */
tools/include/uapi/linux/if_xdp.h+8−0
@@ -46,6 +46,7 @@ struct xdp_mmap_offsets { · 45 unmodified lines
4646 #define XDP_UMEM_FILL_RING 5
4747 #define XDP_UMEM_COMPLETION_RING 6
4848 #define XDP_STATISTICS 7
49+#define XDP_OPTIONS 8
4950
5051 struct xdp_umem_reg {
5152 __u64 addr; /* Start of packet data area */
@@ -60,6 +61,13 @@ struct xdp_statistics { · 8 unmodified lines
6061 __u64 tx_invalid_descs; /* Dropped due to invalid descriptor */
6162 };
6263
64+struct xdp_options {
65+ __u32 flags;
66+};
67+
68+/* Flags for the flags field of struct xdp_options */
69+#define XDP_OPTIONS_ZEROCOPY (1 << 0)
70+
6371 /* Pgoff for mmaping the rings */
6472 #define XDP_PGOFF_RX_RING 0
6573 #define XDP_PGOFF_TX_RING 0x80000000