Merge tag 'kvm-x86-misc-6.9' of https://github.com/kvm-x86/linux into HEAD
[linux-2.6-block.git] / Documentation / process / maintainer-netdev.rst
CommitLineData
96398ddf
TH
1.. SPDX-License-Identifier: GPL-2.0
2
3.. _netdev-FAQ:
4
ff249be5
JK
5=============================
6Networking subsystem (netdev)
7=============================
96398ddf 8
5d407ca7
JK
9tl;dr
10-----
11
12 - designate your patch to a tree - ``[PATCH net]`` or ``[PATCH net-next]``
13 - for fixes the ``Fixes:`` tag is required, regardless of the tree
14 - don't post large series (> 15 patches), break them up
15 - don't repost your patches within one 24h period
16 - reverse xmas tree
17
ff249be5
JK
18netdev
19------
20
21netdev is a mailing list for all network-related Linux stuff. This
96398ddf
TH
22includes anything found under net/ (i.e. core code like IPv6) and
23drivers/net (i.e. hardware specific drivers) in the Linux source tree.
24
25Note that some subsystems (e.g. wireless drivers) which have a high
ff249be5 26volume of traffic have their own specific mailing lists and trees.
96398ddf
TH
27
28The netdev list is managed (like many other Linux mailing lists) through
50386f75
JK
29VGER (http://vger.kernel.org/) with archives available at
30https://lore.kernel.org/netdev/
96398ddf 31
30cddd30 32Aside from subsystems like those mentioned above, all network-related
96398ddf
TH
33Linux development (i.e. RFC, review, comments, etc.) takes place on
34netdev.
35
ff249be5
JK
36Development cycle
37-----------------
96398ddf 38
ff249be5 39Here is a bit of background information on
96398ddf
TH
40the cadence of Linux development. Each new release starts off with a
41two week "merge window" where the main maintainers feed their new stuff
42to Linus for merging into the mainline tree. After the two weeks, the
43merge window is closed, and it is called/tagged ``-rc1``. No new
44features get mainlined after this -- only fixes to the rc1 content are
45expected. After roughly a week of collecting fixes to the rc1 content,
46rc2 is released. This repeats on a roughly weekly basis until rc7
47(typically; sometimes rc6 if things are quiet, or rc8 if things are in a
48state of churn), and a week after the last vX.Y-rcN was done, the
49official vX.Y is released.
50
ff249be5
JK
51To find out where we are now in the cycle - load the mainline (Linus)
52page here:
53
54 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
55
56and note the top of the "tags" section. If it is rc1, it is early in
57the dev cycle. If it was tagged rc7 a week ago, then a release is
58probably imminent. If the most recent tag is a final release tag
59(without an ``-rcN`` suffix) - we are most likely in a merge window
60and ``net-next`` is closed.
61
62git trees and patch flow
63------------------------
64
65There are two networking trees (git repositories) in play. Both are
66driven by David Miller, the main network maintainer. There is the
67``net`` tree, and the ``net-next`` tree. As you can probably guess from
68the names, the ``net`` tree is for fixes to existing code already in the
69mainline tree from Linus, and ``net-next`` is where the new code goes
70for the future release. You can find the trees here:
71
72- https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
73- https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
74
75Relating that to kernel development: At the beginning of the 2-week
76merge window, the ``net-next`` tree will be closed - no new changes/features.
77The accumulated new content of the past ~10 weeks will be passed onto
96398ddf
TH
78mainline/Linus via a pull request for vX.Y -- at the same time, the
79``net`` tree will start accumulating fixes for this pulled content
80relating to vX.Y
81
82An announcement indicating when ``net-next`` has been closed is usually
83sent to netdev, but knowing the above, you can predict that in advance.
84
2fd4c50d
JK
85.. warning::
86 Do not send new ``net-next`` content to netdev during the
87 period during which ``net-next`` tree is closed.
96398ddf 88
0e242e3f
JK
89RFC patches sent for review only are obviously welcome at any time
90(use ``--subject-prefix='RFC net-next'`` with ``git format-patch``).
91
96398ddf
TH
92Shortly after the two weeks have passed (and vX.Y-rc1 is released), the
93tree for ``net-next`` reopens to collect content for the next (vX.Y+1)
94release.
95
96If you aren't subscribed to netdev and/or are simply unsure if
97``net-next`` has re-opened yet, simply check the ``net-next`` git
98repository link above for any new networking-related commits. You may
99also check the following website for the current status:
100
52450087 101 https://netdev.bots.linux.dev/net-next.html
96398ddf
TH
102
103The ``net`` tree continues to collect fixes for the vX.Y content, and is
104fed back to Linus at regular (~weekly) intervals. Meaning that the
105focus for ``net`` is on stabilization and bug fixes.
106
107Finally, the vX.Y gets released, and the whole cycle starts over.
108
ff249be5
JK
109netdev patch review
110-------------------
96398ddf 111
e110ba65
JK
112.. _patch_status:
113
ff249be5
JK
114Patch status
115~~~~~~~~~~~~
96398ddf 116
ff249be5
JK
117Status of a patch can be checked by looking at the main patchwork
118queue for netdev:
96398ddf 119
460cd17e 120 https://patchwork.kernel.org/project/netdevbpf/list/
96398ddf
TH
121
122The "State" field will tell you exactly where things are at with your
ee8ab74a
JK
123patch:
124
125================== =============================================================
126Patch state Description
127================== =============================================================
128New, Under review pending review, patch is in the maintainer’s queue for
129 review; the two states are used interchangeably (depending on
130 the exact co-maintainer handling patchwork at the time)
131Accepted patch was applied to the appropriate networking tree, this is
132 usually set automatically by the pw-bot
133Needs ACK waiting for an ack from an area expert or testing
134Changes requested patch has not passed the review, new revision is expected
135 with appropriate code and commit message changes
136Rejected patch has been rejected and new revision is not expected
137Not applicable patch is expected to be applied outside of the networking
138 subsystem
139Awaiting upstream patch should be reviewed and handled by appropriate
140 sub-maintainer, who will send it on to the networking trees;
141 patches set to ``Awaiting upstream`` in netdev's patchwork
142 will usually remain in this state, whether the sub-maintainer
143 requested changes, accepted or rejected the patch
144Deferred patch needs to be reposted later, usually due to dependency
145 or because it was posted for a closed tree
146Superseded new version of the patch was posted, usually set by the
147 pw-bot
148RFC not to be applied, usually not in maintainer’s review queue,
149 pw-bot can automatically set patches to this state based
150 on subject tags
151================== =============================================================
152
153Patches are indexed by the ``Message-ID`` header of the emails
5d84921a
JK
154which carried them so if you have trouble finding your patch append
155the value of ``Message-ID`` to the URL above.
96398ddf 156
ff249be5
JK
157Updating patch status
158~~~~~~~~~~~~~~~~~~~~~
159
7e7b3b09
JK
160Contributors and reviewers do not have the permissions to update patch
161state directly in patchwork. Patchwork doesn't expose much information
162about the history of the state of patches, therefore having multiple
163people update the state leads to confusion.
164
165Instead of delegating patchwork permissions netdev uses a simple mail
166bot which looks for special commands/lines within the emails sent to
167the mailing list. For example to mark a series as Changes Requested
168one needs to send the following line anywhere in the email thread::
169
170 pw-bot: changes-requested
171
172As a result the bot will set the entire series to Changes Requested.
173This may be useful when author discovers a bug in their own series
174and wants to prevent it from getting applied.
175
176The use of the bot is entirely optional, if in doubt ignore its existence
177completely. Maintainers will classify and update the state of the patches
178themselves. No email should ever be sent to the list with the main purpose
179of communicating with the bot, the bot commands should be seen as metadata.
180
181The use of the bot is restricted to authors of the patches (the ``From:``
d5dc3945
JK
182header on patch submission and command must match!), maintainers of
183the modified code according to the MAINTAINERS file (again, ``From:``
184must match the MAINTAINERS entry) and a handful of senior reviewers.
185
186Bot records its activity here:
7e7b3b09 187
52450087 188 https://netdev.bots.linux.dev/pw-bot.html
96398ddf 189
ff249be5
JK
190Review timelines
191~~~~~~~~~~~~~~~~
192
f4ef6811
JK
193Generally speaking, the patches get triaged quickly (in less than
19448h). But be patient, if your patch is active in patchwork (i.e. it's
195listed on the project's patch list) the chances it was missed are close to zero.
495ec91b
JK
196
197The high volume of development on netdev makes reviewers move on
198from discussions relatively quickly. New comments and replies
199are very unlikely to arrive after a week of silence. If a patch
200is no longer active in patchwork and the thread went idle for more
201than a week - clarify the next steps and/or post the next version.
202
203For RFC postings specifically, if nobody responded in a week - reviewers
204either missed the posting or have no strong opinions. If the code is ready,
205repost as a PATCH.
206
207Emails saying just "ping" or "bump" are considered rude. If you can't figure
208out the status of the patch from patchwork or where the discussion has
209landed - describe your best guess and ask if it's correct. For example::
210
211 I don't understand what the next steps are. Person X seems to be unhappy
212 with A, should I do B and repost the patches?
02514a06 213
35b4b6d0
JK
214.. _Changes requested:
215
e110ba65
JK
216Changes requested
217~~~~~~~~~~~~~~~~~
218
219Patches :ref:`marked<patch_status>` as ``Changes Requested`` need
220to be revised. The new version should come with a change log,
221preferably including links to previous postings, for example::
222
223 [PATCH net-next v3] net: make cows go moo
224
225 Even users who don't drink milk appreciate hearing the cows go "moo".
226
227 The amount of mooing will depend on packet rate so should match
228 the diurnal cycle quite well.
229
230 Signed-of-by: Joe Defarmer <joe@barn.org>
231 ---
232 v3:
233 - add a note about time-of-day mooing fluctuation to the commit message
234 v2: https://lore.kernel.org/netdev/123themessageid@barn.org/
235 - fix missing argument in kernel doc for netif_is_bovine()
236 - fix memory leak in netdev_register_cow()
237 v1: https://lore.kernel.org/netdev/456getstheclicks@barn.org/
238
239The commit message should be revised to answer any questions reviewers
240had to ask in previous discussions. Occasionally the update of
241the commit message will be the only change in the new version.
242
ff249be5
JK
243Partial resends
244~~~~~~~~~~~~~~~
245
246Please always resend the entire patch series and make sure you do number your
ffa91253 247patches such that it is clear this is the latest and greatest set of patches
ff249be5
JK
248that can be applied. Do not try to resend just the patches which changed.
249
250Handling misapplied patches
251~~~~~~~~~~~~~~~~~~~~~~~~~~~
ffa91253 252
ff249be5
JK
253Occasionally a patch series gets applied before receiving critical feedback,
254or the wrong version of a series gets applied.
e70f94c6
JK
255
256Making the patch disappear once it is pushed out is not possible, the commit
257history in netdev trees is immutable.
ffa91253
FF
258Please send incremental versions on top of what has been merged in order to fix
259the patches the way they would look like if your latest patch series was to be
260merged.
261
e70f94c6
JK
262In cases where full revert is needed the revert has to be submitted
263as a patch to the list with a commit message explaining the technical
264problems with the reverted commit. Reverts should be used as a last resort,
265when original change is completely wrong; incremental fixes are preferred.
266
ff249be5
JK
267Stable tree
268~~~~~~~~~~~
269
dbbe7c96
JK
270While it used to be the case that netdev submissions were not supposed
271to carry explicit ``CC: stable@vger.kernel.org`` tags that is no longer
272the case today. Please follow the standard stable rules in
273:ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>`,
274and make sure you include appropriate Fixes tags!
96398ddf 275
ff249be5
JK
276Security fixes
277~~~~~~~~~~~~~~
278
279Do not email netdev maintainers directly if you think you discovered
280a bug that might have possible security implications.
281The current netdev maintainer has consistently requested that
f4ef6811
JK
282people use the mailing lists and not reach out directly. If you aren't
283OK with that, then perhaps consider mailing security@kernel.org or
284reading about http://oss-security.openwall.org/wiki/mailing-lists/distros
285as possible alternative mechanisms.
286
ff249be5
JK
287
288Co-posting changes to user space components
289~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
290
f4ef6811
JK
291User space code exercising kernel features should be posted
292alongside kernel patches. This gives reviewers a chance to see
293how any new interface is used and how well it works.
294
295When user space tools reside in the kernel repo itself all changes
296should generally come as one series. If series becomes too large
297or the user space project is not reviewed on netdev include a link
298to a public repo where user space patches can be seen.
299
300In case user space tooling lives in a separate repository but is
301reviewed on netdev (e.g. patches to ``iproute2`` tools) kernel and
302user space patches should form separate series (threads) when posted
303to the mailing list, e.g.::
304
305 [PATCH net-next 0/3] net: some feature cover letter
306 └─ [PATCH net-next 1/3] net: some feature prep
307 └─ [PATCH net-next 2/3] net: some feature do it
308 └─ [PATCH net-next 3/3] selftest: net: some feature
309
310 [PATCH iproute2-next] ip: add support for some feature
311
312Posting as one thread is discouraged because it confuses patchwork
313(as of patchwork 2.2.2).
314
ff249be5
JK
315Preparing changes
316-----------------
317
318Attention to detail is important. Re-read your own work as if you were the
f4ef6811
JK
319reviewer. You can start with using ``checkpatch.pl``, perhaps even with
320the ``--strict`` flag. But do not be mindlessly robotic in doing so.
321If your change is a bug fix, make sure your commit log indicates the
322end-user visible symptom, the underlying reason as to why it happens,
323and then if necessary, explain why the fix proposed is the best way to
324get things done. Don't mangle whitespace, and as is common, don't
325mis-indent function arguments that span multiple lines. If it is your
326first patch, mail it to yourself so you can test apply it to an
327unpatched tree to confirm infrastructure didn't mangle it.
328
329Finally, go back and read
330:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
331to be sure you are not repeating some common mistake documented there.
332
ff249be5
JK
333Indicating target tree
334~~~~~~~~~~~~~~~~~~~~~~
335
f4ef6811
JK
336To help maintainers and CI bots you should explicitly mark which tree
337your patch is targeting. Assuming that you use git, use the prefix
338flag::
339
340 git format-patch --subject-prefix='PATCH net-next' start..finish
341
342Use ``net`` instead of ``net-next`` (always lower case) in the above for
343bug-fix ``net`` content.
344
ff249be5
JK
345Dividing work into patches
346~~~~~~~~~~~~~~~~~~~~~~~~~~
f4ef6811
JK
347
348Put yourself in the shoes of the reviewer. Each patch is read separately
349and therefore should constitute a comprehensible step towards your stated
350goal.
351
352Avoid sending series longer than 15 patches. Larger series takes longer
353to review as reviewers will defer looking at it until they find a large
354chunk of time. A small series can be reviewed in a short time, so Maintainers
355just do it. As a result, a sequence of smaller series gets merged quicker and
356with better review coverage. Re-posting large series also increases the mailing
357list traffic.
358
ff249be5
JK
359Multi-line comments
360~~~~~~~~~~~~~~~~~~~
361
362Comment style convention is slightly different for networking and most of
363the tree. Instead of this::
96398ddf
TH
364
365 /*
366 * foobar blah blah blah
367 * another line of text
368 */
369
370it is requested that you make it look like this::
371
372 /* foobar blah blah blah
373 * another line of text
374 */
375
ff249be5
JK
376Local variable ordering ("reverse xmas tree", "RCS")
377~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a2487564
JK
378
379Netdev has a convention for ordering local variables in functions.
380Order the variable declaration lines longest to shortest, e.g.::
381
382 struct scatterlist *sg;
383 struct sk_buff *skb;
384 int err, i;
385
386If there are dependencies between the variables preventing the ordering
387move the initialization out of line.
388
ff249be5
JK
389Format precedence
390~~~~~~~~~~~~~~~~~
391
392When working in existing code which uses nonstandard formatting make
393your code follow the most recent guidelines, so that eventually all code
08767a26 394in the domain of netdev is in the preferred format.
96398ddf 395
ff249be5
JK
396Resending after review
397~~~~~~~~~~~~~~~~~~~~~~
398
f4ef6811
JK
399Allow at least 24 hours to pass between postings. This will ensure reviewers
400from all geographical locations have a chance to chime in. Do not wait
401too long (weeks) between postings either as it will make it harder for reviewers
402to recall all the context.
403
404Make sure you address all the feedback in your new posting. Do not post a new
405version of the code if the discussion about the previous version is still
406ongoing, unless directly instructed by a reviewer.
96398ddf 407
35b4b6d0
JK
408The new version of patches should be posted as a separate thread,
409not as a reply to the previous posting. Change log should include a link
410to the previous posting (see :ref:`Changes requested`).
411
ff249be5
JK
412Testing
413-------
414
415Expected level of testing
416~~~~~~~~~~~~~~~~~~~~~~~~~
417
3eca3814
JK
418At the very minimum your changes must survive an ``allyesconfig`` and an
419``allmodconfig`` build with ``W=1`` set without new warnings or failures.
420
421Ideally you will have done run-time testing specific to your change,
422and the patch series contains a set of kernel selftest for
423``tools/testing/selftests/net`` or using the KUnit framework.
424
425You are expected to test your changes on top of the relevant networking
426tree (``net`` or ``net-next``) and not e.g. a stable tree or ``linux-next``.
96398ddf 427
ff249be5
JK
428patchwork checks
429~~~~~~~~~~~~~~~~
f1d77b2e
JK
430
431Checks in patchwork are mostly simple wrappers around existing kernel
432scripts, the sources are available at:
433
23f9c2c0 434https://github.com/linux-netdev/nipa/tree/master/tests
f1d77b2e 435
ff249be5
JK
436**Do not** post your patches just to run them through the checks.
437You must ensure that your patches are ready by testing them locally
f1d77b2e
JK
438before posting to the mailing list. The patchwork build bot instance
439gets overloaded very easily and netdev@vger really doesn't need more
440traffic if we can help it.
441
ff249be5
JK
442netdevsim
443~~~~~~~~~
396492b4 444
ff249be5
JK
445``netdevsim`` is a test driver which can be used to exercise driver
446configuration APIs without requiring capable hardware.
447Mock-ups and tests based on ``netdevsim`` are strongly encouraged when
448adding new APIs, but ``netdevsim`` in itself is **not** considered
449a use case/user. You must also implement the new APIs in a real driver.
396492b4 450
ff249be5 451We give no guarantees that ``netdevsim`` won't change in the future
396492b4
JK
452in a way which would break what would normally be considered uAPI.
453
ff249be5
JK
454``netdevsim`` is reserved for use by upstream tests only, so any
455new ``netdevsim`` features must be accompanied by selftests under
456``tools/testing/selftests/``.
396492b4 457
6e55b1cb
JK
458Reviewer guidance
459-----------------
460
461Reviewing other people's patches on the list is highly encouraged,
462regardless of the level of expertise. For general guidance and
463helpful tips please see :ref:`development_advancedtopics_reviews`.
464
465It's safe to assume that netdev maintainers know the community and the level
466of expertise of the reviewers. The reviewers should not be concerned about
467their comments impeding or derailing the patch flow.
468
469Less experienced reviewers are highly encouraged to do more in-depth
470review of submissions and not focus exclusively on trivial or subjective
471matters like code formatting, tags etc.
472
ff249be5
JK
473Testimonials / feedback
474-----------------------
c5884ef4 475
ff249be5
JK
476Some companies use peer feedback in employee performance reviews.
477Please feel free to request feedback from netdev maintainers,
478especially if you spend significant amount of time reviewing code
c5884ef4
JK
479and go out of your way to improve shared infrastructure.
480
481The feedback must be requested by you, the contributor, and will always
482be shared with you (even if you request for it to be submitted to your
483manager).