<?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>Link Layer ACK vs. Write_REQ</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/25315/link-layer-ack-vs-write_req</link><description>Hello, 
 can anybody tell me the exact differences between a Link Layer Acknowledgement and the Acknowledgement used by a write Request?
Does anybody have some statistics about packet loss that might occur if one is only using WRITE_CMD instead of WRITE_REQ</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 20 Sep 2017 06:17:11 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/25315/link-layer-ack-vs-write_req" /><item><title>RE: Link Layer ACK vs. Write_REQ</title><link>https://devzone.nordicsemi.com/thread/99767?ContentTypeID=1</link><pubDate>Wed, 20 Sep 2017 06:17:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:96d13629-b446-4c0a-ba2f-22bfd5f3936f</guid><dc:creator>Marius Heil</dc:creator><description>&lt;p&gt;That sounds very promising, thanks a lot. :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Link Layer ACK vs. Write_REQ</title><link>https://devzone.nordicsemi.com/thread/99766?ContentTypeID=1</link><pubDate>Tue, 19 Sep 2017 15:56:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bf70db6d-b0d9-474d-bfc6-53a0b7723b5a</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;I will give it a try;)&lt;/p&gt;
&lt;p&gt;Link Layer has this one sliding window ACK mechanism (SN+NESN bits in LL header) which ensures that low-level controller receives the message (basically that radio receiver gets it). However due to multi-layer architecture of BLE stack it&amp;#39;s not sure that this doesn&amp;#39;t get queued and lost/flushed by some higher layer. This isn&amp;#39;t a big deal if you are running all upper layer on the same chip because then you are pretty much 100% sure that L2CAP+(G)ATT layers get the data and that upper APP layer is called through particular APIs (or event callback functions in Nordic Soft Device case to be very specific).&lt;/p&gt;
&lt;p&gt;However in case of &amp;quot;usual&amp;quot; Bluetooth system which is radio front-end + lower layer stack in one chip + HCI routing over USB or SPI or other interface to main system processor running multithreaded kernel like Linux/Android or Windows you might still want to have higher layer ACK mechanism and for that concept you have it on (G)ATT layer. (btw. you can have finally the same concept on APP layer in case you are not confident in (G)ATT implementation in your system).&lt;/p&gt;
&lt;p&gt;Finally to your question: we haven&amp;#39;t run long specific stress test of Nordic stacks on nRF51 and 52 chips but from all the tests in past 4 years we haven&amp;#39;t seen any single lost package between LL and APP layer (= in (G)ATT API of Nordic Soft Device). In other words if packet reaches destination and is decoded without any noise issues we also get it on higher layers of the stack.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>