-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbrainstorm.html
431 lines (376 loc) · 22.3 KB
/
brainstorm.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Brainstorm notes</title>
<meta name="generator" content="Org Mode" />
<link rel="stylesheet" type="text/css" href="/styles/bigblow/css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="/styles/bigblow/css/bigblow.css"/>
<link rel="stylesheet" type="text/css" href="/styles/bigblow/css/hideshow.css"/>
<script type="text/javascript" src="/styles/bigblow/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/styles/bigblow/js/jquery-ui-1.10.2.min.js"></script>
<script type="text/javascript" src="/styles/bigblow/js/jquery.localscroll-min.js"></script>
<script type="text/javascript" src="/styles/bigblow/js/jquery.scrollTo-1.4.3.1-min.js"></script>
<script type="text/javascript" src="/styles/bigblow/js/jquery.zclip.min.js"></script>
<script type="text/javascript" src="/styles/bigblow/js/bigblow.js"></script>
<script type="text/javascript" src="/styles/bigblow/js/hideshow.js"></script>
<script type="text/javascript" src="/styles/lib/js/jquery.stickytableheaders.min.js"></script>
</head>
<body>
<div id="content">
<h1 class="title">Brainstorm notes</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#Various-brainstorm-ideas">Various brainstorm ideas</a>
<ul>
<li><a href="#General--Make-Generic-XDP-complient-with-Native-XDP-features">General: Make Generic-XDP complient with Native-XDP features</a></li>
<li><a href="#XDP-on-ARM-boards">XDP on ARM-boards</a></li>
<li><a href="#Crazy-idea--XDP-redirect-re-handle-about-to-be-dropped-packets">Crazy-idea: XDP-redirect re-handle about-to-be-dropped packets</a></li>
<li><a href="#Tracking-and-troubleshooting-eBPF">Tracking and troubleshooting eBPF</a></li>
<li><a href="#Usability--XDP-redirect-not-impl-by-driver-gives-WARN_ON">Usability: XDP redirect not impl by driver gives WARN_ON</a></li>
<li><a href="#Usability--HW-offload-on-non-supported-driver-firmware-return-EINVAL">Usability: HW offload on non-supported driver/firmware return EINVAL</a></li>
<li><a href="#Extend-xdp_buff-with-member-data_hard_end">Extend xdp_buff with member data_hard_end</a></li>
<li><a href="#DMA-mapping-xdp_frame">DMA mapping xdp_frame</a></li>
<li><a href="#Convert-samples-bpf--to-use-libbpf-as-elf-loader">Convert samples/bpf/ to use libbpf as elf-loader</a></li>
<li><a href="#sample-bpf-output-XDP-mode--as-QA-forget-to-report-">sample/bpf output XDP-mode (as QA forget to report)</a></li>
<li><a href="#sample-bpf-output-Driver--as-QA-forget-to-report-">sample/bpf output Driver (as QA forget to report)</a></li>
<li><a href="#GROUP--CPU-map-redirect-things">GROUP: CPU-map redirect things</a></li>
<li><a href="#samples-bpf-upstream-napi_monitor">samples/bpf upstream napi_monitor</a></li>
<li><a href="#Generic-xdp-how-to-assure-NAPI-protect-">Generic-xdp how-to assure NAPI protect?</a></li>
<li><a href="#Make-bulk-work-for-generic-xdp-with-devmap">Make bulk work for generic xdp with devmap</a></li>
<li><a href="#Meta-data-implement-missing-for-many-drivers">Meta data implement missing for many drivers</a></li>
<li><a href="#Should-we-standardize-ethtool-stats-for-xdp-">Should we standardize ethtool stats for xdp?</a></li>
<li><a href="#Adding-and-removing-ethtool-channels-runtime-semantics-">Adding and removing ethtool channels runtime semantics?</a></li>
<li><a href="#Frame-to-skb--missing-csum-hw-info">Frame to skb, missing csum hw info</a></li>
<li><a href="#Frame-to-skb--use-full-headroom">Frame to skb, use full headroom</a></li>
<li><a href="#BUG--Generic-XDP-does-not-work-for-TCP--in-certain-cases-">BUG: Generic-XDP does not work for TCP (in certain cases)</a></li>
<li><a href="#Potential-bug--Mlx5-fix-dma-unmap-call--after-xdp-return-frame-">Potential-bug: Mlx5 fix dma unmap call (after xdp return frame)</a></li>
<li><a href="#Retpoline-performance-issue-for-xdp">Retpoline performance issue for xdp</a></li>
<li><a href="#Retpoline--mlx5-too-many-indirect-calls">Retpoline: mlx5 too many indirect calls</a></li>
<li><a href="#XDP-metadata--dynamic-descriptor-offloads-via-BTF">XDP metadata: dynamic descriptor offloads via BTF</a></li>
<li><a href="#Napatech-have-descriptors-in-front-of-packet-payload">Napatech have descriptors in-front of packet payload</a></li>
</ul>
</li>
<li><a href="#Old-list--watch-out-for-dublicates">Old list: watch out for dublicates</a></li>
<li><a href="#Site-navigation">Site navigation</a></li>
</ul>
</div>
</div>
<p>
This doc is for brainstorming. Watch out for likely duplicates, clean
them up progressively.
</p>
<p>
Turn these notes into real issue or bug descriptions and move them
into other docs like <a href="xdp_issues.html">xdp_issues.html</a>
</p>
<div id="outline-container-Various-brainstorm-ideas" class="outline-2">
<h2 id="Various-brainstorm-ideas"><a href="#Various-brainstorm-ideas">Various brainstorm ideas</a></h2>
<div class="outline-text-2" id="text-Various-brainstorm-ideas">
</div>
<div id="outline-container-General--Make-Generic-XDP-complient-with-Native-XDP-features" class="outline-3">
<h3 id="General--Make-Generic-XDP-complient-with-Native-XDP-features"><a href="#General--Make-Generic-XDP-complient-with-Native-XDP-features">General: Make Generic-XDP complient with Native-XDP features</a></h3>
</div>
<div id="outline-container-XDP-on-ARM-boards" class="outline-3">
<h3 id="XDP-on-ARM-boards"><a href="#XDP-on-ARM-boards">XDP on ARM-boards</a></h3>
<div class="outline-text-3" id="text-XDP-on-ARM-boards">
<p>
See <a href="areas/arm64/README.html">areas/arm64/README.html</a>
</p>
</div>
</div>
<div id="outline-container-Crazy-idea--XDP-redirect-re-handle-about-to-be-dropped-packets" class="outline-3">
<h3 id="Crazy-idea--XDP-redirect-re-handle-about-to-be-dropped-packets"><a href="#Crazy-idea--XDP-redirect-re-handle-about-to-be-dropped-packets">Crazy-idea: XDP-redirect re-handle about-to-be-dropped packets</a></h3>
<div class="outline-text-3" id="text-Crazy-idea--XDP-redirect-re-handle-about-to-be-dropped-packets">
<p>
Ref slides: <a href="http://people.netfilter.org/hawk/presentations/NetConf2017_Seoul/XDP_devel_update_NetConf2017_Seoul.pdf">http://people.netfilter.org/hawk/presentations/NetConf2017_Seoul/XDP_devel_update_NetConf2017_Seoul.pdf</a>
</p>
<p>
Idea slide 31: On XDP-redirect packets can be dropped, after the XDP
prog have run, and today we have a 'drop-tracepoint' to handle/debug
this. It would be more interesting to call a new XDP-type program
that get the about-to-be-dropped packet, and allow it to take a new
decision. Wondering what this can be used for, click the youtube link
in the slide, and blow-your-mind! (<a href="https://youtu.be/BO0QhaxBRr0">https://youtu.be/BO0QhaxBRr0</a>)
</p>
</div>
</div>
<div id="outline-container-Tracking-and-troubleshooting-eBPF" class="outline-3">
<h3 id="Tracking-and-troubleshooting-eBPF"><a href="#Tracking-and-troubleshooting-eBPF">Tracking and troubleshooting eBPF</a></h3>
<div class="outline-text-3" id="text-Tracking-and-troubleshooting-eBPF">
<p>
Want to track when BPF progs gets loaded/unloaded
</p>
<ul class="org-ul">
<li>Both for system audit and troubleshooting purposes</li>
</ul>
<p>
BPF code do have LSM/SElinux hooks
</p>
<ul class="org-ul">
<li>LSM maintainers request, use Audit subsystem instead</li>
<li>Jiri Olsa currently working on this</li>
</ul>
</div>
</div>
<div id="outline-container-Usability--XDP-redirect-not-impl-by-driver-gives-WARN_ON" class="outline-3">
<h3 id="Usability--XDP-redirect-not-impl-by-driver-gives-WARN_ON"><a href="#Usability--XDP-redirect-not-impl-by-driver-gives-WARN_ON">Usability: XDP redirect not impl by driver gives WARN_ON</a></h3>
<div class="outline-text-3" id="text-Usability--XDP-redirect-not-impl-by-driver-gives-WARN_ON">
<p>
E.g. AF_XDP via xdpsock uses redirect, and there is not feedback when
running prog on driver without redirect-support. Need to look in
dmesg to see big splast.
</p>
</div>
</div>
<div id="outline-container-Usability--HW-offload-on-non-supported-driver-firmware-return-EINVAL" class="outline-3">
<h3 id="Usability--HW-offload-on-non-supported-driver-firmware-return-EINVAL"><a href="#Usability--HW-offload-on-non-supported-driver-firmware-return-EINVAL">Usability: HW offload on non-supported driver/firmware return EINVAL</a></h3>
<div class="outline-text-3" id="text-Usability--HW-offload-on-non-supported-driver-firmware-return-EINVAL">
<p>
E.g. Loading XDP/ebpf prog with HW offload on Netronome NIC, but wrong
firmware, just says EINVAL. No help or hints that firmware needs to
be upgraded.
</p>
<p>
How can we improve the usability / user-experience here?
</p>
<p>
Same EINVAL when loading on a NIC driver other than Netronome. Can we
instead return ENOTSUP ("Operation not supported"), to differentiate
the cases?
</p>
</div>
</div>
<div id="outline-container-Extend-xdp_buff-with-member-data_hard_end" class="outline-3">
<h3 id="Extend-xdp_buff-with-member-data_hard_end"><a href="#Extend-xdp_buff-with-member-data_hard_end">Extend xdp_buff with member data_hard_end</a></h3>
<div class="outline-text-3" id="text-Extend-xdp_buff-with-member-data_hard_end">
<p>
Issue arose when driver ixgbe and i40e choose to violate
one-page-per-packet. After this point, the frame-tail size became
variable. This cause issues when creating an SKB from an xdp_frame,
see the workarounds in cpumap and veth, where the truesize is wrong
and skb_shared_info placement is variable.
</p>
<p>
This can be solved by introducing a new xdp_buff member named
data_hard_end, which specify the maximum address data_end can be
extended to.
</p>
<p>
This will allow:
</p>
<ol class="org-ol">
<li>BPF helper (bpf_xdp_adjust_tail) to extend "tail" (not just shrink
as today). This allows for use-cases (1) do fast DNS replies via
XDP_TX, (2) NDIV (haproxy) also have some use-case that use
tail-extend.</li>
<li>Create better SKBs based on an xdp_frame. (1) Allow placing
skb_shared_info section consistently. (2) Use correct truesize.
(3) Allow for TCP coalescing these kind of SKBs.</li>
</ol>
</div>
</div>
<div id="outline-container-DMA-mapping-xdp_frame" class="outline-3">
<h3 id="DMA-mapping-xdp_frame"><a href="#DMA-mapping-xdp_frame">DMA mapping xdp_frame</a></h3>
<div class="outline-text-3" id="text-DMA-mapping-xdp_frame">
<p>
Keeping DMA mapping in XDP return API.
</p>
</div>
</div>
<div id="outline-container-Convert-samples-bpf--to-use-libbpf-as-elf-loader" class="outline-3">
<h3 id="Convert-samples-bpf--to-use-libbpf-as-elf-loader"><a href="#Convert-samples-bpf--to-use-libbpf-as-elf-loader">Convert samples/bpf/ to use libbpf as elf-loader</a></h3>
</div>
<div id="outline-container-sample-bpf-output-XDP-mode--as-QA-forget-to-report-" class="outline-3">
<h3 id="sample-bpf-output-XDP-mode--as-QA-forget-to-report-"><a href="#sample-bpf-output-XDP-mode--as-QA-forget-to-report-">sample/bpf output XDP-mode (as QA forget to report)</a></h3>
</div>
<div id="outline-container-sample-bpf-output-Driver--as-QA-forget-to-report-" class="outline-3">
<h3 id="sample-bpf-output-Driver--as-QA-forget-to-report-"><a href="#sample-bpf-output-Driver--as-QA-forget-to-report-">sample/bpf output Driver (as QA forget to report)</a></h3>
</div>
<div id="outline-container-GROUP--CPU-map-redirect-things" class="outline-3">
<h3 id="GROUP--CPU-map-redirect-things"><a href="#GROUP--CPU-map-redirect-things">GROUP: CPU-map redirect things</a></h3>
</div>
<div id="outline-container-samples-bpf-upstream-napi_monitor" class="outline-3">
<h3 id="samples-bpf-upstream-napi_monitor"><a href="#samples-bpf-upstream-napi_monitor">samples/bpf upstream napi_monitor</a></h3>
<div class="outline-text-3" id="text-samples-bpf-upstream-napi_monitor">
<p>
Missing an ifindex to match on in tracepoint
</p>
</div>
</div>
<div id="outline-container-Generic-xdp-how-to-assure-NAPI-protect-" class="outline-3">
<h3 id="Generic-xdp-how-to-assure-NAPI-protect-"><a href="#Generic-xdp-how-to-assure-NAPI-protect-">Generic-xdp how-to assure NAPI protect?</a></h3>
</div>
<div id="outline-container-Make-bulk-work-for-generic-xdp-with-devmap" class="outline-3">
<h3 id="Make-bulk-work-for-generic-xdp-with-devmap"><a href="#Make-bulk-work-for-generic-xdp-with-devmap">Make bulk work for generic xdp with devmap</a></h3>
</div>
<div id="outline-container-Meta-data-implement-missing-for-many-drivers" class="outline-3">
<h3 id="Meta-data-implement-missing-for-many-drivers"><a href="#Meta-data-implement-missing-for-many-drivers">Meta data implement missing for many drivers</a></h3>
</div>
<div id="outline-container-Should-we-standardize-ethtool-stats-for-xdp-" class="outline-3">
<h3 id="Should-we-standardize-ethtool-stats-for-xdp-"><a href="#Should-we-standardize-ethtool-stats-for-xdp-">Should we standardize ethtool stats for xdp?</a></h3>
</div>
<div id="outline-container-Adding-and-removing-ethtool-channels-runtime-semantics-" class="outline-3">
<h3 id="Adding-and-removing-ethtool-channels-runtime-semantics-"><a href="#Adding-and-removing-ethtool-channels-runtime-semantics-">Adding and removing ethtool channels runtime semantics?</a></h3>
<div class="outline-text-3" id="text-Adding-and-removing-ethtool-channels-runtime-semantics-">
<p>
(Jakub question this)
</p>
</div>
</div>
<div id="outline-container-Frame-to-skb--missing-csum-hw-info" class="outline-3">
<h3 id="Frame-to-skb--missing-csum-hw-info"><a href="#Frame-to-skb--missing-csum-hw-info">Frame to skb, missing csum hw info</a></h3>
<div class="outline-text-3" id="text-Frame-to-skb--missing-csum-hw-info">
<p>
(Plus other info)
</p>
</div>
</div>
<div id="outline-container-Frame-to-skb--use-full-headroom" class="outline-3">
<h3 id="Frame-to-skb--use-full-headroom"><a href="#Frame-to-skb--use-full-headroom">Frame to skb, use full headroom</a></h3>
</div>
<div id="outline-container-BUG--Generic-XDP-does-not-work-for-TCP--in-certain-cases-" class="outline-3">
<h3 id="BUG--Generic-XDP-does-not-work-for-TCP--in-certain-cases-"><a href="#BUG--Generic-XDP-does-not-work-for-TCP--in-certain-cases-">BUG: Generic-XDP does not work for TCP (in certain cases)</a></h3>
</div>
<div id="outline-container-Potential-bug--Mlx5-fix-dma-unmap-call--after-xdp-return-frame-" class="outline-3">
<h3 id="Potential-bug--Mlx5-fix-dma-unmap-call--after-xdp-return-frame-"><a href="#Potential-bug--Mlx5-fix-dma-unmap-call--after-xdp-return-frame-">Potential-bug: Mlx5 fix dma unmap call (after xdp return frame)</a></h3>
</div>
<div id="outline-container-Retpoline-performance-issue-for-xdp" class="outline-3">
<h3 id="Retpoline-performance-issue-for-xdp"><a href="#Retpoline-performance-issue-for-xdp">Retpoline performance issue for xdp</a></h3>
</div>
<div id="outline-container-Retpoline--mlx5-too-many-indirect-calls" class="outline-3">
<h3 id="Retpoline--mlx5-too-many-indirect-calls"><a href="#Retpoline--mlx5-too-many-indirect-calls">Retpoline: mlx5 too many indirect calls</a></h3>
</div>
<div id="outline-container-XDP-metadata--dynamic-descriptor-offloads-via-BTF" class="outline-3">
<h3 id="XDP-metadata--dynamic-descriptor-offloads-via-BTF"><a href="#XDP-metadata--dynamic-descriptor-offloads-via-BTF">XDP metadata: dynamic descriptor offloads via BTF</a></h3>
</div>
<div id="outline-container-Napatech-have-descriptors-in-front-of-packet-payload" class="outline-3">
<h3 id="Napatech-have-descriptors-in-front-of-packet-payload"><a href="#Napatech-have-descriptors-in-front-of-packet-payload">Napatech have descriptors in-front of packet payload</a></h3>
<div class="outline-text-3" id="text-Napatech-have-descriptors-in-front-of-packet-payload">
<p>
Proprietary commercial companies like NapaTech, which also maps packets
into userspace, deliver dynamic descriptor info in-front of the packet,
like our data_meta area.
</p>
<p>
As far as I can see, via their public docs[4], they have 4 different
dynamic descriptor formats. With BTF and metadata we should have more
flexibility than them :-)
</p>
<p>
It is a bit interesting to look at what they expose. I recommend
looking/clicking at the header-file[5][6][7][8] as it shows they use a
lot of C-bit-fields to compress the size. Do BTF support C-bit fields?
</p>
<p>
[4] <a href="https://docs.napatech.com/search/all?query=Dynamic+Packet+Descriptor">https://docs.napatech.com/search/all?query=Dynamic+Packet+Descriptor</a>
[5] pktdescr_dyn1.h <a href="https://docs.napatech.com/reader/Gtwjm73bddn7nrHz1NxHZw/leAUnFb_t2il~h4y1tNPpw">https://docs.napatech.com/reader/Gtwjm73bddn7nrHz1NxHZw/leAUnFb_t2il~h4y1tNPpw</a>
[6] pktdescr_dyn2.h <a href="https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/7cYsE5yb3DLpomSTEeL_bQ">https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/7cYsE5yb3DLpomSTEeL_bQ</a>
[7] pktdescr_dyn3.h <a href="https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/hcQobdatqtY2j2nmrZ577A">https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/hcQobdatqtY2j2nmrZ577A</a>
[8] pktdescr_dyn4.h <a href="https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/2LaoD2p2mvxpkNOVvBPBqg">https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/2LaoD2p2mvxpkNOVvBPBqg</a>
</p>
<p>
I find it interesting to see that in (dyn1+2), default decode offsets
into the packet of L3 and L4 (and L4 payload), but allows them to be
programmable.
Also notice the "color" members, which are programmable, and sometimes
are use as a 64-bit unique correlation key[8] (e.g. identifying flows).
</p>
<p>
Maybe I should have looked at their standard format before the dynamic(?)
Their pktdescr_std0.h [9] is placed in front of all packets being
received by the adapter when the adapter is operating in STANDARD or
EXTENDED mode.
The Extended descriptors are placed after pktdescr_std0.h [9], which
contains a lot of info on the types in different layers, see[10][11][12].
</p>
<p>
[9] pktdescr_std0.h <a href="https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/mRPP74KNQXIJtSyWBBHMKA">https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/mRPP74KNQXIJtSyWBBHMKA</a>
[10] pktdescr_ext7.h <a href="https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/GXhjyPfAPJ6Rr7k8KR4KsQ">https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/GXhjyPfAPJ6Rr7k8KR4KsQ</a>
[11] pktdescr_ext8.h <a href="https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/NWaAIAROOdyXvy~OV4pl6A">https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/NWaAIAROOdyXvy~OV4pl6A</a>
[12] pktdescr_ext9.h <a href="https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/LVIq8m_b0_44QIIAqcdLew">https://docs.napatech.com/reader/GHSQQPQbWLPdJUmxIkO91Q/LVIq8m_b0_44QIIAqcdLew</a>
</p>
</div>
</div>
</div>
<div id="outline-container-Old-list--watch-out-for-dublicates" class="outline-2">
<h2 id="Old-list--watch-out-for-dublicates"><a href="#Old-list--watch-out-for-dublicates">Old list: watch out for dublicates</a></h2>
<div class="outline-text-2" id="text-Old-list--watch-out-for-dublicates">
<p>
Old list of stuff I need to work-on/fix for XDP/bpf project:
</p>
<ul class="org-ul">
<li>XDP return frame API (needed by AF_XDP ZC)</li>
<li>Bulking API for return frame API</li>
<li>Bulking API for ndo_xdp_xmit</li>
<li>Address massive XDP regression due to CONFIG_RETPOLINE</li>
<li>Introduce bulking for generic-XDP (PoC test show +30% perf!!!)</li>
<li>Implement ndo_xdp_xmit for macvlan (fast guest delivery)</li>
<li>Improve BPF doc</li>
<li>Improve XDP doc</li>
<li>Work on XDP article with Toke+Alexei+Daniel</li>
<li>Better integration of XDP in Suricata (multiple small thing)</li>
<li>Find XDP feature/capability API (use in Suricata)</li>
<li>Help integrate AF_XDP in Suricata</li>
<li>Ship bpftool in distros (start with static linked libbpf)</li>
<li>Make libbpf a shared lib in distros (fix lib versioning)</li>
<li>Help (Ahern) get XDP route/FIB lookup helper integrated</li>
<li>Work on bridge FIB table lookup helper</li>
<li>XDP get more info transferred to CPUMAP skb creation time</li>
<li>cpumap: RX hash support</li>
<li>cpumap: HW csum offload/info</li>
<li>Improve XDP cpumap redirect example: flow hashing (fix NIC HW hash)</li>
<li>Help get AF_XDP API and performance aligned</li>
<li>Help get AF_XDP zero-copy integrated via XDP return API</li>
<li>convert tracepoint to use ifindex instead of names (strcpy overhead)</li>
<li>XDP_REDIRECT: Detect buggy-drivers forgetting to clear per-CPU map</li>
<li>Streamline eBPF map-create return codes on errors</li>
<li>Upstream xdp_bench01 sample to be standard way to measure XDP perf</li>
<li>Fix that TCP traffic with XDP generic on virtual net_devices are broken</li>
<li>xdp: avoid leaking info stored in xdp_frame data on page reuse</li>
<li>XDP_REDIRECT implemement in every driver</li>
<li>XDP data-meta implemement in every driver</li>
<li>Improve samples/bpf: XDP progs should take ifconfig/net_device names</li>
<li>Improve samples/bpf: Avoid including ./arch/x86/include/asm/cpufeature.h</li>
</ul>
</div>
</div>
<div id="outline-container-Site-navigation" class="outline-2">
<h2 id="Site-navigation"><a href="#Site-navigation">Site navigation</a></h2>
<div class="outline-text-2" id="text-Site-navigation">
<p>
The repository contains a number of files that track more specific areas of XDP
development. These are included in the following list:
</p>
<ul class="org-ul">
<li><a href="index.html">Top-level XDP project management</a></li>
<li><a href="brainstorm.html">Brainstorm notes</a></li>
<li><a href="conference.html">Conference planning document</a></li>
<li><a href="people.html">People involved in XDP development</a></li>
<li><a href="planning.html">Project management: Planning who is working on what</a></li>
<li><a href="student-projects.html">XDP-related project ideas for students</a></li>
<li>areas
<ul class="org-ul">
<li><a href="areas/xdp_flowcache.html">Brainstorming around XDP-accelerated flowcache</a></li>
<li><a href="areas/cpumap.html">Project management for CPUMAP</a></li>
<li><a href="areas/xdp-cloud-provider.html">Project management for XDP Cloud-Provider</a></li>
<li><a href="areas/ovs.html">Project management for XDP and Open vSwitch integration</a></li>
<li><a href="areas/drivers.html">Project management for XDP driver support</a></li>
<li><a href="areas/xdp-tutorial.html">Project management for XDP-tutorial</a></li>
<li><a href="areas/mem.html">Project management for areas/mem</a></li>
</ul></li>
</ul>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="date">Date: 2021-09-20 Mon 18:33</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>