<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRF7002 drops downlink in power save / RPU powers down RX while still advertising PM=0 (no PM=1 Null), so the AP delivers directly and the frame is lost</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/128424/nrf7002-drops-downlink-in-power-save-rpu-powers-down-rx-while-still-advertising-pm-0-no-pm-1-null-so-the-ap-delivers-directly-and-the-frame-is-lost</link><description>Hello all ! 
 
 Summary 
 While in power save the nRF7002 RPU powers down its receiver without sending a PM=1 (Null) frame first, so from the AP point of view the station is still in active mode (PM=0). The AP therefore delivers downlink frames (for example</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 11 Jun 2026 12:09:54 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/128424/nrf7002-drops-downlink-in-power-save-rpu-powers-down-rx-while-still-advertising-pm-0-no-pm-1-null-so-the-ap-delivers-directly-and-the-frame-is-lost" /><item><title>RE: nRF7002 drops downlink in power save / RPU powers down RX while still advertising PM=0 (no PM=1 Null), so the AP delivers directly and the frame is lost</title><link>https://devzone.nordicsemi.com/thread/567761?ContentTypeID=1</link><pubDate>Thu, 11 Jun 2026 12:09:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:71473f5e-b6e9-4c35-b6ec-b39c2ffde839</guid><dc:creator>ValentinKunti</dc:creator><description>&lt;p class="code-line" dir="auto" data-line="100"&gt;We kept the sniffer running and re-analysed a fresh session at the raw 802.11 layer. Two refinements to the original report, the second one extends it.&lt;/p&gt;
&lt;h2 id="1-the-clearest-reproduction-is-gateway-arp-no-decryption-needed-at-all" class="code-line" dir="auto" data-line="103"&gt;1. The clearest reproduction is gateway ARP, no decryption needed at all&lt;/h2&gt;
&lt;p class="code-line code-active-line" dir="auto" data-line="105"&gt;Every failed DNS cycle in 10 capture sessions failed with -ENETUNREACH: the DNS server is the gateway, and the gateway&amp;#39;s ARP reply is what gets lost. The pattern, one failed and one successful attempt 4 s apart in the same association (device 14:e2:89:11:1e:32, gateway behind the AP 70:a7:41:f7:57:e6, RSSI -60):&lt;/p&gt;
&lt;pre&gt;&lt;code class="code-line" dir="auto" data-line="111"&gt;failed attempt
40.836  STA &amp;rarr; broadcast   ARP request (QoS Data, 134 B)
40.850  GW  &amp;rarr; STA         ARP reply, first delivery        +14 ms
40.852  STA &amp;rarr; AP          Null PM=1                        sleep announced 16 ms after own TX
40.850 .. 40.870  GW &amp;rarr; STA  14 copies, wlan.fc.retry=1, none ACKed, AP gives up
   next beacon TIM: partial virtual bitmap 78bb07 &amp;rarr; 7abb07 = AID 1 (us) now buffered
40.938 .. 44.35   STA sends Null PM=0 / PM=1 several times, AP delivers nothing,
                  TIM bit for AID 1 stays set the whole time

successful attempt, same association, 4 s later
44.841  STA &amp;rarr; broadcast   ARP request
44.841 .. 44.851  GW &amp;rarr; STA  ~20 copies of the reply, STA finally ACKs one ~10 ms in
44.851  STA &amp;rarr; GW          DNS query, cycle proceeds normally
&lt;/code&gt;&lt;/pre&gt;
&lt;p class="code-line" dir="auto" data-line="127"&gt;In another window the reply arrived 0.7 ms after the device&amp;#39;s own transmission and was already lost. So the receiver is off essentially at TX completion, and whether a connection attempt works is a race between the RPU re-opening its RX and the AP exhausting its MAC retry budget (16 to 19 retransmissions in 5 to 10 ms). This also explains why CONFIG_NRF70_RPU_PS_IDLE_TIMEOUT_MS 10/25/100 ms made no difference for us: the reply lands inside any of those windows.&lt;/p&gt;
&lt;h2 id="2-when-pm1-is-sent-the-buffered-frame-is-still-never-retrieved" class="code-line" dir="auto" data-line="134"&gt;2. When PM=1 is sent, the buffered frame is still never retrieved&lt;/h2&gt;
&lt;p class="code-line" dir="auto" data-line="136"&gt;This is the part that is new compared to the original post. In the ARP case above the station did announce PM=1 (16 ms after its TX, 2 ms after the first delivery had already died un-ACKed). The AP then does everything right: it buffers the next reply and sets the TIM bit for AID 1, verified in the beacons (78bb07 &amp;rarr; 7abb07, bitmap offset 0). The station announces PM=0 several times over the following 3.5 s and the AP delivers nothing; the TIM bit stays set until the station gives up and re-ARPs. So both legs of power save fail: receiving while advertised active, and retrieval of buffered traffic after advertised sleep. Tuning the exit strategy so the AP buffers more (EVERY_TIM) cannot help if the pickup never happens.&lt;/p&gt;
&lt;p class="code-line" dir="auto" data-line="147"&gt;One more data point: the station&amp;#39;s own Null and data frames are sent 3 to 4 times back to back (retry=1), so it also misses the AP&amp;#39;s ACKs to its own transmissions right after TX, consistent with the RX being gated off at TX completion.&lt;/p&gt;
&lt;p class="code-line" dir="auto" data-line="152"&gt;This narrows question 2 from the original post: even when the PM=1 Null does go out and the AP buffers correctly, why does the RPU not collect the buffered frame on its next wake?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>