€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ-/translations/zh_CN/process/maintainer-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/zh_TW/process/maintainer-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/process/maintainer-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/process/maintainer-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/process/maintainer-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/pt_BR/process/maintainer-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/sp_SP/process/maintainer-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒG/var/lib/git/docbuild/linux/Documentation/process/maintainer-netdev.rst”h´KubhŒtarget”“”)�”}”(hŒ.. _netdev-FAQ:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ netdev-faq”uh1hÈh´Khhh²hh³hÇubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒNetworking subsystem (netdev)”h]”hŒNetworking subsystem (netdev)”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´Kubh×)�”}”(hhh]”(hÜ)�”}”(hŒtl;dr”h]”hŒtl;dr”…”�”}”(hhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhëh²hh³hÇh´K 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”“”)�”}”(hŒHdesignate your patch to a tree - ``[PATCH net]`` or ``[PATCH net-next]``”h]”hŒ paragraph”“”)�”}”(hj h]”(hŒ!designate your patch to a tree - ”…”�”}”(hjh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``[PATCH net]``”h]”hŒ [PATCH net]”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ or ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``[PATCH net-next]``”h]”hŒ[PATCH net-next]”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒ@for fixes the ``Fixes:`` tag is required, regardless of the tree”h]”j)�”}”(hjFh]”(hŒfor fixes the ”…”�”}”(hjHh²hh³Nh´Nubj)�”}”(hŒ ``Fixes:``”h]”hŒFixes:”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHubhŒ( tag is required, regardless of the tree”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒ5don't post large series (> 15 patches), break them up”h]”j)�”}”(hjoh]”hŒ7don’t post large series (> 15 patches), break them up”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Khjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒ/don't repost your patches within one 24h period”h]”j)�”}”(hj†h]”hŒ1don’t repost your patches within one 24h period”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Khj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒreverse xmas tree ”h]”j)�”}”(hŒreverse xmas tree”h]”hŒreverse xmas tree”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Khj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jh³hÇh´K hhþubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K hhëh²hubeh}”(h]”Œtl-dr”ah ]”h"]”Œtl;dr”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K ubh×)�”}”(hhh]”(hÜ)�”}”(hŒnetdev”h]”hŒnetdev”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÉh²hh³hÇh´Kubj)�”}”(hŒÌnetdev 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]”hŒÌnetdev 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.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KhjÉh²hubj)�”}”(hŒ†Note that some subsystems (e.g. wireless drivers) which have a high volume of traffic have their own specific mailing lists and trees.”h]”hŒ†Note that some subsystems (e.g. wireless drivers) which have a high volume of traffic have their own specific mailing lists and trees.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KhjÉh²hubj)�”}”(hŒˆLike many other Linux mailing lists, the netdev list is hosted at kernel.org with archives available at https://lore.kernel.org/netdev/.”h]”(hŒhLike many other Linux mailing lists, the netdev list is hosted at kernel.org with archives available at ”…”�”}”(hjöh²hh³Nh´NubhŒ reference”“”)�”}”(hŒhttps://lore.kernel.org/netdev/”h]”hŒhttps://lore.kernel.org/netdev/”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1jþhjöubhŒ.”…”�”}”(hjöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KhjÉh²hubj)�”}”(hŒ‘Aside from subsystems like those mentioned above, all network-related Linux development (i.e. RFC, review, comments, etc.) takes place on netdev.”h]”hŒ‘Aside from subsystems like those mentioned above, all network-related Linux development (i.e. RFC, review, comments, etc.) takes place on netdev.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KhjÉh²hubeh}”(h]”Œnetdev”ah ]”h"]”Œnetdev”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kubh×)�”}”(hhh]”(hÜ)�”}”(hŒDevelopment cycle”h]”hŒDevelopment cycle”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj/h²hh³hÇh´K$ubj)�”}”(hX¹Here 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@h²hh³Nh´Nubj)�”}”(hŒ``-rc1``”h]”hŒ-rc1”…”�”}”(hjHh²hh³Nh´Nubah}”(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@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K&hj/h²hubj)�”}”(hŒPTo find out where we are now in the cycle - load the mainline (Linus) page here:”h]”hŒPTo find out where we are now in the cycle - load the mainline (Linus) page here:”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K2hj/h²hubhý)�”}”(hŒChttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git ”h]”j)�”}”(hŒBhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git”h]”jÿ)�”}”(hjth]”hŒBhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jtuh1jþhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K5hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K5hj/h²hubj)�”}”(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]”(hŒÚ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 ”…”�”}”(hj�h²hh³Nh´Nubj)�”}”(hŒ``-rcN``”h]”hŒ-rcN”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubhŒ4 suffix) - we are most likely in a merge window and ”…”�”}”(hj�h²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubhŒ is closed.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K7hj/h²hubeh}”(h]”Œdevelopment-cycle”ah ]”h"]”Œdevelopment cycle”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K$ubh×)�”}”(hhh]”(hÜ)�”}”(hŒgit trees and patch flow”h]”hŒgit trees and patch flow”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÊh²hh³hÇh´K>ubj)�”}”(hX•There 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]”(hŒˆThere are two networking trees (git repositories) in play. Both are driven by David Miller, the main network maintainer. There is the ”…”�”}”(hjÛh²hh³Nh´Nubj)�”}”(hŒ``net``”h]”hŒnet”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubhŒ tree, and the ”…”�”}”(hjÛh²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubhŒ6 tree. As you can probably guess from the names, the ”…”�”}”(hjÛh²hh³Nh´Nubj)�”}”(hŒ``net``”h]”hŒnet”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubhŒQ tree is for fixes to existing code already in the mainline tree from Linus, and ”…”�”}”(hjÛh²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubhŒQ is where the new code goes for the future release. You can find the trees here:”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K@hjÊh²hubj)�”}”(hhh]”(j)�”}”(hŒ>https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git”h]”j)�”}”(hj6h]”jÿ)�”}”(hj6h]”hŒ>https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j6uh1jþhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KGhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1h²hh³hÇh´Nubj)�”}”(hŒDhttps://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git ”h]”j)�”}”(hŒChttps://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git”h]”jÿ)�”}”(hj[h]”hŒChttps://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j[uh1jþhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KHhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j¹jºuh1jh³hÇh´KGhjÊh²hubj)�”}”(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.Y”h]”(hŒVRelating that to kernel development: At the beginning of the 2-week merge window, the ”…”�”}”(hj}h²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubhŒº 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 ”…”�”}”(hj}h²hh³Nh´Nubj)�”}”(hŒ``net``”h]”hŒnet”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubhŒL tree will start accumulating fixes for this pulled content relating to vX.Y”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KJhjÊh²hubj)�”}”(hŒ�An 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 ”…”�”}”(hj¯h²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ubhŒc has been closed is usually sent to netdev, but knowing the above, you can predict that in advance.”…”�”}”(hj¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KQhjÊh²hubhŒwarning”“”)�”}”(hŒjDo not send new ``net-next`` content to netdev during the period during which ``net-next`` tree is closed.”h]”j)�”}”(hŒjDo not send new ``net-next`` content to netdev during the period during which ``net-next`` tree is closed.”h]”(hŒDo not send new ”…”�”}”(hjÕh²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubhŒ2 content to netdev during the period during which ”…”�”}”(hjÕh²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕubhŒ tree is closed.”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KUhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÊh²hh³hÇh´Nubj)�”}”(hŒ‡RFC patches sent for review only are obviously welcome at any time (use ``--subject-prefix='RFC net-next'`` with ``git format-patch``).”h]”(hŒHRFC patches sent for review only are obviously welcome at any time (use ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ#``--subject-prefix='RFC net-next'``”h]”hŒ--subject-prefix='RFC net-next'”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ with ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ``git format-patch``”h]”hŒgit format-patch”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ).”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KXhjÊh²hubj)�”}”(hŒ—Shortly 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]”(hŒQShortly after the two weeks have passed (and vX.Y-rc1 is released), the tree for ”…”�”}”(hj?h²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ubhŒ: reopens to collect content for the next (vX.Y+1) release.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K[hjÊh²hubj)�”}”(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]”(hŒAIf you aren’t subscribed to netdev and/or are simply unsure if ”…”�”}”(hj_h²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubhŒ% has re-opened yet, simply check the ”…”�”}”(hj_h²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubhŒ„ git repository link above for any new networking-related commits. You may also check the following website for the current status:”…”�”}”(hj_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K_hjÊh²hubhý)�”}”(hŒ,https://netdev.bots.linux.dev/net-next.html ”h]”j)�”}”(hŒ+https://netdev.bots.linux.dev/net-next.html”h]”jÿ)�”}”(hj—h]”hŒ+https://netdev.bots.linux.dev/net-next.html”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j—uh1jþhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kdhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´KdhjÊh²hubj)�”}”(hŒÁThe ``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]”(hŒThe ”…”�”}”(hj³h²hh³Nh´Nubj)�”}”(hŒ``net``”h]”hŒnet”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³ubhŒŒ 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 ”…”�”}”(hj³h²hh³Nh´Nubj)�”}”(hŒ``net``”h]”hŒnet”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³ubhŒ# is on stabilization and bug fixes.”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KfhjÊh²hubj)�”}”(hŒAFinally, the vX.Y gets released, and the whole cycle starts over.”h]”hŒAFinally, the vX.Y gets released, and the whole cycle starts over.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KjhjÊh²hubeh}”(h]”Œgit-trees-and-patch-flow”ah ]”h"]”Œgit trees and patch flow”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K>ubh×)�”}”(hhh]”(hÜ)�”}”(hŒnetdev patch review”h]”hŒnetdev patch review”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjûh²hh³hÇh´KmubhÉ)�”}”(hŒ.. _patch_status:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÔŒ patch-status”uh1hÈh´Kohjûh²hh³hÇubh×)�”}”(hhh]”(hÜ)�”}”(hŒ Patch status”h]”hŒ Patch status”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjh²hh³hÇh´Krubj)�”}”(hŒSStatus of a patch can be checked by looking at the main patchwork queue for netdev:”h]”hŒSStatus of a patch can be checked by looking at the main patchwork queue for netdev:”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kthjh²hubhý)�”}”(hŒ5https://patchwork.kernel.org/project/netdevbpf/list/ ”h]”j)�”}”(hŒ4https://patchwork.kernel.org/project/netdevbpf/list/”h]”jÿ)�”}”(hj<h]”hŒ4https://patchwork.kernel.org/project/netdevbpf/list/”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j<uh1jþhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kwhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´Kwhjh²hubj)�”}”(hŒLThe "State" field will tell you exactly where things are at with your patch:”h]”hŒPThe “Stateâ€� field will tell you exactly where things are at with your patch:”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kyhjh²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jphjmubjq)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K=uh1jphjmubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”j)�”}”(hŒ Patch state”h]”hŒ Patch state”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K}hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubj‘)�”}”(hhh]”j)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K}hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjmubhŒtbody”“”)�”}”(hhh]”(jŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒNew, Under review”h]”hŒNew, Under review”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑubj‘)�”}”(hhh]”j)�”}”(hŒ®pending 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]”hŒ®pending 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)”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Khjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒAccepted”h]”hŒAccepted”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K‚hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubj‘)�”}”(hhh]”j)�”}”(hŒepatch was applied to the appropriate networking tree, this is usually set automatically by the pw-bot”h]”hŒepatch was applied to the appropriate networking tree, this is usually set automatically by the pw-bot”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K‚hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒ Needs ACK”h]”hŒ Needs ACK”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K„hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubj‘)�”}”(hhh]”j)�”}”(hŒ1waiting for an ack from an area expert or testing”h]”hŒ1waiting for an ack from an area expert or testing”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K„hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒChanges requested”h]”hŒChanges requested”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K…hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvubj‘)�”}”(hhh]”j)�”}”(hŒjpatch has not passed the review, new revision is expected with appropriate code and commit message changes”h]”hŒjpatch has not passed the review, new revision is expected with appropriate code and commit message changes”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K…hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒRejected”h]”hŒRejected”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K‡hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­ubj‘)�”}”(hhh]”j)�”}”(hŒ8patch has been rejected and new revision is not expected”h]”hŒ8patch has been rejected and new revision is not expected”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K‡hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒNot applicable”h]”hŒNot applicable”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kˆhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäubj‘)�”}”(hhh]”j)�”}”(hŒCpatch is expected to be applied outside of the networking subsystem”h]”hŒCpatch is expected to be applied outside of the networking subsystem”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kˆhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒAwaiting upstream”h]”hŒAwaiting upstream”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KŠhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubj‘)�”}”(hhh]”j)�”}”(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 patch”h]”(hŒ€patch should be reviewed and handled by appropriate sub-maintainer, who will send it on to the networking trees; patches set to ”…”�”}”(hj8h²hh³Nh´Nubj)�”}”(hŒ``Awaiting upstream``”h]”hŒAwaiting upstream”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubhŒˆ in netdev’s patchwork will usually remain in this state, whether the sub-maintainer requested changes, accepted or rejected the patch”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KŠhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒDeferred”h]”hŒDeferred”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K�hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdubj‘)�”}”(hhh]”j)�”}”(hŒfpatch needs to be reposted later, usually due to dependency or because it was posted for a closed tree”h]”hŒfpatch needs to be reposted later, usually due to dependency or because it was posted for a closed tree”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K�hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒ Superseded”h]”hŒ Superseded”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K‘hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›ubj‘)�”}”(hhh]”j)�”}”(hŒ>new version of the patch was posted, usually set by the pw-bot”h]”hŒ>new version of the patch was posted, usually set by the pw-bot”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K‘hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubjŒ)�”}”(hhh]”(j‘)�”}”(hhh]”j)�”}”(hŒRFC”h]”hŒRFC”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K“hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒubj‘)�”}”(hhh]”j)�”}”(hŒ‡not to be applied, usually not in maintainer’s review queue, pw-bot can automatically set patches to this state based on subject tags”h]”hŒ‡not to be applied, usually not in maintainer’s review queue, pw-bot can automatically set patches to this state based on subject tags”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K“hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÌhjmubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jkhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjh²hh³hÇh´Nubj)�”}”(hŒ°Patches 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]”(hŒPatches are indexed by the ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``Message-ID``”h]”hŒ Message-ID”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒg header of the emails which carried them so if you have trouble finding your patch append the value of ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``Message-ID``”h]”hŒ Message-ID”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ to the URL above.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K˜hjh²hubeh}”(h]”(jŒid1”eh ]”h"]”(Œ patch status”Œ patch_status”eh$]”h&]”uh1hÖhjûh²hh³hÇh´KrŒexpect_referenced_by_name”}”jTj sŒexpect_referenced_by_id”}”jj subh×)�”}”(hhh]”(hÜ)�”}”(hŒUpdating patch status”h]”hŒUpdating patch status”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj[h²hh³hÇh´K�ubj)�”}”(hŒþContributors 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.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KŸhj[h²hubj)�”}”(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:”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K¤hj[h²hubhŒ literal_block”“”)�”}”(hŒpw-bot: changes-requested”h]”hŒpw-bot: changes-requested”…”�”}”hjŠsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jˆh³hÇh´K©hj[h²hubj)�”}”(hŒµAs 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]”hŒµAs 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.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K«hj[h²hubj)�”}”(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.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K¯hj[h²hubj)�”}”(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 ”…”�”}”(hj´h²hh³Nh´Nubj)�”}”(hŒ ``From:``”h]”hŒFrom:”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubhŒ� header on patch submission and command must match!), maintainers of the modified code according to the MAINTAINERS file (again, ”…”�”}”(hj´h²hh³Nh´Nubj)�”}”(hŒ ``From:``”h]”hŒFrom:”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubhŒE must match the MAINTAINERS entry) and a handful of senior reviewers.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K´hj[h²hubj)�”}”(hŒBot records its activity here:”h]”hŒBot records its activity here:”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K¹hj[h²hubhý)�”}”(hŒ*https://netdev.bots.linux.dev/pw-bot.html ”h]”j)�”}”(hŒ)https://netdev.bots.linux.dev/pw-bot.html”h]”jÿ)�”}”(hjúh]”hŒ)https://netdev.bots.linux.dev/pw-bot.html”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”júuh1jþhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´K»hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1hüh³hÇh´K»hj[h²hubeh}”(h]”Œupdating-patch-status”ah ]”h"]”Œupdating patch status”ah$]”h&]”uh1hÖhjûh²hh³hÇh´K�ubh×)�”}”(hhh]”(hÜ)�”}”(hŒReview timelines”h]”hŒReview timelines”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´K¾ubj)�”}”(hŒØGenerally 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]”hŒÜGenerally 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/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÀhj h²hubj)�”}”(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= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÄhj h²hubj)�”}”(hŒ§For 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]”hŒ§For 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.”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÊhj h²hubj)�”}”(hŒOThere are 2 services actively providing LLM-generated review on posted patches:”h]”hŒOThere are 2 services actively providing LLM-generated review on posted patches:”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÎhj h²hubj)�”}”(hhh]”(j)�”}”(hŒhttps://sashiko.dev/”h]”j)�”}”(hjl h]”jÿ)�”}”(hjl h]”hŒhttps://sashiko.dev/”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jl uh1jþhjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÐhjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg h²hh³hÇh´Nubj)�”}”(hŒ*https://netdev-ai.bots.linux.dev/sashiko/ ”h]”j)�”}”(hŒ)https://netdev-ai.bots.linux.dev/sashiko/”h]”jÿ)�”}”(hj‘ h]”hŒ)https://netdev-ai.bots.linux.dev/sashiko/”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j‘ uh1jþhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÑhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j¹jºuh1jh³hÇh´KÐhj h²hubj)�”}”(hX:both use the Sashiko infrastructure on top of different models. Reviews are available after 24h. Patch authors are expected to proactively look into the AI-generated reviews and handle such feedback as any other kind of review: either debate it or address it. In both cases a reply on the mailing list is expected.”h]”hX:both use the Sashiko infrastructure on top of different models. Reviews are available after 24h. Patch authors are expected to proactively look into the AI-generated reviews and handle such feedback as any other kind of review: either debate it or address it. In both cases a reply on the mailing list is expected.”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÓhj h²hubj)�”}”(hŒîAuthors are strongly encouraged to run LLM reviews on the posted patches in advance of the actual post. Large series triggering a significant amount of AI-generated feedback will likely get little attention from maintainers and reviewers.”h]”hŒîAuthors are strongly encouraged to run LLM reviews on the posted patches in advance of the actual post. Large series triggering a significant amount of AI-generated feedback will likely get little attention from maintainers and reviewers.”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÙhj h²hubj)�”}”(hŒÜEmails 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]”hŒçEmails 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:”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´KÞhj h²hubj‰)�”}”(hŒvI 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]”hŒvI don't understand what the next steps are. Person X seems to be unhappy with A, should I do B and repost the patches?”…”�”}”hjÝ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jˆh³hÇh´Kâhj h²hubj)�”}”(hŒÕDon't reach out to maintainers or reviewers via private email and/or other communications channels: all the discussion must remain public, and requesting special attention is unfair towards the community, at best.”h]”hŒ×Don’t reach out to maintainers or reviewers via private email and/or other communications channels: all the discussion must remain public, and requesting special attention is unfair towards the community, at best.”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kåhj h²hubhÉ)�”}”(hŒ.. _Changes requested:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÔŒchanges-requested”uh1hÈh´Kéhj h²hh³hÇubeh}”(h]”Œreview-timelines”ah ]”h"]”Œreview timelines”ah$]”h&]”uh1hÖhjûh²hh³hÇh´K¾ubh×)�”}”(hhh]”(hÜ)�”}”(hŒChanges requested”h]”hŒChanges requested”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´Kìubj)�”}”(hŒ¾Patches :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]”(hŒPatches ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:ref:`marked`”h]”hŒinline”“”)�”}”(hj' h]”hŒmarked”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j) hj% ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œprocess/maintainer-netdev”Œ refdomain”j6 Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ patch_status”uh1hh³hÇh´Kîhj ubhŒ as ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ``Changes Requested``”h]”hŒChanges Requested”…”�”}”(hjN h²hh³Nh´Nubah}”(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 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Kîhj h²hubj‰)�”}”(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/”…”�”}”hjf sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jˆh³hÇh´Kòhj h²hubj)�”}”(hŒÄThe 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]”hŒÄThe 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.”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj h²hubeh}”(h]”(j Œid2”eh ]”h"]”Œchanges requested”ah$]”Œchanges requested”ah&]”uh1hÖhjûh²hh³hÇh´KìŒ referenced”KjW}”j‡ jù sjY}”j jù subh×)�”}”(hhh]”(hÜ)�”}”(hŒPartial resends”h]”hŒPartial resends”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjŽ h²hh³hÇh´Mubj)�”}”(hŒäPlease 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]”hŒäPlease 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Ÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M hjŽ h²hubeh}”(h]”Œpartial-resends”ah ]”h"]”Œpartial resends”ah$]”h&]”uh1hÖhjûh²hh³hÇh´Mubh×)�”}”(hhh]”(hÜ)�”}”(hŒHandling misapplied patches”h]”hŒHandling misapplied patches”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjµ h²hh³hÇh´Mubj)�”}”(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Æ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhjµ h²hubj)�”}”(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Ô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhjµ h²hubj)�”}”(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.”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhjµ h²hubeh}”(h]”Œhandling-misapplied-patches”ah ]”h"]”Œhandling misapplied patches”ah$]”h&]”uh1hÖhjûh²hh³hÇh´Mubh×)�”}”(hhh]”(hÜ)�”}”(hŒ Stable tree”h]”hŒ Stable tree”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjø h²hh³hÇh´Mubj)�”}”(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]”(hŒYWhile it used to be the case that netdev submissions were not supposed to carry explicit ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ``CC: stable@vger.kernel.org``”h]”hŒCC: stable@vger.kernel.org”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒS tags that is no longer the case today. Please follow the standard stable rules in ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒJ:ref:`Documentation/process/stable-kernel-rules.rst `”h]”j* )�”}”(hj% h]”hŒ-Documentation/process/stable-kernel-rules.rst”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”(j5 Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j) hj# ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jB Œ refdomain”j1 Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjH Œstable_kernel_rules”uh1hh³hÇh´M!hj ubhŒ3, and make sure you include appropriate Fixes tags!”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M!hjø h²hubeh}”(h]”Œ stable-tree”ah ]”h"]”Œ stable tree”ah$]”h&]”uh1hÖhjûh²hh³hÇh´Mubh×)�”}”(hhh]”(hÜ)�”}”(hŒSecurity fixes”h]”hŒSecurity fixes”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjU h²hh³hÇh´M(ubj)�”}”(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 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 ”…”�”}”(hjf h²hh³Nh´Nubjÿ)�”}”(hŒsecurity@kernel.org”h]”hŒsecurity@kernel.org”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:security@kernel.org”uh1jþhjf ubhŒ or reading about ”…”�”}”(hjf h²hh³Nh´Nubjÿ)�”}”(hŒ;http://oss-security.openwall.org/wiki/mailing-lists/distros”h]”hŒ;http://oss-security.openwall.org/wiki/mailing-lists/distros”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j„ uh1jþhjf ubhŒ$ as possible alternative mechanisms.”…”�”}”(hjf h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M*hjU h²hubeh}”(h]”Œsecurity-fixes”ah ]”h"]”Œsecurity fixes”ah$]”h&]”uh1hÖhjûh²hh³hÇh´M(ubh×)�”}”(hhh]”(hÜ)�”}”(hŒ+Co-posting changes to user space components”h]”hŒ+Co-posting changes to user space components”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj£ h²hh³hÇh´M4ubj)�”}”(hŒ¯User 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]”hŒ¯User 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´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M6hj£ h²hubj)�”}”(hŒýWhen 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]”hŒýWhen 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 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M:hj£ h²hubj)�”}”(hŒåIn 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]”(hŒfIn case user space tooling lives in a separate repository but is reviewed on netdev (e.g. patches to ”…”�”}”(hjÐ h²hh³Nh´Nubj)�”}”(hŒ ``iproute2``”h]”hŒiproute2”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐ ubhŒr tools) kernel and user space patches should form separate series (threads) when posted to the mailing list, e.g.:”…”�”}”(hjÐ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M?hj£ h²hubj‰)�”}”(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”h]”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”…”�”}”hjð sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jˆh³hÇh´MDhj£ h²hubj)�”}”(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).”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MKhj£ h²hubeh}”(h]”Œ+co-posting-changes-to-user-space-components”ah ]”h"]”Œ+co-posting changes to user space components”ah$]”h&]”uh1hÖhjûh²hh³hÇh´M4ubh×)�”}”(hhh]”(hÜ)�”}”(hŒCo-posting selftests”h]”hŒCo-posting selftests”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´MOubj)�”}”(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% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MQhj h²hubeh}”(h]”Œco-posting-selftests”ah ]”h"]”Œco-posting selftests”ah$]”h&]”uh1hÖhjûh²hh³hÇh´MOubeh}”(h]”Œnetdev-patch-review”ah ]”h"]”Œnetdev patch review”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kmubh×)�”}”(hhh]”(hÜ)�”}”(hŒPreparing changes”h]”hŒPreparing changes”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjC h²hh³hÇh´MWubj)�”}”(hX±Attention 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]”(hŒpAttention to detail is important. Re-read your own work as if you were the reviewer. You can start with using ”…”�”}”(hjT h²hh³Nh´Nubj)�”}”(hŒ``checkpatch.pl``”h]”hŒ checkpatch.pl”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT ubhŒ, perhaps even with the ”…”�”}”(hjT h²hh³Nh´Nubj)�”}”(hŒ ``--strict``”h]”hŒ--strict”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT 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.”…”�”}”(hjT h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MYhjC h²hubj)�”}”(hŒ¨Finally, go back and read :ref:`Documentation/process/submitting-patches.rst ` to be sure you are not repeating some common mistake documented there.”h]”(hŒFinally, go back and read ”…”�”}”(hj† h²hh³Nh´Nubh)�”}”(hŒG:ref:`Documentation/process/submitting-patches.rst `”h]”j* )�”}”(hj� h]”hŒ,Documentation/process/submitting-patches.rst”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”(j5 Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j) hjŽ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jB Œ refdomain”jœ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjH Œsubmittingpatches”uh1hh³hÇh´Mdhj† ubhŒG to be sure you are not repeating some common mistake documented there.”…”�”}”(hj† h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MdhjC h²hubh×)�”}”(hhh]”(hÜ)�”}”(hŒIndicating target tree”h]”hŒIndicating target tree”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj¸ h²hh³hÇh´Miubj)�”}”(hŒ�To 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]”hŒŽTo help maintainers and CI bots you should explicitly mark which tree your patch is targeting. Assuming that you use git, use the prefix flag:”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mkhj¸ h²hubj‰)�”}”(hŒ@git format-patch --subject-prefix='PATCH net-next' start..finish”h]”hŒ@git format-patch --subject-prefix='PATCH net-next' start..finish”…”�”}”hj× sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jˆh³hÇh´Mohj¸ h²hubj)�”}”(hŒaUse ``net`` instead of ``net-next`` (always lower case) in the above for bug-fix ``net`` content.”h]”(hŒUse ”…”�”}”(hjå h²hh³Nh´Nubj)�”}”(hŒ``net``”h]”hŒnet”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå ubhŒ instead of ”…”�”}”(hjå h²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå ubhŒ. (always lower case) in the above for bug-fix ”…”�”}”(hjå h²hh³Nh´Nubj)�”}”(hŒ``net``”h]”hŒnet”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå ubhŒ content.”…”�”}”(hjå h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mqhj¸ h²hubeh}”(h]”Œindicating-target-tree”ah ]”h"]”Œindicating target tree”ah$]”h&]”uh1hÖhjC h²hh³hÇh´Miubh×)�”}”(hhh]”(hÜ)�”}”(hŒDividing work into patches”h]”hŒDividing work into patches”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj1 h²hh³hÇh´Muubj)�”}”(hŒ˜Put yourself in the shoes of the reviewer. Each patch is read separately and therefore should constitute a comprehensible step towards your stated goal.”h]”hŒ˜Put yourself in the shoes of the reviewer. Each patch is read separately and therefore should constitute a comprehensible step towards your stated goal.”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mwhj1 h²hubj)�”}”(hX‰Avoid 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]”hX‰Avoid 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.”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M{hj1 h²hubeh}”(h]”Œdividing-work-into-patches”ah ]”h"]”Œdividing work into patches”ah$]”h&]”uh1hÖhjC h²hh³hÇh´Muubeh}”(h]”Œpreparing-changes”ah ]”h"]”Œpreparing changes”ah$]”h&]”uh1hÖhhØh²hh³hÇh´MWubh×)�”}”(hhh]”(hÜ)�”}”(hŒ)Limit patches outstanding on mailing list”h]”hŒ)Limit patches outstanding on mailing list”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjn h²hh³hÇh´Mƒubj)�”}”(hŒæAvoid having more than 15 patches, across all series, outstanding for review on the mailing list for a single tree. In other words, a maximum of 15 patches under review on net, and a maximum of 15 patches under review on net-next.”h]”hŒæAvoid having more than 15 patches, across all series, outstanding for review on the mailing list for a single tree. In other words, a maximum of 15 patches under review on net, and a maximum of 15 patches under review on net-next.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M…hjn h²hubj)�”}”(hŒ©This limit is intended to focus developer effort on testing patches before upstream review. Aiding the quality of upstream submissions, and easing the load on reviewers.”h]”hŒ©This limit is intended to focus developer effort on testing patches before upstream review. Aiding the quality of upstream submissions, and easing the load on reviewers.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MŠhjn h²hubhÉ)�”}”(hŒ.. _rcs:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÔŒrcs”uh1hÈh´MŽhjn h²hh³hÇubh×)�”}”(hhh]”(hÜ)�”}”(hŒ4Local variable ordering ("reverse xmas tree", "RCS")”h]”hŒ` issues”h]”j)�”}”(hjýh]”(hŒ Addressing ”…”�”}”(hjÿh²hh³Nh´Nubh)�”}”(hŒ#:ref:`Local variable ordering`”h]”j* )�”}”(hjh]”hŒLocal variable ordering”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j5 Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j) hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jB Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjH Œrcs”uh1hh³hÇh´M»hjÿubhŒ issues”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M»hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏh²hh³hÇh´Nubj)�”}”(hŒ7Conversions to device-managed APIs (``devm_`` helpers) ”h]”j)�”}”(hŒ6Conversions to device-managed APIs (``devm_`` helpers)”h]”(hŒ$Conversions to device-managed APIs (”…”�”•–o}”(hj:h²hh³Nh´Nubj)�”}”(hŒ ``devm_``”h]”hŒdevm_”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ubhŒ helpers)”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M¼hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j¹Œ*”uh1jh³hÇh´Mºhj°h²hubj)�”}”(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.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M¾hj°h²hubj)�”}”(hŒ;Conversely, spelling and grammar fixes are not discouraged.”h]”hŒ;Conversely, spelling and grammar fixes are not discouraged.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÁhj°h²hubeh}”(h]”Œclean-up-patches”ah ]”h"]”Œclean-up patches”ah$]”h&]”uh1hÖhjn h²hh³hÇh´Mµubh×)�”}”(hhh]”(hÜ)�”}”(hŒResending after review”h]”hŒResending after review”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj‹h²hh³hÇh´MÄubj)�”}”(hŒÿAllow 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]”hŒÿAllow 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.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÆhj‹h²hubj)�”}”(hŒÊMake 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]”hŒÊMake 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.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MËhj‹h²hubj)�”}”(hŒÂThe 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]”(hŒ¨The 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 ”…”�”}”(hj¸h²hh³Nh´Nubh)�”}”(hŒ:ref:`Changes requested`”h]”j* )�”}”(hjÂh]”hŒChanges requested”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”(j5 Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j) hjÀubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jB Œ refdomain”jÎŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjH Œchanges requested”uh1hh³hÇh´MÏhj¸ubhŒ).”…”�”}”(hj¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÏhj‹h²hubeh}”(h]”Œresending-after-review”ah ]”h"]”Œresending after review”ah$]”h&]”uh1hÖhjn h²hh³hÇh´MÄubeh}”(h]”Œ)limit-patches-outstanding-on-mailing-list”ah ]”h"]”Œ)limit patches outstanding on mailing list”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Mƒubh×)�”}”(hhh]”(hÜ)�”}”(hŒTesting”h]”hŒTesting”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjúh²hh³hÇh´MÔubh×)�”}”(hhh]”(hÜ)�”}”(hŒExpected level of testing”h]”hŒExpected level of testing”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´M×ubj)�”}”(hŒ’At the very minimum your changes must survive an ``allyesconfig`` and an ``allmodconfig`` build with ``W=1`` set without new warnings or failures.”h]”(hŒ1At the very minimum your changes must survive an ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``allyesconfig``”h]”hŒ allyesconfig”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ and an ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``allmodconfig``”h]”hŒ allmodconfig”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ build with ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``W=1``”h]”hŒW=1”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ& set without new warnings or failures.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÙhj h²hubj)�”}”(hŒ½Ideally 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]”(hŒ€Ideally you will have done run-time testing specific to your change, and the patch series contains a set of kernel selftest for ”…”�”}”(hj`h²hh³Nh´Nubj)�”}”(hŒ``tools/testing/selftests/net``”h]”hŒtools/testing/selftests/net”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`ubhŒ or using the KUnit framework.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MÜhj h²hubj)�”}”(hŒ”You 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``.”h]”(hŒNYou are expected to test your changes on top of the relevant networking tree (”…”�”}”(hj€h²hh³Nh´Nubj)�”}”(hŒ``net``”h]”hŒnet”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubhŒ or ”…”�”}”(hj€h²hh³Nh´Nubj)�”}”(hŒ ``net-next``”h]”hŒnet-next”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubhŒ ) and not e.g. a stable tree or ”…”�”}”(hj€h²hh³Nh´Nubj)�”}”(hŒ``linux-next``”h]”hŒ linux-next”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ubhŒ.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Màhj h²hubeh}”(h]”Œexpected-level-of-testing”ah ]”h"]”Œexpected level of testing”ah$]”h&]”uh1hÖhjúh²hh³hÇh´M×ubh×)�”}”(hhh]”(hÜ)�”}”(hŒpatchwork checks”h]”hŒpatchwork checks”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÌh²hh³hÇh´Mäubj)�”}”(hŒlChecks in patchwork are mostly simple wrappers around existing kernel scripts, the sources are available at:”h]”hŒlChecks in patchwork are mostly simple wrappers around existing kernel scripts, the sources are available at:”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MæhjÌh²hubj)�”}”(hŒ6https://github.com/linux-netdev/nipa/tree/master/tests”h]”jÿ)�”}”(hjíh]”hŒ6https://github.com/linux-netdev/nipa/tree/master/tests”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jíuh1jþhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MéhjÌh²hubj)�”}”(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]”(hŒstrong”“”)�”}”(hŒ **Do not**”h]”hŒDo not”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒá 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 ”…”�”}”(hjh²hh³Nh´Nubjÿ)�”}”(hŒ netdev@vger”h]”hŒ netdev@vger”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:netdev@vger”uh1jþhjubhŒ6 really doesn’t need more traffic if we can help it.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MëhjÌh²hubeh}”(h]”Œpatchwork-checks”ah ]”h"]”Œpatchwork checks”ah$]”h&]”uh1hÖhjúh²hh³hÇh´Mäubh×)�”}”(hhh]”(hÜ)�”}”(hŒ netdevsim”h]”hŒ netdevsim”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj=h²hh³hÇh´Mòubj)�”}”(hX ``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 encouraged when adding new APIs with complex logic in the stack. The tests should be written so that they can run both against ``netdevsim`` and a real device (see ``tools/testing/selftests/drivers/net/README.rst``). ``netdevsim``-only tests should focus on testing corner cases and failure paths in the core which are hard to exercise with a real driver.”h]”(j)�”}”(hŒ ``netdevsim``”h]”hŒ netdevsim”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubhŒŠ is a test driver which can be used to exercise driver configuration APIs without requiring capable hardware. Mock-ups and tests based on ”…”�”}”(hjNh²hh³Nh´Nubj)�”}”(hŒ ``netdevsim``”h]”hŒ netdevsim”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubhŒ„ are encouraged when adding new APIs with complex logic in the stack. The tests should be written so that they can run both against ”…”�”}”(hjNh²hh³Nh´Nubj)�”}”(hŒ ``netdevsim``”h]”hŒ netdevsim”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubhŒ and a real device (see ”…”�”}”(hjNh²hh³Nh´Nubj)�”}”(hŒ2``tools/testing/selftests/drivers/net/README.rst``”h]”hŒ.tools/testing/selftests/drivers/net/README.rst”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubhŒ). ”…”�”}”(hjNh²hh³Nh´Nubj)�”}”(hŒ ``netdevsim``”h]”hŒ netdevsim”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubhŒ}-only tests should focus on testing corner cases and failure paths in the core which are hard to exercise with a real driver.”…”�”}”(hjNh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Môhj=h²hubj)�”}”(hŒu``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”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubhŒ in itself is ”…”�”}”(hj²h²hh³Nh´Nubj)�”}”(hŒ**not**”h]”hŒnot”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubhŒS considered a use case/user. You must also implement the new APIs in a real driver.”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mýhj=h²hubj)�”}”(hŒ†We give no guarantees that ``netdevsim`` won't change in the future in a way which would break what would normally be considered uAPI.”h]”(hŒWe give no guarantees that ”…”�”}”(hjàh²hh³Nh´Nubj)�”}”(hŒ ``netdevsim``”h]”hŒ netdevsim”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjàubhŒ` won’t change in the future in a way which would break what would normally be considered uAPI.”…”�”}”(hjàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj=h²hubj)�”}”(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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ8 is reserved for use by upstream tests only, so any new ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ ``netdevsim``”h]”hŒ netdevsim”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ1 features must be accompanied by selftests under ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``tools/testing/selftests/``”h]”hŒtools/testing/selftests/”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj=h²hubeh}”(h]”Œ netdevsim”ah ]”h"]”Œ netdevsim”ah$]”h&]”uh1hÖhjúh²hh³hÇh´Mòubeh}”(h]”Œtesting”ah ]”h"]”Œtesting”ah$]”h&]”uh1hÖhhØh²hh³hÇh´MÔubh×)�”}”(hhh]”(hÜ)�”}”(hŒSupported status for drivers”h]”hŒSupported status for drivers”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjPh²hh³hÇh´Mubh¶)�”}”(hŒDnote: The following requirements apply only to Ethernet NIC drivers.”h]”hŒDnote: The following requirements apply only to Ethernet NIC drivers.”…”�”}”hjasbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhjPh²hh³hÇh´M ubj)�”}”(hX Netdev 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]”(hŒMNetdev defines additional requirements for drivers which want to acquire the ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ ``Supported``”h]”hŒ Supported”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubhŒ! status in the MAINTAINERS file. ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ ``Supported``”h]”hŒ Supported”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubhŒ› 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 ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ``Maintained``”h]”hŒ Maintained”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubhŒ1 status. There is currently no difference in how ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ ``Supported``”h]”hŒ Supported”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubhŒ and ”…”�”}”(hjoh²hh³Nh´Nubj)�”}”(hŒ``Maintained``”h]”hŒ Maintained”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubhŒ drivers are treated upstream.”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M hjPh²hubj)�”}”(hŒIThe exact rules a driver must follow to acquire the ``Supported`` status:”h]”(hŒ4The exact rules a driver must follow to acquire the ”…”�”}”(hj×h²hh³Nh´Nubj)�”}”(hŒ ``Supported``”h]”hŒ Supported”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubhŒ status:”…”�”}”(hj×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MhjPh²hubhŒenumerated_list”“”)�”}”(hhh]”(j)�”}”(hŒ»Must 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]”j)�”}”(hŒºMust 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ŒMust run all tests under ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``drivers/net``”h]”hŒ drivers/net”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``drivers/net/hw``”h]”hŒdrivers/net/hw”…”�”}”(hjh²hh³Nh´Nubah}”(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.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubj)�”}”(hŒóThe 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]”j)�”}”(hŒòThe 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ŒòThe 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<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´Mhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubj)�”}”(hŒ·Drivers 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]”j)�”}”(hŒ¶Drivers 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Œ¶Drivers 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.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubj)�”}”(hŒ¥The 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]”j)�”}”(hŒ¤The 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 ”…”�”}”(hjlh²hh³Nh´Nubj)�”}”(hŒ ``Supported``”h]”hŒ Supported”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubhŒ status will be withdrawn.”…”�”}”(hjlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M"hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubj)�”}”(hŒ³Test failures due to bugs either in the driver or the test itself, or lack of support for the feature the test is targeting are *not* a basis for losing the ``Supported`` status. ”h]”j)�”}”(hŒ²Test failures due to bugs either in the driver or the test itself, or lack of support for the feature the test is targeting are *not* a basis for losing the ``Supported`` status.”h]”(hŒ€Test failures due to bugs either in the driver or the test itself, or lack of support for the feature the test is targeting are ”…”�”}”(hj–h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhj–ubhŒ a basis for losing the ”…”�”}”(hj–h²hh³Nh´Nubj)�”}”(hŒ ``Supported``”h]”hŒ Supported”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–ubhŒ status.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M&hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j÷hjPh²hh³hÇh´Mubj)�”}”(hŒanetdev CI will maintain an official page of supported devices, listing their recent test results.”h]”hŒanetdev CI will maintain an official page of supported devices, listing their recent test results.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M*hjPh²hubj)�”}”(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.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M-hjPh²hubj)�”}”(hŒ™See 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]”(hŒSee ”…”�”}”(hj÷h²hh³Nh´Nubjÿ)�”}”(hŒ)https://github.com/linux-netdev/nipa/wiki”h]”hŒ)https://github.com/linux-netdev/nipa/wiki”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1jþhj÷ubhŒl for more information about netdev CI. Feel free to reach out to maintainers or the list with any questions.”…”�”}”(hj÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M2hjPh²hubeh}”(h]”Œsupported-status-for-drivers”ah ]”h"]”Œsupported status for drivers”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Mubh×)�”}”(hhh]”(hÜ)�”}”(hŒReviewer guidance”h]”hŒReviewer guidance”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´M6ubj)�”}”(hŒÄReviewing 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]”(hŒœReviewing other people’s patches on the list is highly encouraged, regardless of the level of expertise. For general guidance and helpful tips please see ”…”�”}”(hj1h²hh³Nh´Nubh)�”}”(hŒ):ref:`development_advancedtopics_reviews`”h]”j* )�”}”(hj;h]”hŒ"development_advancedtopics_reviews”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”(j5 Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j) hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jB Œ refdomain”jGŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjH Œ"development_advancedtopics_reviews”uh1hh³hÇh´M8hj1ubhŒ.”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M8hj h²hubj)�”}”(hX[It'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. A Reviewed-by tag is understood to mean "I have reviewed this code to the best of my ability" rather than "I can attest this code is correct".”h]”hXeIt’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. A Reviewed-by tag is understood to mean “I have reviewed this code to the best of my abilityâ€� rather than “I can attest this code is correctâ€�.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´M<hj h²hubj)�”}”(hŒ´Reviewers are highly encouraged to do more in-depth review of submissions and not focus exclusively on process issues, trivial or subjective matters like code formatting, tags etc.”h]”hŒ´Reviewers are highly encouraged to do more in-depth review of submissions and not focus exclusively on process issues, trivial or subjective matters like code formatting, tags etc.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MBhj h²hubeh}”(h]”Œreviewer-guidance”ah ]”h"]”Œreviewer guidance”ah$]”h&]”uh1hÖhhØh²hh³hÇh´M6ubh×)�”}”(hhh]”(hÜ)�”}”(hŒTestimonials / feedback”h]”hŒTestimonials / feedback”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj‡h²hh³hÇh´MGubj)�”}”(hŒúSome 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]”hŒúSome 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.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MIhj‡h²hubj)�”}”(hŒ˜The 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]”hŒ˜The 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).”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MNhj‡h²hubeh}”(h]”Œtestimonials-feedback”ah ]”h"]”Œtestimonials / feedback”ah$]”h&]”uh1hÖhhØh²hh³hÇh´MGubeh}”(h]”(Œnetworking-subsystem-netdev”hÕeh ]”h"]”(Œnetworking subsystem (netdev)”Œ netdev-faq”eh$]”h&]”uh1hÖhhh²hh³hÇh´KjW}”jÂhÊsjY}”hÕhÊsubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”j�Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jéŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”(hÕ]”hÊaj]”j aj ]”jù aj¥ ]”j› auŒnameids”}”(jÂhÕjÁj¾jÆjÃj,j)jÇjÄjøjõj@ j= jTjjSjPj j j j j‡ j j² j¯ jõ jò jR jO j  j� j j j8 j5 jk jh j. j+ jc j` j÷jôjç j¥ jæ jã jj j­jªjˆj…jïjìjMjJjÉjÆj:j7jEjBjjj„j�j¹j¶uŒ nametypes”}”(jˆjÁ‰jƉj,‰jljjø‰j@ ‰jTˆjS‰j ‰j ‰j‡ ˆj² ‰jõ ‰jR ‰j  ‰j ‰j8 ‰jk ‰j. ‰jc ‰j÷‰jç ˆjæ ‰j‰j­‰jˆ‰jï‰jM‰jɉj:‰jE‰j‰j„‰j¹‰uh}”(hÕhØj¾hØjÃhëj)jÉjÄj/jõjÊj= jûjjjPjj j[j j j j j„ j j¯ jŽ jò jµ jO jø j� jU j j£ j5 j jh jC j+ j¸ j` j1 jôjn j¥ j¦ jã j¦ j jì jªjj…j°jìj‹jJjújÆj j7jÌjBj=jjPj�j j¶j‡uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j÷Ks…”R”Œparse_messages”]”hŒsystem_message”“”)�”}”(hhh]”j)�”}”(hŒ4Duplicate implicit target name: "changes requested".”h]”hŒ8Duplicate implicit target name: “changes requestedâ€�.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjQubah}”(h]”h ]”h"]”h$]”h&]”j„ aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kìuh1jOhj h²hh³hÇh´KìubaŒtransform_messages”]”(jP)�”}”(hhh]”j)�”}”(hhh]”hŒ0Hyperlink target "netdev-faq" is not referenced.”…”�”}”hjrsbah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jjŒsource”hÇŒline”Kuh1jOubjP)�”}”(hhh]”j)�”}”(hhh]”hŒ2Hyperlink target "patch-status" is not referenced.”…”�”}”hjŒsbah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jjŒsource”hÇŒline”Kouh1jOubjP)�”}”(hhh]”j)�”}”(hhh]”hŒ7Hyperlink target "changes-requested" is not referenced.”…”�”}”hj¦sbah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jjŒsource”hÇŒline”Kéuh1jOubjP)�”}”(hhh]”j)�”}”(hhh]”hŒ)Hyperlink target "rcs" is not referenced.”…”�”}”hjÀsbah}”(h]”h ]”h"]”h$]”h&]”uh1j hj½ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jjŒsource”hÇŒline”MŽuh1jOubeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.