<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lwn.git/drivers/net/wireless/realtek/rtw88/tx.h, branch v6.1-rc1</title>
<subtitle>Linux kernel documentation tree maintained by Jonathan Corbet</subtitle>
<id>http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v6.1-rc1</id>
<link rel='self' href='http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v6.1-rc1'/>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/'/>
<updated>2022-04-12T13:52:05+00:00</updated>
<entry>
<title>rtw88: Add update beacon flow for AP mode</title>
<updated>2022-04-12T13:52:05+00:00</updated>
<author>
<name>Po-Hao Huang</name>
<email>phhuang@realtek.com</email>
</author>
<published>2022-04-07T09:58:55+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=f2217968ffdae702c21cc00fa804fbbd9ee6bb4b'/>
<id>urn:sha1:f2217968ffdae702c21cc00fa804fbbd9ee6bb4b</id>
<content type='text'>
To support stations in power saving mode, AP should notify stations
that there are frames buffered at the AP via TIM during beacons.
Driver used to transmit identical beacons that were downloaded to
hardware during the initiation phase. This beacon will become
obsolete over time.

If the beacon does not contain sufficient information, station would
not be able to percept that there is data to receive. Hence it won't
wake up and start the PS-poll procedure, this could lead to timeout
and/or lost data segments. In order to resolve this issue, driver will
now download beacon to hardware whenever the content is updated.

Enable hardware to update dtim_count for more efficiency, this reduces
the overhead of downloading beacon at every beacon interval since most
of the time only the dtim_count needs to be updated.

Change queue mapping for broadcast/multicast frames to high queue, so
these frames can be prioritized and sent when dtim_count is zero.

Signed-off-by: Po-Hao Huang &lt;phhuang@realtek.com&gt;
Signed-off-by: Ping-Ke Shih &lt;pkshih@realtek.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@kernel.org&gt;
Link: https://lore.kernel.org/r/20220407095858.46807-4-pkshih@realtek.com
</content>
</entry>
<entry>
<title>rtw88: replace tx tasklet with work queue</title>
<updated>2021-02-12T07:51:09+00:00</updated>
<author>
<name>Po-Hao Huang</name>
<email>phhuang@realtek.com</email>
</author>
<published>2021-02-09T07:07:51+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=fe101716c7c9d2ce53a73c7e897be0e8fdfc476b'/>
<id>urn:sha1:fe101716c7c9d2ce53a73c7e897be0e8fdfc476b</id>
<content type='text'>
Replace tasklet so we can do tx scheduling in parallel. Since throughput
is delay-sensitive in most cases, we allocate a dedicated, high priority
wq for our needs.

Signed-off-by: Po-Hao Huang &lt;phhuang@realtek.com&gt;
Signed-off-by: Ping-Ke Shih &lt;pkshih@realtek.com&gt;
Reviewed-by: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20210209070755.23019-5-pkshih@realtek.com
</content>
</entry>
<entry>
<title>rtw88: add rts condition</title>
<updated>2021-02-12T07:50:55+00:00</updated>
<author>
<name>Po-Hao Huang</name>
<email>phhuang@realtek.com</email>
</author>
<published>2021-02-09T07:07:49+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=d77ddc34d7317dc2c0fad21ef40f75b909552d5b'/>
<id>urn:sha1:d77ddc34d7317dc2c0fad21ef40f75b909552d5b</id>
<content type='text'>
Since we set the IEEE80211_HW_HAS_RATE_CONTROL flag, so use_rts in
ieee80211_tx_info will never be set in the ieee80211_xmit_fast path.
Add length check for skb to decide whether rts is needed.

Signed-off-by: Po-Hao Huang &lt;phhuang@realtek.com&gt;
Signed-off-by: Ping-Ke Shih &lt;pkshih@realtek.com&gt;
Reviewed-by: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20210209070755.23019-3-pkshih@realtek.com
</content>
</entry>
<entry>
<title>rtlwifi/rtw88: convert tasklets to use new tasklet_setup() API</title>
<updated>2020-08-27T13:22:14+00:00</updated>
<author>
<name>Allen Pais</name>
<email>allen.lkml@gmail.com</email>
</author>
<published>2020-08-17T09:06:36+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=d3ccc14dfe9595d5ecd247db27bd66a1343f315a'/>
<id>urn:sha1:d3ccc14dfe9595d5ecd247db27bd66a1343f315a</id>
<content type='text'>
In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly
and remove .data field.

Signed-off-by: Romain Perier &lt;romain.perier@gmail.com&gt;
Signed-off-by: Allen Pais &lt;allen.lkml@gmail.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20200817090637.26887-16-allen.cryptic@gmail.com
</content>
</entry>
<entry>
<title>rtw88: update tx descriptor of mgmt and reserved page packets</title>
<updated>2020-08-02T15:05:14+00:00</updated>
<author>
<name>Tzu-En Huang</name>
<email>tehuang@realtek.com</email>
</author>
<published>2020-07-17T06:49:33+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=d8e030c74e8394a9a452b34e3a8d95d9236b45c3'/>
<id>urn:sha1:d8e030c74e8394a9a452b34e3a8d95d9236b45c3</id>
<content type='text'>
Previous settings for TX descriptors of and reserved page packets
are insufficient.

For the sequence number of packets downloaded to reserved page, it
should be filled by hardware.
And for ps-poll packets in reserved page, to prevent AID being
changed by hardware, NAVUSEHDR should be set.
Additionally, the rate should be adjusted based on the current band
for mgmt and reserved page packets.

Signed-off-by: Tzu-En Huang &lt;tehuang@realtek.com&gt;
Signed-off-by: Yan-Hsuan Chuang &lt;yhchuang@realtek.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20200717064937.27966-4-yhchuang@realtek.com
</content>
</entry>
<entry>
<title>rtw88: handle C2H_CCX_TX_RPT to know if packet TX'ed successfully</title>
<updated>2020-05-06T08:34:31+00:00</updated>
<author>
<name>Ping-Ke Shih</name>
<email>pkshih@realtek.com</email>
</author>
<published>2020-05-04T10:50:06+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=614b1f874454b6d01f1e376f72172cba5404e738'/>
<id>urn:sha1:614b1f874454b6d01f1e376f72172cba5404e738</id>
<content type='text'>
TX status report of 8723D differs from 8822B/8822C, it uses
C2H_CCX_TX_RPT (0x03) with different format. With sequence number
and TX status, driver can know if certain packet was transmitted
successfully.

Signed-off-by: Ping-Ke Shih &lt;pkshih@realtek.com&gt;
Signed-off-by: Yan-Hsuan Chuang &lt;yhchuang@realtek.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20200504105010.10780-5-yhchuang@realtek.com
</content>
</entry>
<entry>
<title>rtw88: fix non-increase management packet sequence number</title>
<updated>2020-03-26T19:21:43+00:00</updated>
<author>
<name>Tzu-En Huang</name>
<email>tehuang@realtek.com</email>
</author>
<published>2020-03-26T02:04:08+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=2542469d1258b2b2f2849ce1f4df88e86a761f7c'/>
<id>urn:sha1:2542469d1258b2b2f2849ce1f4df88e86a761f7c</id>
<content type='text'>
In previous setting, management packets' sequence numbers will
not increase and always stay at 0. Add hw sequence number support
for mgmt packets.
The table below shows different sequence number setting in the
tx descriptor.

seq num ctrl      | EN_HWSEQ | DISQSELSEL | HW_SSN_SEL
------------------------------------------------------
sw ctrl           |    0     |    N/A     |    N/A
hw ctrl per MACID |    1     |     0      |    N/A
hw ctrl per HWREG |    1     |     1      |HWREG(0/1/2/3)

Signed-off-by: Tzu-En Huang &lt;tehuang@realtek.com&gt;
Signed-off-by: Yan-Hsuan Chuang &lt;yhchuang@realtek.com&gt;
Reviewed-by: Brian Norris &lt;briannorris@chromium.org&gt;
Tested-by: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20200326020408.25218-1-yhchuang@realtek.com
</content>
</entry>
<entry>
<title>rtw88: kick off TX packets once for higher efficiency</title>
<updated>2020-03-23T17:29:58+00:00</updated>
<author>
<name>Yan-Hsuan Chuang</name>
<email>yhchuang@realtek.com</email>
</author>
<published>2020-03-12T08:08:52+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=aaab5d0e673749f82ff34e5f15ea8a689789a9ce'/>
<id>urn:sha1:aaab5d0e673749f82ff34e5f15ea8a689789a9ce</id>
<content type='text'>
Driver used to kick off every TX packets, that will waste some
time while we can do better to kick off the TX packets once after
they are all prepared to be transmitted.

For PCI, it uses DMA engine to transfer the SKBs to the device,
and the transition of the state of the DMA engine could be a cost.
Driver can save some time to kick off multiple SKBs once so that
the DMA engine will have only one transition.

So, split rtw_hci_ops::tx() to rtw_hci_ops::tx_write() and
rtw_hci_ops::tx_kick_off() to explicitly kick the SKBs off after
they are written to the prepared buffer. For packets come from
ieee80211_ops::tx(), write one and then kick it off immediately.
For packets queued in TX queue, which come from
ieee80211_ops::wake_tx_queue(), we can dequeue them, write them
to the buffer, and then kick them off together.

Signed-off-by: Yan-Hsuan Chuang &lt;yhchuang@realtek.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20200312080852.16684-6-yhchuang@realtek.com
</content>
</entry>
<entry>
<title>rtw88: extract alloc rsvd_page and h2c skb routines</title>
<updated>2020-03-23T17:29:34+00:00</updated>
<author>
<name>Yan-Hsuan Chuang</name>
<email>yhchuang@realtek.com</email>
</author>
<published>2020-03-12T08:08:49+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=da14a0409e3f0df6497516705608a023de400794'/>
<id>urn:sha1:da14a0409e3f0df6497516705608a023de400794</id>
<content type='text'>
Extract skb allocation routines for rsvd_page and h2c.
These routines should also be used by USB and SDIO.

This should not change the logic at all.
memset() for pkt_info is unnecessary, just declare as {0}.
Also skb_put()/memcpy() can be replaced by skb_put_data().

Signed-off-by: Yan-Hsuan Chuang &lt;yhchuang@realtek.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Link: https://lore.kernel.org/r/20200312080852.16684-3-yhchuang@realtek.com
</content>
</entry>
<entry>
<title>rtw88: add driver TX queue support</title>
<updated>2019-10-04T13:44:55+00:00</updated>
<author>
<name>Yan-Hsuan Chuang</name>
<email>yhchuang@realtek.com</email>
</author>
<published>2019-10-02T06:35:20+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=3745d3e550d1e6c4301596ac05a5fe82c11301ce'/>
<id>urn:sha1:3745d3e550d1e6c4301596ac05a5fe82c11301ce</id>
<content type='text'>
The mac80211 provides software TX queue for driver, as long as
driver has hooked ieee80211_ops::wake_tx_queue. Each time a
packet is queued onto the TX queue, that queue will be woken
up the inform driver to serve the queue.

Now driver only supports PCI interface ICs, there's no specific
traffic control for each queue, just schedule a tasklet, and
dump all of the packets at once to the DMA ring. Instead of TX
the packets whenever TX queue is woke, tasklet handler can have
more packets dumped to the device, takes advantage of burst
write with DMA engine.

And if the driver is going to support USB/SDIO ICs, the tasklet
can be more flexible for aggregating the packets, enhance the
efficiency of bandwidth usage.

Signed-off-by: Yan-Hsuan Chuang &lt;yhchuang@realtek.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
</content>
</entry>
</feed>
