<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6593997668187704780</id><updated>2011-07-27T05:29:34.184-07:00</updated><title type='text'>PCI Express - Data Link Layer</title><subtitle type='html'>This blog provides information/ideas about PCI Express Data Link Layer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pciexpress-datalinklayer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pciexpress-datalinklayer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>.</name><uri>http://www.blogger.com/profile/12231586279374897112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='22' src='http://www.orbitcast.com/archives/xm-connect-and-play-chip.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6593997668187704780.post-1607865411867399718</id><published>2008-08-18T06:03:00.000-07:00</published><updated>2008-08-18T06:07:26.455-07:00</updated><title type='text'>RETRIES</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;The transmitter cannot assume that a transaction has been properly re­ceived until it gets a proper acknowledgement back from the receiver. If the receiver sends back a Nak (for something like a had sequence num­ber or LCRC), or fails to send back an Ack in an appropriate amount of time, the transmitter needs to retry all unacknowledged TLPs. To accom­plish this, the transmitter implements a Data Link Layer retry buffer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormalCxSpMiddle"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;All copies of transmitted TLPs must be stored in the Data Link Layer retry buffer. Once the transmitter receives an appropriate acknowledge­ment back, it purges the appropriate TLPs from its retry buffer. It also updates its acknowledgement sequence number counter.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormalCxSpMiddle"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;TLPs may be retried for two reasons,&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormalCxSpMiddle"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;First, it is retried if the receiver sends back a Nak DLLP indicating some sort of transmission error.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormalCxSpMiddle"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;The second reason for a retry deals with a replay timer, which helps ensure that forward progress is being made. The transmitter side of the Data Link Layer needs to implement a replay timer that counts the time since the last Ack or Nak DLLP was received. This timer runs anytime there &lt;/span&gt;is &lt;span style="letter-spacing: 0.1pt;"&gt;an outstanding TLP and is reset every time an Ack or Nak DLLP is received. When &lt;/span&gt;no &lt;span style="letter-spacing: 0.1pt;"&gt;TLPs are outstanding, the timer should reset and hold so that it does not unnecessarily cause a time-out. The replay timer limit depends upon the link width and maximum payload size. The larger the maximum payload size and the narrower the link width, the longer the replay timer can run before timing out (since each packet requires more time to transmit). If the replay timer times out, the Data Link Layer reports an error condition.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormalCxSpMiddle"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;If either of these events occurs-either a Nak reception or a replay timer expiration-the transmitter's Data Link Layer begins a retry. The Data Link Layer increments a replay number counter. This is a 2-hit &lt;/span&gt;counter that keeps track of the number of times the retry buffer has been&lt;span style="letter-spacing: 0.1pt;"&gt; retransmitted. If the replay counter rolls over from 1 lb to 00b (that &lt;/span&gt;is, &lt;span style="letter-spacing: 0.1pt;"&gt;this is the fourth retry attempt) the Data Link Layer indicates an error condition that requires the Physical Layer to retrain the link. The Data Link Layer resets its replay counter every time it successfully receives an acknowledgement, so the retrain procedure only occurs if are &lt;/span&gt;try attempt continuously fails. In other words, four unsuccessful attempt&lt;span style="letter-spacing: 0.1pt;"&gt; &lt;/span&gt;&lt;span style="letter-spacing: -0.1pt;"&gt;s &lt;/span&gt;at a single retry create this error. Four unsuccessful retry attempts across&lt;span style="letter-spacing: 0.1pt;"&gt; numerous packets with numerous intermediate acknowledgements do not.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormalCxSpMiddle"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6593997668187704780-1607865411867399718?l=pciexpress-datalinklayer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pciexpress-datalinklayer.blogspot.com/feeds/1607865411867399718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6593997668187704780&amp;postID=1607865411867399718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/1607865411867399718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/1607865411867399718'/><link rel='alternate' type='text/html' href='http://pciexpress-datalinklayer.blogspot.com/2008/08/retries.html' title='RETRIES'/><author><name>.</name><uri>http://www.blogger.com/profile/12231586279374897112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='22' src='http://www.orbitcast.com/archives/xm-connect-and-play-chip.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6593997668187704780.post-3147899631470915877</id><published>2008-08-18T05:53:00.000-07:00</published><updated>2008-08-18T06:01:31.001-07:00</updated><title type='text'>Link CRC(LCRC)</title><content type='html'>&lt;p class="MsoNormal" style="margin-top: 0.05in; text-align: justify;"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;The Data Link Layer protects the contents of the TLP by using a 32-bit &lt;/span&gt;LCRC value. The Data Link Layer calculates the LCRC value based on the&lt;span style="letter-spacing: 0.1pt;"&gt; &lt;/span&gt;TLP received from the Transaction Layer&lt;span style="letter-spacing: 0.1pt;"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="letter-spacing: 0.2pt;"&gt;and &lt;/span&gt;&lt;/i&gt;the sequence number it has&lt;span style="letter-spacing: 0.1pt;"&gt; just applied. The LCRC calculation utilizes each bit in the packet, includ­ing the reserved bits (such as bits 7:4 of byte 0). &lt;/span&gt;&lt;i&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0.1in; text-align: justify; text-indent: 0.25in;"&gt;On the receiver side, the first step that the Data Link Layer takes is to&lt;span style="letter-spacing: 0.1pt;"&gt; check the LCRC value. It does this by applying the same LCRC algorithm to the received TLP (not including the attached 32-bit LCRC). If a single or multiple-bit error occurs during transmission, the calculated LCRC value should not match the received LCRC value. If the calculated LCRC value does not equal the received value, the TLP is discarded and a Nak DLLP is scheduled for transmission. If the calculated value equals the re­ceived value, the Data Link Layer then proceeds to check the sequence number.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0.25in; text-align: justify; text-indent: 0.25in;"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;Like sequence numbers, the LCRC protects the contents of a TLP on a link-by-link basis. If a TLP travels across several links (for example, passes through a switch on its way to the root complex), an LCRC value &lt;/span&gt;is generated and checked for each link. In this way, it is different than the&lt;span style="letter-spacing: 0.1pt;"&gt; &lt;/span&gt;ECRC value that may be generated for a TLP. The ECRC serves to protect&lt;span style="letter-spacing: 0.1pt;"&gt; the TLP contents from one end of the PCI Express topology to the other &lt;/span&gt;end, while the LCRC only ensures TLP reliability for a&lt;span style="letter-spacing: 0.1pt;"&gt; give link. The 32-bit LCRC value for TLPs is also differentiated from the &lt;/span&gt;&lt;span style="letter-spacing: 0.05pt;"&gt;16-bit CRC value that is used for DLLP packets.&lt;/span&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormalCxSpMiddle" style="text-align: justify;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6593997668187704780-3147899631470915877?l=pciexpress-datalinklayer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pciexpress-datalinklayer.blogspot.com/feeds/3147899631470915877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6593997668187704780&amp;postID=3147899631470915877' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/3147899631470915877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/3147899631470915877'/><link rel='alternate' type='text/html' href='http://pciexpress-datalinklayer.blogspot.com/2008/08/link-crclcrc.html' title='Link CRC(LCRC)'/><author><name>.</name><uri>http://www.blogger.com/profile/12231586279374897112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='22' src='http://www.orbitcast.com/archives/xm-connect-and-play-chip.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6593997668187704780.post-2492590170452673316</id><published>2008-08-18T05:40:00.000-07:00</published><updated>2008-08-18T05:52:05.350-07:00</updated><title type='text'>Sequence Number</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="letter-spacing: 0.05pt;"&gt;The&lt;/span&gt;&lt;span style="letter-spacing: 0.1pt;"&gt; &lt;/span&gt;&lt;span style="letter-spacing: -0.05pt;"&gt;Data &lt;/span&gt;&lt;span style="letter-spacing: 0.05pt;"&gt;Link Layer assigns a 12-bit sequence number to each TLP as it is&lt;/span&gt;&lt;span style="letter-spacing: 0.1pt;"&gt; passed from the transmit side of its Transaction Layer. The Data Link Laver applies the sequence number, along with a 4-bit reserved field to &lt;/span&gt;&lt;span style=""&gt;the &lt;/span&gt;front of the TLP. Refer to Figure for the sequence number format.&lt;span style="letter-spacing: 0.1pt;"&gt; To accomplish this, the transmit side of this layer needs to implement &lt;span style=""&gt;two &lt;/span&gt;simple counters, one indicating what the next transmit sequence number should be, and one indicating the most recently acknowledged &lt;span style=""&gt;sequence &lt;/span&gt;number. When a sequence number is applied to an outgoing &lt;span style=""&gt;TLP. &lt;/span&gt;the Data Link Layer refers to its next sequence counter for the ap­propriate value. Once that sequence number is applied, the Data Link &lt;span style=""&gt;Layer &lt;/span&gt;increments its next sequence counter by one.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;        &lt;/div&gt;&lt;p class="MsoNormalCxSpMiddle" style="margin-top: 0.2in; text-indent: 0.2in; text-align: justify;"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;On the receiver side, the Data Link Layer receives incoming TLPs &lt;/span&gt;from the Physical Layer, then checks the sequence number and LCRC. If&lt;span style="letter-spacing: 0.1pt;"&gt; &lt;/span&gt;they check out properly, the TLP is passed on to the Transaction Layer. If&lt;span style="letter-spacing: 0.1pt;"&gt; the sequence number (or LCRC) is incorrect, the Data Link Layer requests a retry. To accomplish this, the receive side of this layer needs to implement a counter for the next receiver sequence number, which in­dicates the next expected sequence number. If the sequence number of the received TLP matches that counter (and the LCRC checks), the Data &lt;/span&gt;Link Layer then removes the sequence number, associated reserved bits,&lt;span style="letter-spacing: 0.1pt;"&gt; and the LCRC. Once the layer removes that data, it forwards the incom­ing TLP on to the receive side of the Transaction Layer. When this oc­curs, the Data Link Layer increments its next receiver sequence counter.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormalCxSpMiddle" style="margin-top: 23.4pt; text-indent: 0.2in; text-align: justify;"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;If the sequence number does not match the value stored in the re­ceiver's next sequence counter, that Data Link Layer discards that TLP. The Data Link Layer checks to see if the TLP is a duplicate. If it is, it schedules an acknowledgement (&lt;span style="font-weight: bold;"&gt;Ack&lt;/span&gt;) DLLP to be sent out for that packet. If the TLP is not a duplicate, it schedules a negative acknowl­edgement (&lt;span style="font-weight: bold;"&gt;Nak&lt;/span&gt;) DLLP to report a missing TLP. Then "&lt;span style="font-weight: bold;"&gt;Retry&lt;/span&gt;" process takes place.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormalCxSpMiddle" style="margin-top: 12.6pt; text-indent: 0.2in; text-align: justify;"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;The Data Link Layer does not differentiate among types of TLP when assigning the sequence number. Transactions destined to I/O space do &lt;/span&gt;not have a different set of sequence numbers than memory transactions.&lt;span style="letter-spacing: 0.1pt;"&gt; Nor are sequence numbers dependent on the ultimate completer of the &lt;/span&gt;transaction. The Data Link Layer of the transmitting device is the sole de&lt;span style="letter-spacing: 0.1pt;"&gt;­terminant of the sequence number assigned to a TLP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6593997668187704780-2492590170452673316?l=pciexpress-datalinklayer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pciexpress-datalinklayer.blogspot.com/feeds/2492590170452673316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6593997668187704780&amp;postID=2492590170452673316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/2492590170452673316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/2492590170452673316'/><link rel='alternate' type='text/html' href='http://pciexpress-datalinklayer.blogspot.com/2008/08/sequence-number.html' title='Sequence Number'/><author><name>.</name><uri>http://www.blogger.com/profile/12231586279374897112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='22' src='http://www.orbitcast.com/archives/xm-connect-and-play-chip.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6593997668187704780.post-5098270818823357517</id><published>2008-08-18T05:31:00.000-07:00</published><updated>2008-08-18T05:53:03.258-07:00</updated><title type='text'>Building on the TLP</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="letter-spacing: 0.1pt;"&gt;The TLP transmission path through the Data Link Layer prepares the &lt;/span&gt;packet for reliable transmission across the link. The Data Link Layer adds&lt;span style="letter-spacing: 0.1pt;"&gt; the sequence number and LCRC code before passing it along to its Physi­cal Layer. It does not process or modify the contents of the TLP-the &lt;/span&gt;Data Link Layer simply appends information to the beginning and end of&lt;span style="letter-spacing: 0.1pt;"&gt; the packet, as seen in below Figure,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_D3t0yzWw-mU/SKlsfN9LeWI/AAAAAAAAAFw/V5wNGBMkHls/s1600-h/adad.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_D3t0yzWw-mU/SKlsfN9LeWI/AAAAAAAAAFw/V5wNGBMkHls/s400/adad.JPG" alt="" id="BLOGGER_PHOTO_ID_5235835325372922210" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6593997668187704780-5098270818823357517?l=pciexpress-datalinklayer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pciexpress-datalinklayer.blogspot.com/feeds/5098270818823357517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6593997668187704780&amp;postID=5098270818823357517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/5098270818823357517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/5098270818823357517'/><link rel='alternate' type='text/html' href='http://pciexpress-datalinklayer.blogspot.com/2008/08/building-on-tlp.html' title='Building on the TLP'/><author><name>.</name><uri>http://www.blogger.com/profile/12231586279374897112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='22' src='http://www.orbitcast.com/archives/xm-connect-and-play-chip.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_D3t0yzWw-mU/SKlsfN9LeWI/AAAAAAAAAFw/V5wNGBMkHls/s72-c/adad.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6593997668187704780.post-5740395398559018044</id><published>2008-08-18T05:06:00.000-07:00</published><updated>2008-08-18T05:29:45.830-07:00</updated><title type='text'>Data Link Layer -Overview</title><content type='html'>&lt;p class="MsoNormal" style="margin: 0.05in 0.05in 45pt 0in; text-align: justify;"&gt;&lt;span style=""&gt;T&lt;/span&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;his blog describes the details of the middle PCI Express architec­tural layer, the Data Link Layer. The Data Link Layer's main responsible is &lt;span style="font-weight: bold;"&gt;"error detection and correction as well as link management support".&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The Data &lt;span style="letter-spacing: 0.3pt;"&gt;Link Layer serves as the "&lt;span style="font-weight: bold;"&gt;gatekeeper&lt;/span&gt;&lt;sup&gt;"&lt;/sup&gt; for each individual link within a&lt;/span&gt;&lt;span style="letter-spacing: 0.2pt;"&gt; PCI &lt;/span&gt;&lt;span style="letter-spacing: 0.2pt;"&gt;Express system. It ensures that the data being sent back and forth across&lt;/span&gt;&lt;span style="letter-spacing: 0.3pt;"&gt; &lt;/span&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;the link is correct and received in the same order it was sent. The Data  Link Layer makes &lt;/span&gt;&lt;span style="letter-spacing: 0.2pt;"&gt;sure that each packet makes it across the link, &lt;/span&gt;and makes it across intact. This  layer  &lt;span style="letter-spacing: 0.3pt;"&gt;takes TLPs from the transmit side of the Transaction Layer  and continues the process of building them into a PCI Express transaction.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0.05in 0.05in 45pt 0in; text-align: justify;"&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;The Data Link Layer adds a sequence number to the front of the packet and an LCRC error checker to the tail. Once the transmit side &lt;/span&gt;of&lt;u1:p&gt;&lt;/u1:p&gt; &lt;span style="letter-spacing: 0.3pt;"&gt;the Data Link Layer has applied these to the TLP, the Data &lt;span style=""&gt;link layer &lt;/span&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.25pt;"&gt;forwards it on to the Physical Layer. Like the Transaction the Data Link Layer has unique duties for &lt;/span&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;duties for both outgoing packets and &lt;span style=""&gt;incoming &lt;/span&gt;packets.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0.05in 0.05in 45pt 0in; text-align: justify;"&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;For incoming TLPs, the Data Link Layer accepts the from the Physical Layer and checks the sequence number and LCRC make sure the TLP is correct. If it is correct, the Data Link Layer the sequence number and LCRC, then passes the TLP up to the side of the Transaction Layer. If an error is detected (either wrong sequence number or LCRC does not match), the Data Link Layer &lt;span style=""&gt;does not &lt;/span&gt;pass the "bad" packet on to the Transaction Layer. Instead, the Data Layer communicates with its link mate to try and resolve the through a retry attempt.&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_D3t0yzWw-mU/SKlrG0WaEbI/AAAAAAAAAFo/CXHDhGk5tPE/s1600-h/0412_ti1_2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_D3t0yzWw-mU/SKlrG0WaEbI/AAAAAAAAAFo/CXHDhGk5tPE/s400/0412_ti1_2.gif" alt="" id="BLOGGER_PHOTO_ID_5235833806670926258" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0.05in 0.05in 45pt 0in; text-align: justify;"&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;The Data Link Layer only passes a TLP through to the Transaction Layer if the packet's sequence number and LCRC values check out. It is important to note this because this "gate-keeping' lows the Transaction Layer to assume that everything it receives from &lt;/span&gt;&lt;span style="letter-spacing: 0.2pt;"&gt;link is correct. Below figure gives the clear idea, the Data Link Layer forwards outgoing transactions from the Transaction Layer to the Physical Layer, and&lt;/span&gt;&lt;span style="letter-spacing: 0.3pt;"&gt; coming transactions from the Physical Layer to the Transaction Layer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.05in; text-align: justify; text-indent: 0.2in;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;In order to accomplish several link management functions, the Data &lt;/span&gt;&lt;span style="letter-spacing: 0.2pt;"&gt;Link Layer generates and processes Data Link Layer Packets (DLLPs). The&lt;/span&gt;&lt;span style="letter-spacing: 0.3pt;"&gt; Data Link Layer uses these packets for error notification, power man­agement, flow control, and so on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0.05in 0.05in 45pt 0in; text-align: justify;"&gt;&lt;span style="letter-spacing: 0.3pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6593997668187704780-5740395398559018044?l=pciexpress-datalinklayer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pciexpress-datalinklayer.blogspot.com/feeds/5740395398559018044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6593997668187704780&amp;postID=5740395398559018044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/5740395398559018044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6593997668187704780/posts/default/5740395398559018044'/><link rel='alternate' type='text/html' href='http://pciexpress-datalinklayer.blogspot.com/2008/08/data-link-layer-overview.html' title='Data Link Layer -Overview'/><author><name>.</name><uri>http://www.blogger.com/profile/12231586279374897112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='22' src='http://www.orbitcast.com/archives/xm-connect-and-play-chip.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_D3t0yzWw-mU/SKlrG0WaEbI/AAAAAAAAAFo/CXHDhGk5tPE/s72-c/0412_ti1_2.gif' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
