[發明專利]一種驅動接收報文的方法及裝置有效
| 申請號: | 201110248360.X | 申請日: | 2011-08-26 |
| 公開(公告)號: | CN102255818A | 公開(公告)日: | 2011-11-23 |
| 發明(設計)人: | 曹淋 | 申請(專利權)人: | 邁普通信技術股份有限公司 |
| 主分類號: | H04L12/56 | 分類號: | H04L12/56 |
| 代理公司: | 成都虹橋專利事務所 51124 | 代理人: | 李順德 |
| 地址: | 610041 四川省*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 驅動 接收 報文 方法 裝置 | ||
技術領域
本發明涉及路由器數據通信技術,特別涉及驅動報文接收的方法。
背景技術
目前網絡設備中,設備驅動軟件接收數據普遍采用緩沖區描述符(BD)環機制。如圖1所示,BD環是驅動軟件101與硬件收發器102之間的一個數據緩沖。在設備內存103中分配BD?104,每個BD?104由狀態標志(Status?&?Control,SC)和報文緩沖指針(Packet?Pointer,PP)組成,狀態標志指示這個BD是空閑的還是有報文需要處理的,報文緩沖指針指向一塊用于存放待處理的報文內存區域,即該指針指向報文存放的位置。每個BD的結構如圖2所示,其SC標志中的E標志位指示該BD對應的緩沖區是否空閑,E標志位為0表示該BD中有報文待處理,為1表示該BD對應的緩沖區空閑;W標志位指示該BD是否為BD環的最后一個BD,W標志位為1表示其為最后一個BD,否則為0。多個BD?104首尾相接組成BD環。BD環是驅動軟件101與硬件收發器102之間的一個數據緩沖。
軟硬件分別通過BD環的讀指針和寫索引對BD環進行相關操作。當硬件接收到報文時,判斷BD環的寫指針當前所對應的BD的E標志位是否為1,如果為1,則把報文存放到該BD的報文緩沖指針所指向的緩沖區中,保存完成后,設置對應BD的E標志位為0,如果當前BD的W標志位為1,則令BD環寫指針為0,否則令BD環寫指針指向BD環的下一個BD。最后,通知驅動軟件報文處理接收的報文。
通常,驅動軟件得到硬件接收完成通知后,判斷BD環的讀指針當前所對應的BD的E標志位是否為0,如果為0,首先取出該BD的報文緩沖指針所指向緩沖區的報文(即保存BD的報文緩沖指針);然后,并在內存申請分配一個新的報文緩沖區,并設置該BD的報文緩沖指針指向新的報文緩沖區,設置該BD的SC標志中的E標志位為1,如果當前BD的SC標志中的W標志位為1,則令BD環讀指針為0,否則令BD環讀指針指向BD環的下一個BD。為了實現軟硬件并行工作,驅動軟件可以連續執行該過程,直到BD環的讀指針所對應的BD的E標志位等于1為止。
上述驅動接收報文的方法是低效的,因為每次從BD中取報文時,都需要申請分配一個新的報文緩沖區。如果一個系統每秒鐘處理的報文數目為N,那么在接收報文的過程中,驅動軟件會調用N次報文緩沖區的分配函數。對于一個高速轉發系統而言,這個開銷是非常大的,特別是緩沖區分配函數的處理時間過長時,開銷更加明顯。
發明內容
本發明的目的就是克服目前驅動接收報文的方法中由于報文緩沖區分配函數的處理時間過長的缺點,提供一種驅動接收報文的方法。
本發明解決其技術問題,采用的技術方案是,驅動報文接收方法,其特征在于,包括以下步驟:
A.預先分配一定數目的報文緩沖區,并為每個報文緩沖區創建對應的報文描述符,保存每個報文緩沖區的地址指針到其對應的報文描述符中,將所有報文描述符組織成一個報文描述符鏈;
B.將所述每個報文描述符的地址指針依次組織成一個報文描述符棧;所述報文描述符棧的棧首存放的是報文描述符鏈的首地址;
C.驅動軟件接收報文時,判斷BD環中有報文的連續的BD的個數,依據報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符,并更新報文描述符鏈和報文描述符棧;
D.驅動軟件從步驟C中所述的有報文的BD中接收報文后,依次根據取出的報文描述符中的報文緩沖區的地址指針更新所述BD中的報文緩沖區指針。
具體的,步驟C中,判斷BD環中有報文的連續的BD的個數,是指判斷BD環中E標志位為有報文狀態的連續的BD個數。
優選的,步驟C中,驅動軟件接收報文時,判斷BD環中有報文的連續的BD的個數后,再判斷報文描述符棧中是否有足夠的報文描述符,如是,則依據報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符;否則,驅動軟件觸發報文緩沖區的分配及對應的報文描述符的創建,并將所述創建的報文描述符加入到報文描述符鏈并填充報文描述符棧,依據更新后的報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符。
優選的,步驟C中,依據報文描述符棧的棧首從報文描述符鏈中取出對應個數的報文描述符,是指從報文描述符鏈中取出含有對應個數的報文描述符的子鏈,并返回該子鏈的首地址給驅動軟件。
具體的,步驟D中,驅動軟件從每個BD中接收報文后,還要設置該BD的E標志位為空閑的狀態。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于邁普通信技術股份有限公司,未經邁普通信技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110248360.X/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:印刷裝置、印刷方法、印刷數據生成程序
- 下一篇:插座及具備該插座的充電裝置





