IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
UP-0258377
(2005-10-26)
|
등록번호 |
US-7577896
(2009-08-31)
|
발명자
/ 주소 |
- Uzrad Nali, Oran
- Plotz, Kevin G.
- Leichty, Phil L.
|
출원인 / 주소 |
- Brocade Communications Systems, Inc.
|
대리인 / 주소 |
Wong, Cabello, Lutsch, Rutherford & Brucculeri, LLP
|
인용정보 |
피인용 횟수 :
3 인용 특허 :
5 |
초록
▼
The present invention discloses an apparatus and method for performing cyclic redundancy check (CRC) on partial protocol data units (PDUs). The disclosed apparatus is designed to off-load the CRC calculation for transmit or receive from a host computer. According to the disclosed method, when gener
The present invention discloses an apparatus and method for performing cyclic redundancy check (CRC) on partial protocol data units (PDUs). The disclosed apparatus is designed to off-load the CRC calculation for transmit or receive from a host computer. According to the disclosed method, when generating CRC for partial PDUs, for each such PDUs a decision is made to determine whether a CRC action is required, i.e., if CRC should be calculated, checked or placed in the outgoing byte stream. When partial CRC calculation is performed the intermediate value is saved into memory and later is used for calculating the CRC for a consecutive partial PDU. In accordance with a preferred embodiment of the invention, the need to re-calculate the CRC in a case of a re-transmit request is eliminated.
대표청구항
▼
What is claimed is: 1. An apparatus for processing protocol data units (PDUs), comprising: a cyclic redundancy check (CRC) controller that calculates a first intermediate CRC value for a first outbound partial PDU of a first plurality of outbound partial PDUs, and further calculates one or more sub
What is claimed is: 1. An apparatus for processing protocol data units (PDUs), comprising: a cyclic redundancy check (CRC) controller that calculates a first intermediate CRC value for a first outbound partial PDU of a first plurality of outbound partial PDUs, and further calculates one or more subsequent intermediate CRC values for each of the first plurality of outbound partial PDUs remaining, a first outbound PDU comprising the first plurality of outbound partial PDUs; and a transmit handler that couples to the CRC controller, and that formats and routes to a network destination each of the first plurality of outbound partial PDUs as they are processed by the CRC controller; wherein the first intermediate CRC value is based upon an initial CRC value, and the one or more subsequent intermediate CRC values are each based upon an intermediate CRC value generated for a previously processed outbound partial PDU; and wherein a current outbound intermediate CRC value associated with the most recently processed of the first plurality of outbound partial PDUs is included within a CRC field of the first outbound PDU after the CRC controller processes a last partial outbound PDU of the first plurality of partial PDUs. 2. The apparatus of claim 1, further comprising: a memory coupled to the CRC controller and the transmit handler, the memory comprising a plurality of memory object descriptors (MODs), and the plurality of MODs organized in a linked list configuration; wherein each of the plurality of MODs is categorized as one of a plurality of MOD types selected from the group consisting of a header MOD, a payload MOD and a CRC MOD; and wherein the MODs are sequentially processed based upon the order of the MODs within the linked list. 3. The apparatus of claim 2, wherein each payload MOD comprises a pointer to one of a plurality of payload objects stored in the memory, and if a currently processed MOD is categorized as a payload MOD, the CRC controller calculates the current outbound intermediate CRC value based upon the data within a payload object pointed to by the currently processed MOD; and wherein the CRC controller does not calculate the current outbound intermediate CRC value if the currently processed MOD is categorized as either a header MOD or a CRC MOD. 4. The apparatus of claim 2, wherein the current outbound intermediate CRC value is included within the CRC field of the first outbound PDU if an MOD associated with the most recently processed of the first plurality of outbound partial PDUs is processed and categorized as a CRC MOD. 5. The apparatus of claim 2, wherein the value included within the CRC field of the first outbound PDU is stored within the memory, and wherein the saved CRC field value is included in one or more re-transmissions of the first outbound PDU. 6. The apparatus of claim 1, wherein the first outbound PDU comprises an Internet Small Computer System Interface (iSCSI) PDU. 7. The apparatus of claim 1, further comprising: a plurality of processing nodes each coupled to the CRC controller and the transmit handler, the plurality of processing nodes comprising a first processing node associated with the first outbound PDU, and further comprising a second processing node associated with a second outbound PDU comprising a second plurality of outbound partial PDUs; wherein a first of a plurality of CRC channels is associated with the first outbound PDU, and a second of the plurality of CRC channels is associated with the second outbound PDU; and wherein the first and second of the plurality of CRC channels together enable the transmit handler to interact with both the first and second processing nodes, and further together enable the CRC controller to pipeline partial CRC calculations for each of the first and second PDUs. 8. The apparatus of claim 1, further comprising: a direct memory access (DMA) controller coupled to the CRC controller; and a memory coupled to the DMA controller, the CRC controller and the transmit handler, the memory storing a plurality of partial inbound PDUs, and an inbound PDU comprising the plurality of partial inbound PDUs; wherein the DMA controller transfers each of the plurality of inbound partial PDUs to the memory as each of the plurality of partial inbound PDUs is received; and wherein the CRC controller calculates an intermediate CRC value for each of the plurality of partial inbound PDUs as each of the plurality of inbound PDUs is received. 9. The apparatus of claim 8, wherein if a current inbound intermediate CRC value is associated with a partial inbound PDU of the plurality of partial inbound PDUs that is at the end of the inbound PDU, the DMA controller compares the current inbound intermediate CRC value to a received CRC value within the inbound PDU; and wherein an error is signaled by the DMA controller to the CRC controller if the current inbound intermediate CRC value does not match the received CRC value. 10. A method for processing protocol data units (PDUs), comprising: a cyclic redundancy check (CRC) controller calculating a first intermediate CRC value for a first outbound partial PDU of a plurality of outbound partial PDUs, the first intermediate CRC value being based upon an initial CRC value, and a first outbound PDU comprising the plurality of outbound partial PDUs; the CRC controller calculating one or more subsequent intermediate CRC values for each of the plurality of outbound partial PDUs remaining, the one or more subsequent intermediate CRC values each being based upon an intermediate CRC value generated for a previously processed outbound partial PDU; a transmit handler formatting and routing to a network destination each of the plurality of outbound partial PDUs for which intermediate CRC values have been calculated; and the transmit handler including a current outbound intermediate CRC value within a CRC field of the first outbound PDU after processing a last partial outbound PDU of the plurality of partial PDUs. 11. The method of claim 10, further comprising: storing in a memory a plurality of memory object descriptors (MODs); a queue manager organizing the MODs in a linked list configuration; the transmit handler sequentially processing the MODs based upon the order of the MODs in the linked list; and categorizing each of the plurality of MODs as one of a plurality of MOD types selected from the group consisting of a header MOD, a payload MOD and a CRC MOD. 12. The method of claim 11, further comprising: including within each payload MOD a pointer to one of a plurality of payload objects; the CRC controller calculating the current outbound intermediate CRC value, if a currently processed MOD is categorized as a payload MOD, based upon the data within a payload object pointed to by the currently processed MOD; and the CRC controller forgoing the calculating of the current outbound intermediate CRC value if the currently processed MOD is categorized as either a header MOD or a CRC MOD. 13. The method of claim 11, further comprising the transmit handler performing the including of the current outbound intermediate CRC value within the CRC field of the first outbound PDU if an MOD associated with the most currently processed of the plurality of outbound partial PDUs is processed and categorized as a CRC MOD. 14. The method of claim 10, further comprising: saving in the memory the value included within the CRC field of the first outbound PDU; and the transmit handler including the saved CRC field value in one or more re-transmissions of the first outbound PDU. 15. The method of claim 10, further comprising: a first processing node associating a first of a plurality of CRC channels with the first outbound PDU; a second processing node associating a second of the plurality of CRC channels with a second outbound PDU; and the first and second processing nodes communicating with the transmit handler and pipelining partial CRC calculations for both the first and second CRC channels. 16. The method of claim 10, further comprising: a direct memory access (DMA) controller storing a plurality of partial inbound PDUs as each of the plurality of partial inbound PDUs is received, an inbound PDU comprising the plurality of partial inbound PDUs; and the CRC controller calculating an intermediate CRC value for each of the plurality of partial inbound PDUs as each of the plurality of partial inbound PDUs is received. 17. The method of claim 16, further comprising: the DMA controller comparing a current inbound intermediate CRC value to a received CRC value included within the inbound PDU, the current inbound intermediate CRC value associated with a partial inbound PDU of the plurality of partial inbound PDUs that is received at the end of the inbound PDU; and the DMA controller signaling an error to the CRC controller if the current inbound intermediate CRC value does not match the received CRC value.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.