<!DOCTYPE html>
<html lang='en'>
<head>
<title>openwrt/upstream - upstream openwrt</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit.css'/>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='http://git.panaceas.org/cgit.cgi/openwrt/upstream/atom/?h=openwrt-19.07' type='application/atom+xml'/>
<link rel='vcs-git' href='git://git.panaceas.org/openwrt/upstream' title='openwrt/upstream Git repository'/>
<link rel='vcs-git' href='ssh://git@git.panaceas.org/git/openwrt/upstream' title='openwrt/upstream Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/cgit.cgi/'><img src='/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/cgit.cgi/'>index</a> : <a title='openwrt/upstream' href='/cgit.cgi/openwrt/upstream/'>openwrt/upstream</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='c7976ae5f8f7dac392d01550ef8c357a0d2133c7'/><select name='h' onchange='this.form.submit();'>
<option value='attitude_adjustment'>attitude_adjustment</option>
<option value='barrier_breaker'>barrier_breaker</option>
<option value='chaos_calmer'>chaos_calmer</option>
<option value='lede-17.01'>lede-17.01</option>
<option value='less-old-master'>less-old-master</option>
<option value='master'>master</option>
<option value='old-master'>old-master</option>
<option value='openwrt-18.06'>openwrt-18.06</option>
<option value='openwrt-19.07' selected='selected'>openwrt-19.07</option>
<option value='upstream'>upstream</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>upstream openwrt</td><td class='sub right'>James</td></tr></table>
<table class='tabs'><tr><td>
<a href='/cgit.cgi/openwrt/upstream/about/?h=openwrt-19.07'>about</a><a href='/cgit.cgi/openwrt/upstream/?h=openwrt-19.07'>summary</a><a href='/cgit.cgi/openwrt/upstream/refs/?h=openwrt-19.07&amp;id=c7976ae5f8f7dac392d01550ef8c357a0d2133c7'>refs</a><a href='/cgit.cgi/openwrt/upstream/log/?h=openwrt-19.07'>log</a><a href='/cgit.cgi/openwrt/upstream/tree/?h=openwrt-19.07&amp;id=c7976ae5f8f7dac392d01550ef8c357a0d2133c7'>tree</a><a class='active' href='/cgit.cgi/openwrt/upstream/commit/?h=openwrt-19.07&amp;id=c7976ae5f8f7dac392d01550ef8c357a0d2133c7'>commit</a><a href='/cgit.cgi/openwrt/upstream/diff/?h=openwrt-19.07&amp;id=c7976ae5f8f7dac392d01550ef8c357a0d2133c7'>diff</a><a href='/cgit.cgi/openwrt/upstream/stats/?h=openwrt-19.07'>stats</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/openwrt/upstream/log/'>
<input type='hidden' name='h' value='openwrt-19.07'/><input type='hidden' name='id' value='c7976ae5f8f7dac392d01550ef8c357a0d2133c7'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='h' value='openwrt-19.07'/><input type='hidden' name='id' value='c7976ae5f8f7dac392d01550ef8c357a0d2133c7'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><table summary='commit info' class='commit-info'>
<tr><th>author</th><td>Jonas Gorski &lt;jogo@openwrt.org&gt;</td><td class='right'>2013-08-04 15:32:36 +0000</td></tr>
<tr><th>committer</th><td>Jonas Gorski &lt;jogo@openwrt.org&gt;</td><td class='right'>2013-08-04 15:32:36 +0000</td></tr>
<tr><th>commit</th><td colspan='2' class='sha1'><a href='/cgit.cgi/openwrt/upstream/commit/?h=openwrt-19.07&amp;id=c7976ae5f8f7dac392d01550ef8c357a0d2133c7'>c7976ae5f8f7dac392d01550ef8c357a0d2133c7</a> (<a href='/cgit.cgi/openwrt/upstream/patch/?id=c7976ae5f8f7dac392d01550ef8c357a0d2133c7'>patch</a>)</td></tr>
<tr><th>tree</th><td colspan='2' class='sha1'><a href='/cgit.cgi/openwrt/upstream/tree/?h=openwrt-19.07&amp;id=c7976ae5f8f7dac392d01550ef8c357a0d2133c7'>5f472f4546d7932ad44b79d709567c33fae38343</a></td></tr>
<tr><th>parent</th><td colspan='2' class='sha1'><a href='/cgit.cgi/openwrt/upstream/commit/?h=openwrt-19.07&amp;id=f5b9555cdc26534b6a107ef6c27440b21e1f1e0e'>f5b9555cdc26534b6a107ef6c27440b21e1f1e0e</a> (<a href='/cgit.cgi/openwrt/ups<style>pre { line-height: 125%; margin: 0; }
td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span>Because OpenWrt uses its own init script system, all init scripts must be installed
as <span class="k">\texttt</span><span class="nb">{</span>/etc/init.d/<span class="k">\textit</span><span class="nb">{</span>name<span class="nb">}}</span> use <span class="k">\texttt</span><span class="nb">{</span>/etc/rc.common<span class="nb">}</span> as a wrapper.

Example: <span class="k">\texttt</span><span class="nb">{</span>/etc/init.d/httpd<span class="nb">}</span>

<span class="k">\begin</span><span class="nb">{</span>Verbatim<span class="nb">}</span>
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org

START=50
start() <span class="nb">{</span>
    [ -d /www ] <span class="nb">&amp;&amp;</span> httpd -p 80 -h /www -r OpenWrt
<span class="nb">}</span>

stop() <span class="nb">{</span>
    killall httpd
<span class="nb">}</span>
<span class="k">\end</span><span class="nb">{</span>Verbatim<span class="nb">}</span>

as you can see, the script does not actually parse the command line arguments itself.
This is done by the wrapper script <span class="k">\texttt</span><span class="nb">{</span>/etc/rc.common<span class="nb">}</span>.

<span class="k">\texttt</span><span class="nb">{</span>start()<span class="nb">}</span> and <span class="k">\texttt</span><span class="nb">{</span>stop()<span class="nb">}</span> are the basic functions, which almost any init
script should provide. <span class="k">\texttt</span><span class="nb">{</span>start()<span class="nb">}</span> is called when the user runs <span class="k">\texttt</span><span class="nb">{</span>/etc/init.d/httpd start<span class="nb">}</span>
or (if the script is enabled and does not override this behavior) at system boot time.

Enabling and disabling init scripts is done by running <span class="k">\texttt</span><span class="nb">{</span>/etc/init.d/<span class="k">\textit</span><span class="nb">{</span>name<span class="nb">}</span> enable<span class="nb">}</span>
or <span class="k">\texttt</span><span class="nb">{</span>/etc/init.d/<span class="k">\textit</span><span class="nb">{</span>name<span class="nb">}</span> disable<span class="nb">}</span>. This creates or removes symbolic links to the
init script in <span class="k">\texttt</span><span class="nb">{</span>/etc/rc.d<span class="nb">}</span>, which is processed by <span class="k">\texttt</span><span class="nb">{</span>/etc/init.d/rcS<span class="nb">}</span> at boot time.

The order in which these scripts are run is defined in the variable <span class="k">\texttt</span><span class="nb">{</span>START<span class="nb">}</span> in the init
script. Changing it requires running <span class="k">\texttt</span><span class="nb">{</span>/etc/init.d/<span class="k">\textit</span><span class="nb">{</span>name<span class="nb">}</span> enable<span class="nb">}</span> again.

You can also override these standard init script functions:
<span class="k">\begin</span><span class="nb">{</span>itemize<span class="nb">}</span>
    <span class="k">\item</span> <span class="k">\texttt</span><span class="nb">{</span>boot()<span class="nb">}</span> <span class="k">\\</span>
        Commands to be run at boot time. Defaults to <span class="k">\texttt</span><span class="nb">{</span>start()<span class="nb">}</span>

    <span class="k">\item</span> <span class="k">\texttt</span><span class="nb">{</span>restart()<span class="nb">}</span> <span class="k">\\</span>
        Restart your service. Defaults to <span class="k">\texttt</span><span class="nb">{</span>stop(); start()<span class="nb">}</span>

    <span class="k">\item</span> <span class="k">\texttt</span><span class="nb">{</span>reload()<span class="nb">}</span> <span class="k">\\</span>
        Reload the configuration files for your service. Defaults to <span class="k">\texttt</span><span class="nb">{</span>restart()<span class="nb">}</span>

<span class="k">\end</span><span class="nb">{</span>itemize<span class="nb">}</span>

You can also add custom commands by creating the appropriate functions and referencing them
in the <span class="k">\texttt</span><span class="nb">{</span>EXTRA<span class="k">\_</span>COMMANDS<span class="nb">}</span> variable. Helptext is added in <span class="k">\texttt</span><span class="nb">{</span>EXTRA<span class="k">\_</span>HELP<span class="nb">}</span>.

Example:

<span class="k">\begin</span><span class="nb">{</span>Verbatim<span class="nb">}</span>
status() <span class="nb">{</span>
    # print the status info
<span class="nb">}</span>

EXTRA<span class="nb">_</span>COMMANDS=&quot;status&quot;
EXTRA<span class="nb">_</span>HELP=&quot;        status  Print the status of the service&quot;
<span class="k">\end</span><span class="nb">{</span>Verbatim<span class="nb">}</span>
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.25.1</a>) at 2026-02-16 12:39:02 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
ge,wl12xx) += WL_TI WLCORE WLCORE_SDIO WL12XX</div><div class='ctx'> config-$(call config_package,zd1211rw) += ZD1211RW</div><div class='ctx'> </div><div class='add'>+config-$(call config_package,rtlwifi) += RTL_CARDS RTLWIFI</div><div class='add'>+config-$(call config_package,rtlwifi-pci) += RTLWIFI_PCI</div><div class='add'>+config-$(call config_package,rtlwifi-usb) += RTLWIFI_USB</div><div class='add'>+config-$(call config_package,rtl8192c-common) += RTL8192C_COMMON</div><div class='add'>+config-$(call config_package,rtl8192ce) += RTL8192CE</div><div class='add'>+config-$(call config_package,rtl8192se) += RTL8192SE</div><div class='add'>+config-$(call config_package,rtl8192de) += RTL8192DE</div><div class='add'>+config-$(call config_package,rtl8192cu) += RTL8192CU</div><div class='add'>+config-$(CONFIG_PACKAGE_RTLWIFI_DEBUG) += RTLWIFI_DEBUG</div><div class='add'>+</div><div class='ctx'> config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS B43_LEDS B43LEGACY_LEDS</div><div class='ctx'> </div><div class='ctx'> MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \</div><div class='hunk'>@@ -1608,6 +1721,14 @@ $(eval $(call KernelPackage,rt2800-pci))</div><div class='ctx'> $(eval $(call KernelPackage,rt2800-usb))</div><div class='ctx'> $(eval $(call KernelPackage,rtl8180))</div><div class='ctx'> $(eval $(call KernelPackage,rtl8187))</div><div class='add'>+$(eval $(call KernelPackage,rtlwifi))</div><div class='add'>+$(eval $(call KernelPackage,rtlwifi-pci))</div><div class='add'>+$(eval $(call KernelPackage,rtlwifi-usb))</div><div class='add'>+$(eval $(call KernelPackage,rtl8192c-common))</div><div class='add'>+$(eval $(call KernelPackage,rtl8192ce))</div><div class='add'>+$(eval $(call KernelPackage,rtl8192se))</div><div class='add'>+$(eval $(call KernelPackage,rtl8192de))</div><div class='add'>+$(eval $(call KernelPackage,rtl8192cu))</div><div class='ctx'> $(eval $(call KernelPackage,zd1211rw))</div><div class='ctx'> $(eval $(call KernelPackage,mac80211-hwsim))</div><div class='ctx'> $(eval $(call KernelPackage,ath9k-common))</div><div class='head'>diff --git a/package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch b/package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch<br/>new file mode 100644<br/>index 00000000000..b1e943e15e9<br/>--- /dev/null<br/>+++ b/<a href='/cgit.cgi/openwrt/upstream/tree/package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch?h=openwrt-19.07&amp;id=c7976ae5f8f7dac392d01550ef8c357a0d2133c7'>package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch</a></div><div class='hunk'>@@ -0,0 +1,408 @@</div><div class='add'>+From 6f334c2b3966f10cbd089bb124ec0e114d8d8c77 Mon Sep 17 00:00:00 2001</div><div class='add'>+From: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;</div><div class='add'>+Date: Fri, 12 Jul 2013 15:32:15 -0500</div><div class='add'>+Subject: [PATCH] rtlwifi: Fix build errors for unusual cases</div><div class='add'>+</div><div class='add'>+The present build configuration for the rtlwifi family of drivers will</div><div class='add'>+fail under two known conditions:</div><div class='add'>+</div><div class='add'>+(1) If rtlwifi is selected without selecting any of the dependent drivers,</div><div class='add'>+    there are errors in the build.</div><div class='add'>+(2) If the PCI drivers are built into the kernel and the USB drivers are modules,</div><div class='add'>+    or vice versa, there are missing globals.</div><div class='add'>+</div><div class='add'>+The first condition is fixed by never building rtlwifi unless at least one</div><div class='add'>+of the device drivers is selected. The second failure is fixed by splitting</div><div class='add'>+the PCI and USB codes out of rtlwifi, and creating their own mini drivers.</div><div class='add'>+If the drivers that use them are modules, they will also be modules.</div><div class='add'>+</div><div class='add'>+Although a number of files are touched by this patch, only Makefile and Kconfig</div><div class='add'>+have undergone significant changes. The only modifications to the other files</div><div class='add'>+were to export entry points needed by the new rtl_pci and rtl_usb units, or to</div><div class='add'>+rename two variables that had names that were likely to cause namespace collisions.</div><div class='add'>+</div><div class='add'>+Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;  [Condition 1]</div><div class='add'>+Reported-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt; [Condition 2]</div><div class='add'>+Signed-off-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;</div><div class='add'>+Cc: Ben Hutchings &lt;bhutchings@solarflare.com&gt;</div><div class='add'>+Cc: Fengguang Wu &lt;fengguang.wu@intel.com&gt;</div><div class='add'>+Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;</div><div class='add'>+---</div><div class='add'>+ drivers/net/wireless/rtlwifi/Kconfig  | 72 +++++++++++++++++++++++------------</div><div class='add'>+ drivers/net/wireless/rtlwifi/Makefile | 10 ++---</div><div class='add'>+ drivers/net/wireless/rtlwifi/base.c   | 19 +++++++--</div><div class='add'>+ drivers/net/wireless/rtlwifi/base.h   |  2 +-</div><div class='add'>+ drivers/net/wireless/rtlwifi/core.c   |  1 +</div><div class='add'>+ drivers/net/wireless/rtlwifi/debug.c  |  1 +</div><div class='add'>+ drivers/net/wireless/rtlwifi/efuse.c  |  1 +</div><div class='add'>+ drivers/net/wireless/rtlwifi/pci.c    |  9 ++++-</div><div class='add'>+ drivers/net/wireless/rtlwifi/ps.c     |  4 ++</div><div class='add'>+ drivers/net/wireless/rtlwifi/usb.c    |  7 ++++</div><div class='add'>+ 10 files changed, 91 insertions(+), 35 deletions(-)</div><div class='add'>+</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/Kconfig</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/Kconfig</div><div class='add'>+@@ -1,29 +1,22 @@</div><div class='add'>+-config RTLWIFI</div><div class='add'>+-	tristate "Realtek wireless card support"</div><div class='add'>++menuconfig RTL_CARDS</div><div class='add'>++	tristate "Realtek rtlwifi family of devices"</div><div class='add'>+ 	depends on m</div><div class='add'>+-	depends on MAC80211</div><div class='add'>+-	select BACKPORT_FW_LOADER</div><div class='add'>+-	---help---</div><div class='add'>+-	  This is common code for RTL8192CE/RTL8192CU/RTL8192SE/RTL8723AE</div><div class='add'>+-	  drivers.  This module does nothing by itself - the various front-end</div><div class='add'>+-	  drivers need to be enabled to support any desired devices.</div><div class='add'>+-</div><div class='add'>+-	  If you choose to build as a module, it'll be called rtlwifi.</div><div class='add'>+-</div><div class='add'>+-config RTLWIFI_DEBUG</div><div class='add'>+-	bool "Debugging output for rtlwifi driver family"</div><div class='add'>+-	depends on RTLWIFI</div><div class='add'>++	depends on MAC80211 &amp;&amp; (PCI || USB)</div><div class='add'>+ 	default y</div><div class='add'>+ 	---help---</div><div class='add'>+-	To use the module option that sets the dynamic-debugging level for,</div><div class='add'>+-	the front-end driver, this parameter must be "Y". For memory-limited</div><div class='add'>+-	systems, choose "N". If in doubt, choose "Y".</div><div class='add'>++	  This option will enable support for the Realtek mac80211-based</div><div class='add'>++	  wireless drivers. Drivers rtl8192ce, rtl8192cu, rtl8192se, rtl8192de,</div><div class='add'>++	  rtl8723eu, and rtl8188eu share some common code.</div><div class='add'>++</div><div class='add'>++if RTL_CARDS</div><div class='add'>+ </div><div class='add'>+ config RTL8192CE</div><div class='add'>+ 	tristate "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"</div><div class='add'>+ 	depends on m</div><div class='add'>+-	depends on RTLWIFI &amp;&amp; PCI</div><div class='add'>++	depends on PCI</div><div class='add'>+ 	select RTL8192C_COMMON</div><div class='add'>++	select RTLWIFI</div><div class='add'>++	select RTLWIFI_PCI</div><div class='add'>+ 	---help---</div><div class='add'>+ 	This is the driver for Realtek RTL8192CE/RTL8188CE 802.11n PCIe</div><div class='add'>+ 	wireless network adapters.</div><div class='add'>+@@ -33,7 +26,9 @@ config RTL8192CE</div><div class='add'>+ config RTL8192SE</div><div class='add'>+ 	tristate "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"</div><div class='add'>+ 	depends on m</div><div class='add'>+-	depends on RTLWIFI &amp;&amp; PCI</div><div class='add'>++	depends on PCI</div><div class='add'>++	select RTLWIFI</div><div class='add'>++	select RTLWIFI_PCI</div><div class='add'>+ 	---help---</div><div class='add'>+ 	This is the driver for Realtek RTL8192SE/RTL8191SE 802.11n PCIe</div><div class='add'>+ 	wireless network adapters.</div><div class='add'>+@@ -43,7 +38,9 @@ config RTL8192SE</div><div class='add'>+ config RTL8192DE</div><div class='add'>+ 	tristate "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"</div><div class='add'>+ 	depends on m</div><div class='add'>+-	depends on RTLWIFI &amp;&amp; PCI</div><div class='add'>++	depends on PCI</div><div class='add'>++	select RTLWIFI</div><div class='add'>++	select RTLWIFI_PCI</div><div class='add'>+ 	---help---</div><div class='add'>+ 	This is the driver for Realtek RTL8192DE/RTL8188DE 802.11n PCIe</div><div class='add'>+ 	wireless network adapters.</div><div class='add'>+@@ -53,7 +50,9 @@ config RTL8192DE</div><div class='add'>+ config RTL8723AE</div><div class='add'>+ 	tristate "Realtek RTL8723AE PCIe Wireless Network Adapter"</div><div class='add'>+ 	depends on m</div><div class='add'>+-	depends on RTLWIFI &amp;&amp; PCI</div><div class='add'>++	depends on PCI</div><div class='add'>++	select RTLWIFI</div><div class='add'>++	select RTLWIFI_PCI</div><div class='add'>+ 	---help---</div><div class='add'>+ 	This is the driver for Realtek RTL8723AE 802.11n PCIe</div><div class='add'>+ 	wireless network adapters.</div><div class='add'>+@@ -63,7 +62,9 @@ config RTL8723AE</div><div class='add'>+ config RTL8188EE</div><div class='add'>+ 	tristate "Realtek RTL8188EE Wireless Network Adapter"</div><div class='add'>+ 	depends on m</div><div class='add'>+-	depends on RTLWIFI &amp;&amp; PCI</div><div class='add'>++	depends on PCI</div><div class='add'>++	select RTLWIFI</div><div class='add'>++	select RTLWIFI_PCI</div><div class='add'>+ 	---help---</div><div class='add'>+ 	This is the driver for Realtek RTL8188EE 802.11n PCIe</div><div class='add'>+ 	wireless network adapters.</div><div class='add'>+@@ -73,7 +74,9 @@ config RTL8188EE</div><div class='add'>+ config RTL8192CU</div><div class='add'>+ 	tristate "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"</div><div class='add'>+ 	depends on m</div><div class='add'>+-	depends on RTLWIFI &amp;&amp; USB</div><div class='add'>++	depends on USB</div><div class='add'>++	select RTLWIFI</div><div class='add'>++	select RTLWIFI_USB</div><div class='add'>+ 	select RTL8192C_COMMON</div><div class='add'>+ 	---help---</div><div class='add'>+ 	This is the driver for Realtek RTL8192CU/RTL8188CU 802.11n USB</div><div class='add'>+@@ -81,8 +84,32 @@ config RTL8192CU</div><div class='add'>+ </div><div class='add'>+ 	If you choose to build it as a module, it will be called rtl8192cu</div><div class='add'>+ </div><div class='add'>++config RTLWIFI</div><div class='add'>++	tristate "Realtek common driver part"</div><div class='add'>++	depends on m</div><div class='add'>++	select BACKPORT_FW_LOADER</div><div class='add'>++</div><div class='add'>++config RTLWIFI_PCI</div><div class='add'>++	depends on m</div><div class='add'>++	tristate</div><div class='add'>++</div><div class='add'>++config RTLWIFI_USB</div><div class='add'>++	depends on m</div><div class='add'>++	tristate</div><div class='add'>++</div><div class='add'>++config RTLWIFI_DEBUG</div><div class='add'>++	bool "Debugging output for rtlwifi driver family"</div><div class='add'>++	depends on RTLWIFI</div><div class='add'>++	default y</div><div class='add'>++	---help---</div><div class='add'>++	To use the module option that sets the dynamic-debugging level for,</div><div class='add'>++	the front-end driver, this parameter must be "Y". For memory-limited</div><div class='add'>++	systems, choose "N". If in doubt, choose "Y".</div><div class='add'>++</div><div class='add'>+ config RTL8192C_COMMON</div><div class='add'>+ 	tristate</div><div class='add'>+ 	depends on m</div><div class='add'>+ 	depends on RTL8192CE || RTL8192CU</div><div class='add'>+ 	default m</div><div class='add'>++</div><div class='add'>++endif</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/Makefile</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/Makefile</div><div class='add'>+@@ -12,13 +12,11 @@ rtlwifi-objs	:=		\</div><div class='add'>+ </div><div class='add'>+ rtl8192c_common-objs +=		\</div><div class='add'>+ </div><div class='add'>+-ifneq ($(CONFIG_PCI),)</div><div class='add'>+-rtlwifi-objs	+= pci.o</div><div class='add'>+-endif</div><div class='add'>++obj-$(CPTCFG_RTLWIFI_PCI)	+= rtl_pci.o</div><div class='add'>++rtl_pci-objs	:=		pci.o</div><div class='add'>+ </div><div class='add'>+-ifneq ($(CONFIG_USB),)</div><div class='add'>+-rtlwifi-objs	+= usb.o</div><div class='add'>+-endif</div><div class='add'>++obj-$(CPTCFG_RTLWIFI_USB)	+= rtl_usb.o</div><div class='add'>++rtl_usb-objs	:=		usb.o</div><div class='add'>+ </div><div class='add'>+ obj-$(CPTCFG_RTL8192C_COMMON)	+= rtl8192c/</div><div class='add'>+ obj-$(CPTCFG_RTL8192CE)		+= rtl8192ce/</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/base.c</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/base.c</div><div class='add'>+@@ -173,6 +173,7 @@ u8 rtl_tid_to_ac(u8 tid)</div><div class='add'>+ {</div><div class='add'>+ 	return tid_to_ac[tid];</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_tid_to_ac);</div><div class='add'>+ </div><div class='add'>+ static void _rtl_init_hw_ht_capab(struct ieee80211_hw *hw,</div><div class='add'>+ 				  struct ieee80211_sta_ht_cap *ht_cap)</div><div class='add'>+@@ -407,6 +408,7 @@ void rtl_deinit_deferred_work(struct iee</div><div class='add'>+ 	cancel_delayed_work(&amp;rtlpriv-&gt;works.ps_rfon_wq);</div><div class='add'>+ 	cancel_delayed_work(&amp;rtlpriv-&gt;works.fwevt_wq);</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_deinit_deferred_work);</div><div class='add'>+ </div><div class='add'>+ void rtl_init_rfkill(struct ieee80211_hw *hw)</div><div class='add'>+ {</div><div class='add'>+@@ -440,6 +442,7 @@ void rtl_deinit_rfkill(struct ieee80211_</div><div class='add'>+ {</div><div class='add'>+ 	wiphy_rfkill_stop_polling(hw-&gt;wiphy);</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_deinit_rfkill);</div><div class='add'>+ </div><div class='add'>+ int rtl_init_core(struct ieee80211_hw *hw)</div><div class='add'>+ {</div><div class='add'>+@@ -490,10 +493,12 @@ int rtl_init_core(struct ieee80211_hw *h</div><div class='add'>+ </div><div class='add'>+ 	return 0;</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_init_core);</div><div class='add'>+ </div><div class='add'>+ void rtl_deinit_core(struct ieee80211_hw *hw)</div><div class='add'>+ {</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_deinit_core);</div><div class='add'>+ </div><div class='add'>+ void rtl_init_rx_config(struct ieee80211_hw *hw)</div><div class='add'>+ {</div><div class='add'>+@@ -502,6 +507,7 @@ void rtl_init_rx_config(struct ieee80211</div><div class='add'>+ </div><div class='add'>+ 	rtlpriv-&gt;cfg-&gt;ops-&gt;get_hw_reg(hw, HW_VAR_RCR, (u8 *) (&amp;mac-&gt;rx_conf));</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_init_rx_config);</div><div class='add'>+ </div><div class='add'>+ /*********************************************************</div><div class='add'>+  *</div><div class='add'>+@@ -880,6 +886,7 @@ bool rtl_tx_mgmt_proc(struct ieee80211_h</div><div class='add'>+ </div><div class='add'>+ 	return true;</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_tx_mgmt_proc);</div><div class='add'>+ </div><div class='add'>+ void rtl_get_tcb_desc(struct ieee80211_hw *hw,</div><div class='add'>+ 		      struct ieee80211_tx_info *info,</div><div class='add'>+@@ -1053,6 +1060,7 @@ bool rtl_action_proc(struct ieee80211_hw</div><div class='add'>+ </div><div class='add'>+ 	return true;</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_action_proc);</div><div class='add'>+ </div><div class='add'>+ /*should call before software enc*/</div><div class='add'>+ u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx)</div><div class='add'>+@@ -1126,6 +1134,7 @@ u8 rtl_is_special_data(struct ieee80211_</div><div class='add'>+ </div><div class='add'>+ 	return false;</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_is_special_data);</div><div class='add'>+ </div><div class='add'>+ /*********************************************************</div><div class='add'>+  *</div><div class='add'>+@@ -1301,6 +1310,7 @@ void rtl_beacon_statistic(struct ieee802</div><div class='add'>+ </div><div class='add'>+ 	rtlpriv-&gt;link_info.bcn_rx_inperiod++;</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_beacon_statistic);</div><div class='add'>+ </div><div class='add'>+ void rtl_watchdog_wq_callback(void *data)</div><div class='add'>+ {</div><div class='add'>+@@ -1794,6 +1804,7 @@ void rtl_recognize_peer(struct ieee80211</div><div class='add'>+ </div><div class='add'>+ 	mac-&gt;vendor = vendor;</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_recognize_peer);</div><div class='add'>+ </div><div class='add'>+ /*********************************************************</div><div class='add'>+  *</div><div class='add'>+@@ -1850,6 +1861,7 @@ struct attribute_group rtl_attribute_gro</div><div class='add'>+ 	.name = "rtlsysfs",</div><div class='add'>+ 	.attrs = rtl_sysfs_entries,</div><div class='add'>+ };</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_attribute_group);</div><div class='add'>+ </div><div class='add'>+ MODULE_AUTHOR("lizhaoming	&lt;chaoming_li@realsil.com.cn&gt;");</div><div class='add'>+ MODULE_AUTHOR("Realtek WlanFAE	&lt;wlanfae@realtek.com&gt;");</div><div class='add'>+@@ -1857,7 +1869,8 @@ MODULE_AUTHOR("Larry Finger	&lt;Larry.FInge</div><div class='add'>+ MODULE_LICENSE("GPL");</div><div class='add'>+ MODULE_DESCRIPTION("Realtek 802.11n PCI wireless core");</div><div class='add'>+ </div><div class='add'>+-struct rtl_global_var global_var = {};</div><div class='add'>++struct rtl_global_var rtl_global_var = {};</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_global_var);</div><div class='add'>+ </div><div class='add'>+ static int __init rtl_core_module_init(void)</div><div class='add'>+ {</div><div class='add'>+@@ -1865,8 +1878,8 @@ static int __init rtl_core_module_init(v</div><div class='add'>+ 		pr_err("Unable to register rtl_rc, use default RC !!\n");</div><div class='add'>+ </div><div class='add'>+ 	/* init some global vars */</div><div class='add'>+-	INIT_LIST_HEAD(&amp;global_var.glb_priv_list);</div><div class='add'>+-	spin_lock_init(&amp;global_var.glb_list_lock);</div><div class='add'>++	INIT_LIST_HEAD(&amp;rtl_global_var.glb_priv_list);</div><div class='add'>++	spin_lock_init(&amp;rtl_global_var.glb_list_lock);</div><div class='add'>+ </div><div class='add'>+ 	return 0;</div><div class='add'>+ }</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/base.h</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/base.h</div><div class='add'>+@@ -147,7 +147,7 @@ void rtl_recognize_peer(struct ieee80211</div><div class='add'>+ u8 rtl_tid_to_ac(u8 tid);</div><div class='add'>+ extern struct attribute_group rtl_attribute_group;</div><div class='add'>+ void rtl_easy_concurrent_retrytimer_callback(unsigned long data);</div><div class='add'>+-extern struct rtl_global_var global_var;</div><div class='add'>++extern struct rtl_global_var rtl_global_var;</div><div class='add'>+ int rtlwifi_rate_mapping(struct ieee80211_hw *hw,</div><div class='add'>+ 			 bool isht, u8 desc_rate, bool first_ampdu);</div><div class='add'>+ bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb);</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/core.c</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/core.c</div><div class='add'>+@@ -1330,3 +1330,4 @@ const struct ieee80211_ops rtl_ops = {</div><div class='add'>+ 	.rfkill_poll = rtl_op_rfkill_poll,</div><div class='add'>+ 	.flush = rtl_op_flush,</div><div class='add'>+ };</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_ops);</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/debug.c</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/debug.c</div><div class='add'>+@@ -51,3 +51,4 @@ void rtl_dbgp_flag_init(struct ieee80211</div><div class='add'>+ </div><div class='add'>+ 	/*Init Debug flag enable condition */</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_dbgp_flag_init);</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/efuse.c</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/efuse.c</div><div class='add'>+@@ -229,6 +229,7 @@ void read_efuse_byte(struct ieee80211_hw</div><div class='add'>+ </div><div class='add'>+ 	*pbuf = (u8) (value32 &amp; 0xff);</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(read_efuse_byte);</div><div class='add'>+ </div><div class='add'>+ void read_efuse(struct ieee80211_hw *hw, u16 _offset, u16 _size_byte, u8 *pbuf)</div><div class='add'>+ {</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/pci.c</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/pci.c</div><div class='add'>+@@ -35,6 +35,13 @@</div><div class='add'>+ #include "efuse.h"</div><div class='add'>+ #include &lt;linux/export.h&gt;</div><div class='add'>+ #include &lt;linux/kmemleak.h&gt;</div><div class='add'>++#include &lt;linux/module.h&gt;</div><div class='add'>++</div><div class='add'>++MODULE_AUTHOR("lizhaoming	&lt;chaoming_li@realsil.com.cn&gt;");</div><div class='add'>++MODULE_AUTHOR("Realtek WlanFAE	&lt;wlanfae@realtek.com&gt;");</div><div class='add'>++MODULE_AUTHOR("Larry Finger	&lt;Larry.FInger@lwfinger.net&gt;");</div><div class='add'>++MODULE_LICENSE("GPL");</div><div class='add'>++MODULE_DESCRIPTION("PCI basic driver for rtlwifi");</div><div class='add'>+ </div><div class='add'>+ static const u16 pcibridge_vendors[PCI_BRIDGE_VENDOR_MAX] = {</div><div class='add'>+ 	PCI_VENDOR_ID_INTEL,</div><div class='add'>+@@ -1899,7 +1906,7 @@ int rtl_pci_probe(struct pci_dev *pdev,</div><div class='add'>+ 	rtlpriv-&gt;rtlhal.interface = INTF_PCI;</div><div class='add'>+ 	rtlpriv-&gt;cfg = (struct rtl_hal_cfg *)(id-&gt;driver_data);</div><div class='add'>+ 	rtlpriv-&gt;intf_ops = &amp;rtl_pci_ops;</div><div class='add'>+-	rtlpriv-&gt;glb_var = &amp;global_var;</div><div class='add'>++	rtlpriv-&gt;glb_var = &amp;rtl_global_var;</div><div class='add'>+ </div><div class='add'>+ 	/*</div><div class='add'>+ 	 *init dbgp flags before all</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/ps.c</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/ps.c</div><div class='add'>+@@ -269,6 +269,7 @@ void rtl_ips_nic_on(struct ieee80211_hw</div><div class='add'>+ </div><div class='add'>+ 	spin_unlock_irqrestore(&amp;rtlpriv-&gt;locks.ips_lock, flags);</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_ips_nic_on);</div><div class='add'>+ </div><div class='add'>+ /*for FW LPS*/</div><div class='add'>+ </div><div class='add'>+@@ -518,6 +519,7 @@ void rtl_swlps_beacon(struct ieee80211_h</div><div class='add'>+ 			 "u_bufferd: %x, m_buffered: %x\n", u_buffed, m_buffed);</div><div class='add'>+ 	}</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_swlps_beacon);</div><div class='add'>+ </div><div class='add'>+ void rtl_swlps_rf_awake(struct ieee80211_hw *hw)</div><div class='add'>+ {</div><div class='add'>+@@ -922,3 +925,4 @@ void rtl_p2p_info(struct ieee80211_hw *h</div><div class='add'>+ 	else</div><div class='add'>+ 		rtl_p2p_noa_ie(hw, data, len - FCS_LEN);</div><div class='add'>+ }</div><div class='add'>++EXPORT_SYMBOL_GPL(rtl_p2p_info);</div><div class='add'>+--- a/drivers/net/wireless/rtlwifi/usb.c</div><div class='add'>++++ b/drivers/net/wireless/rtlwifi/usb.c</div><div class='add'>+@@ -32,6 +32,13 @@</div><div class='add'>+ #include "ps.h"</div><div class='add'>+ #include "rtl8192c/fw_common.h"</div><div class='add'>+ #include &lt;linux/export.h&gt;</div><div class='add'>++#include &lt;linux/module.h&gt;</div><div class='add'>++</div><div class='add'>++MODULE_AUTHOR("lizhaoming	&lt;chaoming_li@realsil.com.cn&gt;");</div><div class='add'>++MODULE_AUTHOR("Realtek WlanFAE	&lt;wlanfae@realtek.com&gt;");</div><div class='add'>++MODULE_AUTHOR("Larry Finger	&lt;Larry.FInger@lwfinger.net&gt;");</div><div class='add'>++MODULE_LICENSE("GPL");</div><div class='add'>++MODULE_DESCRIPTION("USB basic driver for rtlwifi");</div><div class='add'>+ </div><div class='add'>+ #define	REALTEK_USB_VENQT_READ			0xC0</div><div class='add'>+ #define	REALTEK_USB_VENQT_WRITE			0x40</div></td></tr></table></div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.25.1</a>) at 2026-02-16 12:39:02 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
