Dsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget-/translations/zh_CN/process/maintainer-netdevmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/zh_TW/process/maintainer-netdevmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/it_IT/process/maintainer-netdevmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/ja_JP/process/maintainer-netdevmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/ko_KR/process/maintainer-netdevmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/sp_SP/process/maintainer-netdevmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhG/var/lib/git/docbuild/linux/Documentation/process/maintainer-netdev.rsthKubhtarget)}(h.. _netdev-FAQ:h]h}(h]h ]h"]h$]h&]refid netdev-faquh1hhKhhhhhhubhsection)}(hhh](htitle)}(hNetworking subsystem (netdev)h]hNetworking subsystem (netdev)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(htl;drh]htl;dr}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh block_quote)}(hX - designate your patch to a tree - ``[PATCH net]`` or ``[PATCH net-next]`` - for fixes the ``Fixes:`` tag is required, regardless of the tree - don't post large series (> 15 patches), break them up - don't repost your patches within one 24h period - reverse xmas tree h]h bullet_list)}(hhh](h list_item)}(hHdesignate your patch to a tree - ``[PATCH net]`` or ``[PATCH net-next]``h]h paragraph)}(hhh](h!designate your patch to a tree - }(hhhhhNhNubhliteral)}(h``[PATCH net]``h]h [PATCH net]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhubh or }(hhhhhNhNubj)}(h``[PATCH net-next]``h]h[PATCH net-next]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhubeh}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h@for fixes the ``Fixes:`` tag is required, regardless of the treeh]h)}(hj2h](hfor fixes the }(hj4hhhNhNubj)}(h ``Fixes:``h]hFixes:}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh( tag is required, regardless of the tree}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hj0ubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h5don't post large series (> 15 patches), break them uph]h)}(hj[h]h7don’t post large series (> 15 patches), break them up}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjYubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h/don't repost your patches within one 24h periodh]h)}(hjrh]h1don’t repost your patches within one 24h period}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjpubah}(h]h ]h"]h$]h&]uh1hhhubh)}(hreverse xmas tree h]h)}(hreverse xmas treeh]hreverse xmas tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubeh}(h]tl-drah ]h"]tl;drah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hnetdevh]hnetdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hnetdev is a mailing list for all network-related Linux stuff. This includes anything found under net/ (i.e. core code like IPv6) and drivers/net (i.e. hardware specific drivers) in the Linux source tree.h]hnetdev is a mailing list for all network-related Linux stuff. This includes anything found under net/ (i.e. core code like IPv6) and drivers/net (i.e. hardware specific drivers) in the Linux source tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hNote that some subsystems (e.g. wireless drivers) which have a high volume of traffic have their own specific mailing lists and trees.h]hNote that some subsystems (e.g. wireless drivers) which have a high volume of traffic have their own specific mailing lists and trees.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hLike many other Linux mailing lists, the netdev list is hosted at kernel.org with archives available at https://lore.kernel.org/netdev/.h](hhLike many other Linux mailing lists, the netdev list is hosted at kernel.org with archives available at }(hjhhhNhNubh reference)}(hhttps://lore.kernel.org/netdev/h]hhttps://lore.kernel.org/netdev/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hAside from subsystems like those mentioned above, all network-related Linux development (i.e. RFC, review, comments, etc.) takes place on netdev.h]hAside from subsystems like those mentioned above, all network-related Linux development (i.e. RFC, review, comments, etc.) takes place on netdev.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]netdevah ]h"]netdevah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hDevelopment cycleh]hDevelopment cycle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK$ubh)}(hXHere is a bit of background information on the cadence of Linux development. Each new release starts off with a two week "merge window" where the main maintainers feed their new stuff to Linus for merging into the mainline tree. After the two weeks, the merge window is closed, and it is called/tagged ``-rc1``. No new features get mainlined after this -- only fixes to the rc1 content are expected. After roughly a week of collecting fixes to the rc1 content, rc2 is released. This repeats on a roughly weekly basis until rc7 (typically; sometimes rc6 if things are quiet, or rc8 if things are in a state of churn), and a week after the last vX.Y-rcN was done, the official vX.Y is released.h](hX4Here is a bit of background information on the cadence of Linux development. Each new release starts off with a two week “merge window” where the main maintainers feed their new stuff to Linus for merging into the mainline tree. After the two weeks, the merge window is closed, and it is called/tagged }(hj,hhhNhNubj)}(h``-rc1``h]h-rc1}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubhX. No new features get mainlined after this -- only fixes to the rc1 content are expected. After roughly a week of collecting fixes to the rc1 content, rc2 is released. This repeats on a roughly weekly basis until rc7 (typically; sometimes rc6 if things are quiet, or rc8 if things are in a state of churn), and a week after the last vX.Y-rcN was done, the official vX.Y is released.}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubh)}(hPTo find out where we are now in the cycle - load the mainline (Linus) page here:h]hPTo find out where we are now in the cycle - load the mainline (Linus) page here:}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjhhubh)}(hChttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git h]h)}(hBhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gith]j)}(hj`h]hBhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git}(hjbhhhNhNubah}(h]h ]h"]h$]h&]refurij`uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhhhK5hjZubah}(h]h ]h"]h$]h&]uh1hhhhK5hjhhubh)}(hX)and note the top of the "tags" section. If it is rc1, it is early in the dev cycle. If it was tagged rc7 a week ago, then a release is probably imminent. If the most recent tag is a final release tag (without an ``-rcN`` suffix) - we are most likely in a merge window and ``net-next`` is closed.h](hand note the top of the “tags” section. If it is rc1, it is early in the dev cycle. If it was tagged rc7 a week ago, then a release is probably imminent. If the most recent tag is a final release tag (without an }(hj|hhhNhNubj)}(h``-rcN``h]h-rcN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubh4 suffix) - we are most likely in a merge window and }(hj|hhhNhNubj)}(h ``net-next``h]hnet-next}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubh is closed.}(hj|hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK7hjhhubeh}(h]development-cycleah ]h"]development cycleah$]h&]uh1hhhhhhhhK$ubh)}(hhh](h)}(hgit trees and patch flowh]hgit trees and patch flow}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK>ubh)}(hXThere are two networking trees (git repositories) in play. Both are driven by David Miller, the main network maintainer. There is the ``net`` tree, and the ``net-next`` tree. As you can probably guess from the names, the ``net`` tree is for fixes to existing code already in the mainline tree from Linus, and ``net-next`` is where the new code goes for the future release. You can find the trees here:h](hThere are two networking trees (git repositories) in play. Both are driven by David Miller, the main network maintainer. There is the }(hjhhhNhNubj)}(h``net``h]hnet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh tree, and the }(hjhhhNhNubj)}(h ``net-next``h]hnet-next}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh6 tree. As you can probably guess from the names, the }(hjhhhNhNubj)}(h``net``h]hnet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhQ tree is for fixes to existing code already in the mainline tree from Linus, and }(hjhhhNhNubj)}(h ``net-next``h]hnet-next}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhQ is where the new code goes for the future release. You can find the trees here:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK@hjhhubh)}(hhh](h)}(h>https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.gith]h)}(hj"h]j)}(hj"h]h>https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git}(hj'hhhNhNubah}(h]h ]h"]h$]h&]refurij"uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhhhKGhj ubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hDhttps://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git h]h)}(hChttps://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.gith]j)}(hjGh]hChttps://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git}(hjIhhhNhNubah}(h]h ]h"]h$]h&]refurijGuh1jhjEubah}(h]h ]h"]h$]h&]uh1hhhhKHhjAubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1hhhhKGhjhhubh)}(hXoRelating that to kernel development: At the beginning of the 2-week merge window, the ``net-next`` tree will be closed - no new changes/features. The accumulated new content of the past ~10 weeks will be passed onto mainline/Linus via a pull request for vX.Y -- at the same time, the ``net`` tree will start accumulating fixes for this pulled content relating to vX.Yh](hVRelating that to kernel development: At the beginning of the 2-week merge window, the }(hjihhhNhNubj)}(h ``net-next``h]hnet-next}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh tree will be closed - no new changes/features. The accumulated new content of the past ~10 weeks will be passed onto mainline/Linus via a pull request for vX.Y -- at the same time, the }(hjihhhNhNubj)}(h``net``h]hnet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubhL tree will start accumulating fixes for this pulled content relating to vX.Y}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKJhjhhubh)}(hAn announcement indicating when ``net-next`` has been closed is usually sent to netdev, but knowing the above, you can predict that in advance.h](h An announcement indicating when }(hjhhhNhNubj)}(h ``net-next``h]hnet-next}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhc has been closed is usually sent to netdev, but knowing the above, you can predict that in advance.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKQhjhhubhwarning)}(hjDo not send new ``net-next`` content to netdev during the period during which ``net-next`` tree is closed.h]h)}(hjDo not send new ``net-next`` content to netdev during the period during which ``net-next`` tree is closed.h](hDo not send new }(hjhhhNhNubj)}(h ``net-next``h]hnet-next}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh2 content to netdev during the period during which }(hjhhhNhNubj)}(h ``net-next``h]hnet-next}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh tree is closed.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKUhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubh)}(hRFC patches sent for review only are obviously welcome at any time (use ``--subject-prefix='RFC net-next'`` with ``git format-patch``).h](hHRFC patches sent for review only are obviously welcome at any time (use }(hjhhhNhNubj)}(h#``--subject-prefix='RFC net-next'``h]h--subject-prefix='RFC net-next'}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh with }(hjhhhNhNubj)}(h``git format-patch``h]hgit format-patch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKXhjhhubh)}(hShortly after the two weeks have passed (and vX.Y-rc1 is released), the tree for ``net-next`` reopens to collect content for the next (vX.Y+1) release.h](hQShortly after the two weeks have passed (and vX.Y-rc1 is released), the tree for }(hj+hhhNhNubj)}(h ``net-next``h]hnet-next}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubh: reopens to collect content for the next (vX.Y+1) release.}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK[hjhhubh)}(hXIf you aren't subscribed to netdev and/or are simply unsure if ``net-next`` has re-opened yet, simply check the ``net-next`` git repository link above for any new networking-related commits. You may also check the following website for the current status:h](hAIf you aren’t subscribed to netdev and/or are simply unsure if }(hjKhhhNhNubj)}(h ``net-next``h]hnet-next}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubh% has re-opened yet, simply check the }(hjKhhhNhNubj)}(h ``net-next``h]hnet-next}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubh git repository link above for any new networking-related commits. You may also check the following website for the current status:}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK_hjhhubh)}(h,https://netdev.bots.linux.dev/net-next.html h]h)}(h+https://netdev.bots.linux.dev/net-next.htmlh]j)}(hjh]h+https://netdev.bots.linux.dev/net-next.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKdhj}ubah}(h]h ]h"]h$]h&]uh1hhhhKdhjhhubh)}(hThe ``net`` tree continues to collect fixes for the vX.Y content, and is fed back to Linus at regular (~weekly) intervals. Meaning that the focus for ``net`` is on stabilization and bug fixes.h](hThe }(hjhhhNhNubj)}(h``net``h]hnet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh tree continues to collect fixes for the vX.Y content, and is fed back to Linus at regular (~weekly) intervals. Meaning that the focus for }(hjhhhNhNubj)}(h``net``h]hnet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh# is on stabilization and bug fixes.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKfhjhhubh)}(hAFinally, the vX.Y gets released, and the whole cycle starts over.h]hAFinally, the vX.Y gets released, and the whole cycle starts over.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjhhubeh}(h]git-trees-and-patch-flowah ]h"]git trees and patch flowah$]h&]uh1hhhhhhhhK>ubh)}(hhh](h)}(hnetdev patch reviewh]hnetdev patch review}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKmubh)}(h.. _patch_status:h]h}(h]h ]h"]h$]h&]h patch-statusuh1hhKohjhhhhubh)}(hhh](h)}(h Patch statush]h Patch status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKrubh)}(hSStatus of a patch can be checked by looking at the main patchwork queue for netdev:h]hSStatus of a patch can be checked by looking at the main patchwork queue for netdev:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthjhhubh)}(h5https://patchwork.kernel.org/project/netdevbpf/list/ h]h)}(h4https://patchwork.kernel.org/project/netdevbpf/list/h]j)}(hj(h]h4https://patchwork.kernel.org/project/netdevbpf/list/}(hj*hhhNhNubah}(h]h ]h"]h$]h&]refurij(uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhhhKwhj"ubah}(h]h ]h"]h$]h&]uh1hhhhKwhjhhubh)}(hLThe "State" field will tell you exactly where things are at with your patch:h]hPThe “State” field will tell you exactly where things are at with your patch:}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjhhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j\hjYubj])}(hhh]h}(h]h ]h"]h$]h&]colwidthK=uh1j\hjYubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(h Patch stateh]h Patch state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hj~ubah}(h]h ]h"]h$]h&]uh1j|hjyubj})}(hhh]h)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjubah}(h]h ]h"]h$]h&]uh1j|hjyubeh}(h]h ]h"]h$]h&]uh1jwhjtubah}(h]h ]h"]h$]h&]uh1jrhjYubhtbody)}(hhh](jx)}(hhh](j})}(hhh]h)}(hNew, Under reviewh]hNew, Under review}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubj})}(hhh]h)}(hpending review, patch is in the maintainer’s queue for review; the two states are used interchangeably (depending on the exact co-maintainer handling patchwork at the time)h]hpending review, patch is in the maintainer’s queue for review; the two states are used interchangeably (depending on the exact co-maintainer handling patchwork at the time)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(hAcceptedh]hAccepted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubj})}(hhh]h)}(hepatch was applied to the appropriate networking tree, this is usually set automatically by the pw-both]hepatch was applied to the appropriate networking tree, this is usually set automatically by the pw-bot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(h Needs ACKh]h Needs ACK}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj.ubah}(h]h ]h"]h$]h&]uh1j|hj+ubj})}(hhh]h)}(h1waiting for an ack from an area expert or testingh]h1waiting for an ack from an area expert or testing}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEubah}(h]h ]h"]h$]h&]uh1j|hj+ubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(hChanges requestedh]hChanges requested}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjeubah}(h]h ]h"]h$]h&]uh1j|hjbubj})}(hhh]h)}(hjpatch has not passed the review, new revision is expected with appropriate code and commit message changesh]hjpatch has not passed the review, new revision is expected with appropriate code and commit message changes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj|ubah}(h]h ]h"]h$]h&]uh1j|hjbubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(hRejectedh]hRejected}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubj})}(hhh]h)}(h8patch has been rejected and new revision is not expectedh]h8patch has been rejected and new revision is not expected}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(hNot applicableh]hNot applicable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubj})}(hhh]h)}(hCpatch is expected to be applied outside of the networking subsystemh]hCpatch is expected to be applied outside of the networking subsystem}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(hAwaiting upstreamh]hAwaiting upstream}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j|hjubj})}(hhh]h)}(hXpatch should be reviewed and handled by appropriate sub-maintainer, who will send it on to the networking trees; patches set to ``Awaiting upstream`` in netdev's patchwork will usually remain in this state, whether the sub-maintainer requested changes, accepted or rejected the patchh](hpatch should be reviewed and handled by appropriate sub-maintainer, who will send it on to the networking trees; patches set to }(hj$hhhNhNubj)}(h``Awaiting upstream``h]hAwaiting upstream}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubh in netdev’s patchwork will usually remain in this state, whether the sub-maintainer requested changes, accepted or rejected the patch}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj!ubah}(h]h ]h"]h$]h&]uh1j|hjubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(hDeferredh]hDeferred}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubah}(h]h ]h"]h$]h&]uh1j|hjPubj})}(hhh]h)}(hfpatch needs to be reposted later, usually due to dependency or because it was posted for a closed treeh]hfpatch needs to be reposted later, usually due to dependency or because it was posted for a closed tree}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjjubah}(h]h ]h"]h$]h&]uh1j|hjPubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(h Supersededh]h Superseded}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubj})}(hhh]h)}(h>new version of the patch was posted, usually set by the pw-both]h>new version of the patch was posted, usually set by the pw-bot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubeh}(h]h ]h"]h$]h&]uh1jwhjubjx)}(hhh](j})}(hhh]h)}(hRFCh]hRFC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubj})}(hhh]h)}(hnot to be applied, usually not in maintainer’s review queue, pw-bot can automatically set patches to this state based on subject tagsh]hnot to be applied, usually not in maintainer’s review queue, pw-bot can automatically set patches to this state based on subject tags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j|hjubeh}(h]h ]h"]h$]h&]uh1jwhjubeh}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]colsKuh1jWhjTubah}(h]h ]h"]h$]h&]uh1jRhjhhhhhNubh)}(hPatches are indexed by the ``Message-ID`` header of the emails which carried them so if you have trouble finding your patch append the value of ``Message-ID`` to the URL above.h](hPatches are indexed by the }(hjhhhNhNubj)}(h``Message-ID``h]h Message-ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhg header of the emails which carried them so if you have trouble finding your patch append the value of }(hjhhhNhNubj)}(h``Message-ID``h]h Message-ID}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh to the URL above.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h](jid1eh ]h"]( patch status patch_statuseh$]h&]uh1hhjhhhhhKrexpect_referenced_by_name}j@jsexpect_referenced_by_id}jjsubh)}(hhh](h)}(hUpdating patch statush]hUpdating patch status}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhhhhhKubh)}(hContributors and reviewers do not have the permissions to update patch state directly in patchwork. Patchwork doesn't expose much information about the history of the state of patches, therefore having multiple people update the state leads to confusion.h]hXContributors and reviewers do not have the permissions to update patch state directly in patchwork. Patchwork doesn’t expose much information about the history of the state of patches, therefore having multiple people update the state leads to confusion.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGhhubh)}(hXInstead of delegating patchwork permissions netdev uses a simple mail bot which looks for special commands/lines within the emails sent to the mailing list. For example to mark a series as Changes Requested one needs to send the following line anywhere in the email thread::h]hXInstead of delegating patchwork permissions netdev uses a simple mail bot which looks for special commands/lines within the emails sent to the mailing list. For example to mark a series as Changes Requested one needs to send the following line anywhere in the email thread:}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGhhubh literal_block)}(hpw-bot: changes-requestedh]hpw-bot: changes-requested}hjvsbah}(h]h ]h"]h$]h&]hhuh1jthhhKhjGhhubh)}(hAs a result the bot will set the entire series to Changes Requested. This may be useful when author discovers a bug in their own series and wants to prevent it from getting applied.h]hAs a result the bot will set the entire series to Changes Requested. This may be useful when author discovers a bug in their own series and wants to prevent it from getting applied.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGhhubh)}(hX*The use of the bot is entirely optional, if in doubt ignore its existence completely. Maintainers will classify and update the state of the patches themselves. No email should ever be sent to the list with the main purpose of communicating with the bot, the bot commands should be seen as metadata.h]hX*The use of the bot is entirely optional, if in doubt ignore its existence completely. Maintainers will classify and update the state of the patches themselves. No email should ever be sent to the list with the main purpose of communicating with the bot, the bot commands should be seen as metadata.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGhhubh)}(hXThe use of the bot is restricted to authors of the patches (the ``From:`` header on patch submission and command must match!), maintainers of the modified code according to the MAINTAINERS file (again, ``From:`` must match the MAINTAINERS entry) and a handful of senior reviewers.h](h@The use of the bot is restricted to authors of the patches (the }(hjhhhNhNubj)}(h ``From:``h]hFrom:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh header on patch submission and command must match!), maintainers of the modified code according to the MAINTAINERS file (again, }(hjhhhNhNubj)}(h ``From:``h]hFrom:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhE must match the MAINTAINERS entry) and a handful of senior reviewers.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjGhhubh)}(hBot records its activity here:h]hBot records its activity here:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGhhubh)}(h*https://netdev.bots.linux.dev/pw-bot.html h]h)}(h)https://netdev.bots.linux.dev/pw-bot.htmlh]j)}(hjh]h)https://netdev.bots.linux.dev/pw-bot.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjGhhubeh}(h]updating-patch-statusah ]h"]updating patch statusah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hReview timelinesh]hReview timelines}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hGenerally speaking, the patches get triaged quickly (in less than 48h). But be patient, if your patch is active in patchwork (i.e. it's listed on the project's patch list) the chances it was missed are close to zero.h]hGenerally speaking, the patches get triaged quickly (in less than 48h). But be patient, if your patch is active in patchwork (i.e. it’s listed on the project’s patch list) the chances it was missed are close to zero.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hXDThe high volume of development on netdev makes reviewers move on from discussions relatively quickly. New comments and replies are very unlikely to arrive after a week of silence. If a patch is no longer active in patchwork and the thread went idle for more than a week - clarify the next steps and/or post the next version.h]hXDThe high volume of development on netdev makes reviewers move on from discussions relatively quickly. New comments and replies are very unlikely to arrive after a week of silence. If a patch is no longer active in patchwork and the thread went idle for more than a week - clarify the next steps and/or post the next version.}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hFor RFC postings specifically, if nobody responded in a week - reviewers either missed the posting or have no strong opinions. If the code is ready, repost as a PATCH.h]hFor RFC postings specifically, if nobody responded in a week - reviewers either missed the posting or have no strong opinions. If the code is ready, repost as a PATCH.}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hEmails saying just "ping" or "bump" are considered rude. If you can't figure out the status of the patch from patchwork or where the discussion has landed - describe your best guess and ask if it's correct. For example::h]hEmails saying just “ping” or “bump” are considered rude. If you can’t figure out the status of the patch from patchwork or where the discussion has landed - describe your best guess and ask if it’s correct. For example:}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubju)}(hvI don't understand what the next steps are. Person X seems to be unhappy with A, should I do B and repost the patches?h]hvI don't understand what the next steps are. Person X seems to be unhappy with A, should I do B and repost the patches?}hjS sbah}(h]h ]h"]h$]h&]hhuh1jthhhKhj hhubh)}(h.. _Changes requested:h]h}(h]h ]h"]h$]h&]hchanges-requesteduh1hhKhj hhhhubeh}(h]review-timelinesah ]h"]review timelinesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hChanges requestedh]hChanges requested}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt hhhhhKubh)}(hPatches :ref:`marked` as ``Changes Requested`` need to be revised. The new version should come with a change log, preferably including links to previous postings, for example::h](hPatches }(hj hhhNhNubh)}(h:ref:`marked`h]hinline)}(hj h]hmarked}(hj hhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]refdocprocess/maintainer-netdev refdomainj reftyperef refexplicitrefwarn reftarget patch_statusuh1hhhhKhj ubh as }(hj hhhNhNubj)}(h``Changes Requested``h]hChanges Requested}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh need to be revised. The new version should come with a change log, preferably including links to previous postings, for example:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjt hhubju)}(hX2[PATCH net-next v3] net: make cows go moo Even users who don't drink milk appreciate hearing the cows go "moo". The amount of mooing will depend on packet rate so should match the diurnal cycle quite well. Signed-off-by: Joe Defarmer --- v3: - add a note about time-of-day mooing fluctuation to the commit message v2: https://lore.kernel.org/netdev/123themessageid@barn.org/ - fix missing argument in kernel doc for netif_is_bovine() - fix memory leak in netdev_register_cow() v1: https://lore.kernel.org/netdev/456getstheclicks@barn.org/h]hX2[PATCH net-next v3] net: make cows go moo Even users who don't drink milk appreciate hearing the cows go "moo". The amount of mooing will depend on packet rate so should match the diurnal cycle quite well. Signed-off-by: Joe Defarmer --- v3: - add a note about time-of-day mooing fluctuation to the commit message v2: https://lore.kernel.org/netdev/123themessageid@barn.org/ - fix missing argument in kernel doc for netif_is_bovine() - fix memory leak in netdev_register_cow() v1: https://lore.kernel.org/netdev/456getstheclicks@barn.org/}hj sbah}(h]h ]h"]h$]h&]hhuh1jthhhKhjt hhubh)}(hThe commit message should be revised to answer any questions reviewers had to ask in previous discussions. Occasionally the update of the commit message will be the only change in the new version.h]hThe commit message should be revised to answer any questions reviewers had to ask in previous discussions. Occasionally the update of the commit message will be the only change in the new version.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjt hhubeh}(h](jk id2eh ]h"]changes requestedah$]changes requestedah&]uh1hhjhhhhhK، referencedKjC}j ja sjE}jk ja subh)}(hhh](h)}(hPartial resendsh]hPartial resends}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hPlease always resend the entire patch series and make sure you do number your patches such that it is clear this is the latest and greatest set of patches that can be applied. Do not try to resend just the patches which changed.h]hPlease always resend the entire patch series and make sure you do number your patches such that it is clear this is the latest and greatest set of patches that can be applied. Do not try to resend just the patches which changed.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubeh}(h]partial-resendsah ]h"]partial resendsah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hHandling misapplied patchesh]hHandling misapplied patches}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(h{Occasionally a patch series gets applied before receiving critical feedback, or the wrong version of a series gets applied.h]h{Occasionally a patch series gets applied before receiving critical feedback, or the wrong version of a series gets applied.}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hXMaking the patch disappear once it is pushed out is not possible, the commit history in netdev trees is immutable. Please send incremental versions on top of what has been merged in order to fix the patches the way they would look like if your latest patch series was to be merged.h]hXMaking the patch disappear once it is pushed out is not possible, the commit history in netdev trees is immutable. Please send incremental versions on top of what has been merged in order to fix the patches the way they would look like if your latest patch series was to be merged.}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hX In cases where full revert is needed the revert has to be submitted as a patch to the list with a commit message explaining the technical problems with the reverted commit. Reverts should be used as a last resort, when original change is completely wrong; incremental fixes are preferred.h]hX In cases where full revert is needed the revert has to be submitted as a patch to the list with a commit message explaining the technical problems with the reverted commit. Reverts should be used as a last resort, when original change is completely wrong; incremental fixes are preferred.}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h]handling-misapplied-patchesah ]h"]handling misapplied patchesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h Stable treeh]h Stable tree}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj` hhhhhM ubh)}(hXGWhile it used to be the case that netdev submissions were not supposed to carry explicit ``CC: stable@vger.kernel.org`` tags that is no longer the case today. Please follow the standard stable rules in :ref:`Documentation/process/stable-kernel-rules.rst `, and make sure you include appropriate Fixes tags!h](hYWhile it used to be the case that netdev submissions were not supposed to carry explicit }(hjq hhhNhNubj)}(h``CC: stable@vger.kernel.org``h]hCC: stable@vger.kernel.org}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjq ubhS tags that is no longer the case today. Please follow the standard stable rules in }(hjq hhhNhNubh)}(hJ:ref:`Documentation/process/stable-kernel-rules.rst `h]j )}(hj h]h-Documentation/process/stable-kernel-rules.rst}(hj hhhNhNubah}(h]h ](j stdstd-refeh"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]refdocj refdomainj reftyperef refexplicitrefwarnj stable_kernel_rulesuh1hhhhM hjq ubh3, and make sure you include appropriate Fixes tags!}(hjq hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hj` hhubeh}(h] stable-treeah ]h"] stable treeah$]h&]uh1hhjhhhhhM ubh)}(hhh](h)}(hSecurity fixesh]hSecurity fixes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hXDo not email netdev maintainers directly if you think you discovered a bug that might have possible security implications. The current netdev maintainer has consistently requested that people use the mailing lists and not reach out directly. If you aren't OK with that, then perhaps consider mailing security@kernel.org or reading about http://oss-security.openwall.org/wiki/mailing-lists/distros as possible alternative mechanisms.h](hX/Do not email netdev maintainers directly if you think you discovered a bug that might have possible security implications. The current netdev maintainer has consistently requested that people use the mailing lists and not reach out directly. If you aren’t OK with that, then perhaps consider mailing }(hj hhhNhNubj)}(hsecurity@kernel.orgh]hsecurity@kernel.org}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:security@kernel.orguh1jhj ubh or reading about }(hj hhhNhNubj)}(h;http://oss-security.openwall.org/wiki/mailing-lists/distrosh]h;http://oss-security.openwall.org/wiki/mailing-lists/distros}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1jhj ubh$ as possible alternative mechanisms.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h]security-fixesah ]h"]security fixesah$]h&]uh1hhjhhhhhMubh)}(hhh](h)}(h+Co-posting changes to user space componentsh]h+Co-posting changes to user space components}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhM ubh)}(hUser space code exercising kernel features should be posted alongside kernel patches. This gives reviewers a chance to see how any new interface is used and how well it works.h]hUser space code exercising kernel features should be posted alongside kernel patches. This gives reviewers a chance to see how any new interface is used and how well it works.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM"hj hhubh)}(hWhen user space tools reside in the kernel repo itself all changes should generally come as one series. If series becomes too large or the user space project is not reviewed on netdev include a link to a public repo where user space patches can be seen.h]hWhen user space tools reside in the kernel repo itself all changes should generally come as one series. If series becomes too large or the user space project is not reviewed on netdev include a link to a public repo where user space patches can be seen.}(hj* hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hj hhubh)}(hIn case user space tooling lives in a separate repository but is reviewed on netdev (e.g. patches to ``iproute2`` tools) kernel and user space patches should form separate series (threads) when posted to the mailing list, e.g.::h](hfIn case user space tooling lives in a separate repository but is reviewed on netdev (e.g. patches to }(hj8 hhhNhNubj)}(h ``iproute2``h]hiproute2}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8 ubhr tools) kernel and user space patches should form separate series (threads) when posted to the mailing list, e.g.:}(hj8 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM+hj hhubju)}(hX [PATCH net-next 0/3] net: some feature cover letter └─ [PATCH net-next 1/3] net: some feature prep └─ [PATCH net-next 2/3] net: some feature do it └─ [PATCH net-next 3/3] selftest: net: some feature [PATCH iproute2-next] ip: add support for some featureh]hX [PATCH net-next 0/3] net: some feature cover letter └─ [PATCH net-next 1/3] net: some feature prep └─ [PATCH net-next 2/3] net: some feature do it └─ [PATCH net-next 3/3] selftest: net: some feature [PATCH iproute2-next] ip: add support for some feature}hjX sbah}(h]h ]h"]h$]h&]hhuh1jthhhM0hj hhubh)}(h[Posting as one thread is discouraged because it confuses patchwork (as of patchwork 2.2.2).h]h[Posting as one thread is discouraged because it confuses patchwork (as of patchwork 2.2.2).}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hj hhubeh}(h]+co-posting-changes-to-user-space-componentsah ]h"]+co-posting changes to user space componentsah$]h&]uh1hhjhhhhhM ubeh}(h]netdev-patch-reviewah ]h"]netdev patch reviewah$]h&]uh1hhhhhhhhKmubh)}(hhh](h)}(hCo-posting selftestsh]hCo-posting selftests}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhM;ubh)}(hXSelftests should be part of the same series as the code changes. Specifically for fixes both code change and related test should go into the same tree (the tests may lack a Fixes tag, which is expected). Mixing code changes and test changes in a single commit is discouraged.h]hXSelftests should be part of the same series as the code changes. Specifically for fixes both code change and related test should go into the same tree (the tests may lack a Fixes tag, which is expected). Mixing code changes and test changes in a single commit is discouraged.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM=hj hhubeh}(h]co-posting-selftestsah ]h"]co-posting selftestsah$]h&]uh1hhhhhhhhM;ubh)}(hhh](h)}(hPreparing changesh]hPreparing changes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMCubh)}(hXAttention to detail is important. Re-read your own work as if you were the reviewer. You can start with using ``checkpatch.pl``, perhaps even with the ``--strict`` flag. But do not be mindlessly robotic in doing so. If your change is a bug fix, make sure your commit log indicates the end-user visible symptom, the underlying reason as to why it happens, and then if necessary, explain why the fix proposed is the best way to get things done. Don't mangle whitespace, and as is common, don't mis-indent function arguments that span multiple lines. If it is your first patch, mail it to yourself so you can test apply it to an unpatched tree to confirm infrastructure didn't mangle it.h](hpAttention to detail is important. Re-read your own work as if you were the reviewer. You can start with using }(hj hhhNhNubj)}(h``checkpatch.pl``h]h checkpatch.pl}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, perhaps even with the }(hj hhhNhNubj)}(h ``--strict``h]h--strict}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhX flag. But do not be mindlessly robotic in doing so. If your change is a bug fix, make sure your commit log indicates the end-user visible symptom, the underlying reason as to why it happens, and then if necessary, explain why the fix proposed is the best way to get things done. Don’t mangle whitespace, and as is common, don’t mis-indent function arguments that span multiple lines. If it is your first patch, mail it to yourself so you can test apply it to an unpatched tree to confirm infrastructure didn’t mangle it.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMEhj hhubh)}(hFinally, go back and read :ref:`Documentation/process/submitting-patches.rst ` to be sure you are not repeating some common mistake documented there.h](hFinally, go back and read }(hj hhhNhNubh)}(hG:ref:`Documentation/process/submitting-patches.rst `h]j )}(hj h]h,Documentation/process/submitting-patches.rst}(hj hhhNhNubah}(h]h ](j stdstd-refeh"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]refdocj refdomainj reftyperef refexplicitrefwarnj submittingpatchesuh1hhhhMPhj ubhG to be sure you are not repeating some common mistake documented there.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMPhj hhubh)}(hhh](h)}(hIndicating target treeh]hIndicating target tree}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMUubh)}(hTo help maintainers and CI bots you should explicitly mark which tree your patch is targeting. Assuming that you use git, use the prefix flag::h]hTo help maintainers and CI bots you should explicitly mark which tree your patch is targeting. Assuming that you use git, use the prefix flag:}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMWhj hhubju)}(h@git format-patch --subject-prefix='PATCH net-next' start..finishh]h@git format-patch --subject-prefix='PATCH net-next' start..finish}hj? sbah}(h]h ]h"]h$]h&]hhuh1jthhhM[hj hhubh)}(haUse ``net`` instead of ``net-next`` (always lower case) in the above for bug-fix ``net`` content.h](hUse }(hjM hhhNhNubj)}(h``net``h]hnet}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM ubh instead of }(hjM hhhNhNubj)}(h ``net-next``h]hnet-next}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM ubh. (always lower case) in the above for bug-fix }(hjM hhhNhNubj)}(h``net``h]hnet}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM ubh content.}(hjM hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM]hj hhubeh}(h]indicating-target-treeah ]h"]indicating target treeah$]h&]uh1hhj hhhhhMUubh)}(hhh](h)}(hDividing work into patchesh]hDividing work into patches}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMaubh)}(hPut yourself in the shoes of the reviewer. Each patch is read separately and therefore should constitute a comprehensible step towards your stated goal.h]hPut yourself in the shoes of the reviewer. Each patch is read separately and therefore should constitute a comprehensible step towards your stated goal.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMchj hhubh)}(hXAvoid sending series longer than 15 patches. Larger series takes longer to review as reviewers will defer looking at it until they find a large chunk of time. A small series can be reviewed in a short time, so Maintainers just do it. As a result, a sequence of smaller series gets merged quicker and with better review coverage. Re-posting large series also increases the mailing list traffic.h]hXAvoid sending series longer than 15 patches. Larger series takes longer to review as reviewers will defer looking at it until they find a large chunk of time. A small series can be reviewed in a short time, so Maintainers just do it. As a result, a sequence of smaller series gets merged quicker and with better review coverage. Re-posting large series also increases the mailing list traffic.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMghj hhubh)}(h.. _rcs:h]h}(h]h ]h"]h$]h&]hrcsuh1hhMnhj hhhhubeh}(h]dividing-work-into-patchesah ]h"]dividing work into patchesah$]h&]uh1hhj hhhhhMaubh)}(hhh](h)}(h4Local variable ordering ("reverse xmas tree", "RCS")h]h` issuesh]h)}(hj0h](h Addressing }(hj2hhhNhNubh)}(h#:ref:`Local variable ordering`h]j )}(hj;h]hLocal variable ordering}(hj=hhhNhNubah}(h]h ](j stdstd-refeh"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&]refdocj refdomainjGreftyperef refexplicitrefwarnj rcsuh1hhhhMhj2ubh issues}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj.ubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h7Conversions to device-managed APIs (``devm_`` helpers) h]h)}(h6Conversions to device-managed APIs (``devm_`` helpers)h](h$Conversions to device-managed APIs (}(hjmhhhNhNubj)}(h ``devm_``h]hdevm_}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh helpers)}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjiubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]j*uh1hhhhMhj hhubh)}(h}This is because it is felt that the churn that such changes produce comes at a greater cost than the value of such clean-ups.h]h}This is because it is felt that the churn that such changes produce comes at a greater cost than the value of such clean-ups.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h;Conversely, spelling and grammar fixes are not discouraged.h]h;Conversely, spelling and grammar fixes are not discouraged.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h]clean-up-patchesah ]h"]clean-up patchesah$]h&]uh1hhj hhhhhMubh)}(hhh](h)}(hResending after reviewh]hResending after review}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hAllow at least 24 hours to pass between postings. This will ensure reviewers from all geographical locations have a chance to chime in. Do not wait too long (weeks) between postings either as it will make it harder for reviewers to recall all the context.h]hAllow at least 24 hours to pass between postings. This will ensure reviewers from all geographical locations have a chance to chime in. Do not wait too long (weeks) between postings either as it will make it harder for reviewers to recall all the context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hMake sure you address all the feedback in your new posting. Do not post a new version of the code if the discussion about the previous version is still ongoing, unless directly instructed by a reviewer.h]hMake sure you address all the feedback in your new posting. Do not post a new version of the code if the discussion about the previous version is still ongoing, unless directly instructed by a reviewer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hThe new version of patches should be posted as a separate thread, not as a reply to the previous posting. Change log should include a link to the previous posting (see :ref:`Changes requested`).h](hThe new version of patches should be posted as a separate thread, not as a reply to the previous posting. Change log should include a link to the previous posting (see }(hjhhhNhNubh)}(h:ref:`Changes requested`h]j )}(hjh]hChanges requested}(hjhhhNhNubah}(h]h ](j stdstd-refeh"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj changes requesteduh1hhhhMhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubeh}(h]resending-after-reviewah ]h"]resending after reviewah$]h&]uh1hhj hhhhhMubeh}(h]preparing-changesah ]h"]preparing changesah$]h&]uh1hhhhhhhhMCubh)}(hhh](h)}(hTestingh]hTesting}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hhhhhMubh)}(hhh](h)}(hExpected level of testingh]hExpected level of testing}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hhhhhMubh)}(hAt the very minimum your changes must survive an ``allyesconfig`` and an ``allmodconfig`` build with ``W=1`` set without new warnings or failures.h](h1At the very minimum your changes must survive an }(hjOhhhNhNubj)}(h``allyesconfig``h]h allyesconfig}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubh and an }(hjOhhhNhNubj)}(h``allmodconfig``h]h allmodconfig}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubh build with }(hjOhhhNhNubj)}(h``W=1``h]hW=1}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubh& set without new warnings or failures.}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj>hhubh)}(hIdeally you will have done run-time testing specific to your change, and the patch series contains a set of kernel selftest for ``tools/testing/selftests/net`` or using the KUnit framework.h](hIdeally you will have done run-time testing specific to your change, and the patch series contains a set of kernel selftest for }(hjhhhNhNubj)}(h``tools/testing/selftests/net``h]htools/testing/selftests/net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or using the KUnit framework.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj>hhubh)}(hYou are expected to test your changes on top of the relevant networking tree (``net`` or ``net-next``) and not e.g. a stable tree or ``linux-next``.Th](hNYou are expected to test your changes on top of the relevant networking tree (}(hjhhhNhNubj)}(h``net``h]hnet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubj)}(h ``net-next``h]hnet-next}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh ) and not e.g. a stable tree or }(hjhhhNhNubj)}(h``linux-next``h]h linux-next}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj>hhubeh}(h]expected-level-of-testingah ]h"]expected level of testingah$]h&]uh1hhj-hhhhhMubh)}(hhh](h)}(hpatchwork checksh]hpatchwork checks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hlChecks in patchwork are mostly simple wrappers around existing kernel scripts, the sources are available at:h]hlChecks in patchwork are mostly simple wrappers around existing kernel scripts, the sources are available at:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h6https://github.com/linux-netdev/nipa/tree/master/testsh]j)}(hj h]h6https://github.com/linux-netdev/nipa/tree/master/tests}(hj"hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hX***Do not** post your patches just to run them through the checks. You must ensure that your patches are ready by testing them locally before posting to the mailing list. The patchwork build bot instance gets overloaded very easily and netdev@vger really doesn't need more traffic if we can help it.h](hstrong)}(h **Do not**h]hDo not}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j:hj6ubh post your patches just to run them through the checks. You must ensure that your patches are ready by testing them locally before posting to the mailing list. The patchwork build bot instance gets overloaded very easily and }(hj6hhhNhNubj)}(h netdev@vgerh]h netdev@vger}(hjNhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:netdev@vgeruh1jhj6ubh6 really doesn’t need more traffic if we can help it.}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubeh}(h]patchwork-checksah ]h"]patchwork checksah$]h&]uh1hhj-hhhhhMubh)}(hhh](h)}(h netdevsimh]h netdevsim}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphhhhhMubh)}(hXL``netdevsim`` is a test driver which can be used to exercise driver configuration APIs without requiring capable hardware. Mock-ups and tests based on ``netdevsim`` are strongly encouraged when adding new APIs, but ``netdevsim`` in itself is **not** considered a use case/user. You must also implement the new APIs in a real driver.h](j)}(h ``netdevsim``h]h netdevsim}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is a test driver which can be used to exercise driver configuration APIs without requiring capable hardware. Mock-ups and tests based on }(hjhhhNhNubj)}(h ``netdevsim``h]h netdevsim}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh3 are strongly encouraged when adding new APIs, but }(hjhhhNhNubj)}(h ``netdevsim``h]h netdevsim}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh in itself is }(hjhhhNhNubj;)}(h**not**h]hnot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j:hjubhS considered a use case/user. You must also implement the new APIs in a real driver.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjphhubh)}(hWe give no guarantees that ``netdevsim`` won't change in the future in a way which would break what would normally be considered uAPI.h](hWe give no guarantees that }(hjhhhNhNubj)}(h ``netdevsim``h]h netdevsim}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh` won’t change in the future in a way which would break what would normally be considered uAPI.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjphhubh)}(h``netdevsim`` is reserved for use by upstream tests only, so any new ``netdevsim`` features must be accompanied by selftests under ``tools/testing/selftests/``.h](j)}(h ``netdevsim``h]h netdevsim}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh8 is reserved for use by upstream tests only, so any new }(hjhhhNhNubj)}(h ``netdevsim``h]h netdevsim}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh1 features must be accompanied by selftests under }(hjhhhNhNubj)}(h``tools/testing/selftests/``h]htools/testing/selftests/}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjphhubeh}(h] netdevsimah ]h"] netdevsimah$]h&]uh1hhj-hhhhhMubeh}(h]testingah ]h"]testingah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hSupported status for driversh]hSupported status for drivers}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChhhhhMubh)}(hDnote: The following requirements apply only to Ethernet NIC drivers.h]hDnote: The following requirements apply only to Ethernet NIC drivers.}hjTsbah}(h]h ]h"]h$]h&]hhuh1hhjChhhhhMubh)}(hXNetdev defines additional requirements for drivers which want to acquire the ``Supported`` status in the MAINTAINERS file. ``Supported`` drivers must be running all upstream driver tests and reporting the results twice a day. Drivers which do not comply with this requirement should use the ``Maintained`` status. There is currently no difference in how ``Supported`` and ``Maintained`` drivers are treated upstream.h](hMNetdev defines additional requirements for drivers which want to acquire the }(hjbhhhNhNubj)}(h ``Supported``h]h Supported}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh! status in the MAINTAINERS file. }(hjbhhhNhNubj)}(h ``Supported``h]h Supported}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh drivers must be running all upstream driver tests and reporting the results twice a day. Drivers which do not comply with this requirement should use the }(hjbhhhNhNubj)}(h``Maintained``h]h Maintained}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh1 status. There is currently no difference in how }(hjbhhhNhNubj)}(h ``Supported``h]h Supported}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh and }(hjbhhhNhNubj)}(h``Maintained``h]h Maintained}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh drivers are treated upstream.}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjChhubh)}(hIThe exact rules a driver must follow to acquire the ``Supported`` status:h](h4The exact rules a driver must follow to acquire the }(hjhhhNhNubj)}(h ``Supported``h]h Supported}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh status:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjChhubhenumerated_list)}(hhh](h)}(hMust run all tests under ``drivers/net`` and ``drivers/net/hw`` targets of Linux selftests. Running and reporting private / internal tests is also welcome, but upstream tests are a must. h]h)}(hMust run all tests under ``drivers/net`` and ``drivers/net/hw`` targets of Linux selftests. Running and reporting private / internal tests is also welcome, but upstream tests are a must.h](hMust run all tests under }(hjhhhNhNubj)}(h``drivers/net``h]h drivers/net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h``drivers/net/hw``h]hdrivers/net/hw}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh{ targets of Linux selftests. Running and reporting private / internal tests is also welcome, but upstream tests are a must.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hThe minimum run frequency is once every 12 hours. Must test the designated branch from the selected branch feed. Note that branches are auto-constructed and exposed to intentional malicious patch posting, so the test systems must be isolated. h]h)}(hThe minimum run frequency is once every 12 hours. Must test the designated branch from the selected branch feed. Note that branches are auto-constructed and exposed to intentional malicious patch posting, so the test systems must be isolated.h]hThe minimum run frequency is once every 12 hours. Must test the designated branch from the selected branch feed. Note that branches are auto-constructed and exposed to intentional malicious patch posting, so the test systems must be isolated.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj+ubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hDrivers supporting multiple generations of devices must test at least one device from each generation. A testbed manifest (exact format TBD) should describe the device models tested. h]h)}(hDrivers supporting multiple generations of devices must test at least one device from each generation. A testbed manifest (exact format TBD) should describe the device models tested.h]hDrivers supporting multiple generations of devices must test at least one device from each generation. A testbed manifest (exact format TBD) should describe the device models tested.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjCubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hThe tests must run reliably, if multiple branches are skipped or tests are failing due to execution environment problems the ``Supported`` status will be withdrawn. h]h)}(hThe tests must run reliably, if multiple branches are skipped or tests are failing due to execution environment problems the ``Supported`` status will be withdrawn.h](h}The tests must run reliably, if multiple branches are skipped or tests are failing due to execution environment problems the }(hj_hhhNhNubj)}(h ``Supported``h]h Supported}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubh status will be withdrawn.}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj[ubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hTest failures due to bugs either in the driver or the test itself, or lack of support for the feature the test is targgeting are *not* a basis for losing the ``Supported`` status. h]h)}(hTest failures due to bugs either in the driver or the test itself, or lack of support for the feature the test is targgeting are *not* a basis for losing the ``Supported`` status.h](hTest failures due to bugs either in the driver or the test itself, or lack of support for the feature the test is targgeting are }(hjhhhNhNubhemphasis)}(h*not*h]hnot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh a basis for losing the }(hjhhhNhNubj)}(h ``Supported``h]h Supported}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh status.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1jhjChhhhhMubh)}(hanetdev CI will maintain an official page of supported devices, listing their recent test results.h]hanetdev CI will maintain an official page of supported devices, listing their recent test results.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjChhubh)}(hX The driver maintainer may arrange for someone else to run the test, there is no requirement for the person listed as maintainer (or their employer) to be responsible for running the tests. Collaboration between vendors, hosting GH CI, other repos under linux-netdev, etc. is most welcome.h]hX The driver maintainer may arrange for someone else to run the test, there is no requirement for the person listed as maintainer (or their employer) to be responsible for running the tests. Collaboration between vendors, hosting GH CI, other repos under linux-netdev, etc. is most welcome.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjChhubh)}(hSee https://github.com/linux-netdev/nipa/wiki for more information about netdev CI. Feel free to reach out to maintainers or the list with any questions.h](hSee }(hjhhhNhNubj)}(h)https://github.com/linux-netdev/nipa/wikih]h)https://github.com/linux-netdev/nipa/wiki}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubhl for more information about netdev CI. Feel free to reach out to maintainers or the list with any questions.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hjChhubeh}(h]supported-status-for-driversah ]h"]supported status for driversah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hReviewer guidanceh]hReviewer guidance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hReviewing other people's patches on the list is highly encouraged, regardless of the level of expertise. For general guidance and helpful tips please see :ref:`development_advancedtopics_reviews`.h](hReviewing other people’s patches on the list is highly encouraged, regardless of the level of expertise. For general guidance and helpful tips please see }(hj$hhhNhNubh)}(h):ref:`development_advancedtopics_reviews`h]j )}(hj.h]h"development_advancedtopics_reviews}(hj0hhhNhNubah}(h]h ](j stdstd-refeh"]h$]h&]uh1j hj,ubah}(h]h ]h"]h$]h&]refdocj refdomainj:reftyperef refexplicitrefwarnj "development_advancedtopics_reviewsuh1hhhhMhj$ubh.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hIt's safe to assume that netdev maintainers know the community and the level of expertise of the reviewers. The reviewers should not be concerned about their comments impeding or derailing the patch flow.h]hIt’s safe to assume that netdev maintainers know the community and the level of expertise of the reviewers. The reviewers should not be concerned about their comments impeding or derailing the patch flow.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hLess experienced reviewers are highly encouraged to do more in-depth review of submissions and not focus exclusively on trivial or subjective matters like code formatting, tags etc.h]hLess experienced reviewers are highly encouraged to do more in-depth review of submissions and not focus exclusively on trivial or subjective matters like code formatting, tags etc.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubeh}(h]reviewer-guidanceah ]h"]reviewer guidanceah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hTestimonials / feedbackh]hTestimonials / feedback}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhhhhhMubh)}(hSome companies use peer feedback in employee performance reviews. Please feel free to request feedback from netdev maintainers, especially if you spend significant amount of time reviewing code and go out of your way to improve shared infrastructure.h]hSome companies use peer feedback in employee performance reviews. Please feel free to request feedback from netdev maintainers, especially if you spend significant amount of time reviewing code and go out of your way to improve shared infrastructure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM!hjzhhubh)}(hThe feedback must be requested by you, the contributor, and will always be shared with you (even if you request for it to be submitted to your manager).h]hThe feedback must be requested by you, the contributor, and will always be shared with you (even if you request for it to be submitted to your manager).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hjzhhubeh}(h]testimonials-feedbackah ]h"]testimonials / feedbackah$]h&]uh1hhhhhhhhMubeh}(h](networking-subsystem-netdevheh ]h"](networking subsystem (netdev) netdev-faqeh$]h&]uh1hhhhhhhhKjC}jhsjE}hhsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksj|footnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}(h]haj]jajk ]ja aj ]j aunameids}(jhjjjjjjjjjjj j~ j@jj?j<j j jq jn j jk j j j] jZ j j j j jy jv j j j*j'j j j j j j j j jC j@ j j jjj"jj@j=jjjmjjj8j5jj jwjtjju nametypes}(jjjjjjj j@j?j jq j j j] j j jy j j*j j j j jC j jj"j@jjmj8jjwjuh}(hhjhjhjjjjjjj~ jjjj<jj jGjn j jk jt j jt j j jZ j j j` j j jv j j j j'j j j j j j j j j j@ j j jF jj jjj=j-jj>jjjj5jpj jCjtjjjzu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages]hsystem_message)}(hhh]h)}(h4Duplicate implicit target name: "changes requested".h]h8Duplicate implicit target name: “changes requested”.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDubah}(h]h ]h"]h$]h&]j alevelKtypeINFOsourcehlineKuh1jBhjt hhhhhKubatransform_messages](jC)}(hhh]h)}(hhh]h0Hyperlink target "netdev-faq" is not referenced.}hjesbah}(h]h ]h"]h$]h&]uh1hhjbubah}(h]h ]h"]h$]h&]levelKtypej]sourcehlineKuh1jBubjC)}(hhh]h)}(hhh]h2Hyperlink target "patch-status" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhj|ubah}(h]h ]h"]h$]h&]levelKtypej]sourcehlineKouh1jBubjC)}(hhh]h)}(hhh]h7Hyperlink target "changes-requested" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypej]sourcehlineKuh1jBubjC)}(hhh]h)}(hhh]h)Hyperlink target "rcs" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypej]sourcehlineMnuh1jBube transformerN include_log] decorationNhhub.