This set consists of three patches from Maciej and myself which are optimizing the XSKMAP lookups. In the first patch, the sockets are moved to be stored at the tail of the struct xsk_map. The second patch, Maciej implements map_gen_lookup() for XSKMAP. The third patch, introduced in this revision, moves various XSKMAP functions, to permit the compiler to do more aggressive inlining. Based on the XDP program from tools/lib/bpf/xsk.c where bpf_map_lookup_elem() is explicitly called, this work yields a 5% improvement for xdpsock's rxdrop scenario. The last patch yields 2% improvement. Jonathan's Acked-by: for patch 1 and 2 was carried on to the v4. Note that the overflow checks are done in the bpf_map_area_alloc() and bpf_map_charge_init() functions, which was fixed in [1], but not applied to the bpf tree yet. Cheers, Björn and Maciej [1] https://patchwork.ozlabs.org/patch/1186170/ v1->v2: * Change size/cost to size_t and use {struct, array}_size where appropriate. (Jakub) v2->v3: * Proper commit message for patch 2. v3->v4: * Change size_t to u64 to handle 32-bit overflows. (Jakub) * Introduced patch 3 Björn Töpel (2): xsk: store struct xdp_sock as a flexible array member of the XSKMAP xsk: restructure/inline XSKMAP lookup/redirect/flush Maciej Fijalkowski (1): bpf: implement map_gen_lookup() callback for XSKMAP include/linux/bpf.h | 25 --------- include/net/xdp_sock.h | 51 ++++++++++++++----- kernel/bpf/xskmap.c | 112 +++++++++++++---------------------------- net/xdp/xsk.c | 33 +++++++++++- 4 files changed, 106 insertions(+), 115 deletions(-) -- 2.20.1