數(shù)據(jù)幀處理方法和裝置制造方法
【專利摘要】本發(fā)明實施例公開了一種數(shù)據(jù)幀處理方法和裝置,涉及無線通信領(lǐng)域,用于提高系統(tǒng)資源的使用效率和處理性能。本發(fā)明中,在每次周期定時器產(chǎn)生中斷后,在中斷時間內(nèi)從BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀;當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)從BD獲取并處理未被處理的數(shù)據(jù)幀。采用本發(fā)明可以提高系統(tǒng)資源的使用效率和處理性能。
【專利說明】數(shù)據(jù)幀處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無線通信領(lǐng)域,尤其涉及一種數(shù)據(jù)幀處理方法和裝置。
【背景技術(shù)】
[0002]以太網(wǎng)(Ethernet)是一種用途廣泛的嵌入式處理器接口,各家廠商的數(shù)據(jù)信號處理器(Digital Signal Processing,DSP)上都集成了 Ethernet控制器,利用它來連接通用處理器、ARM、PC機,以及在DSP間做數(shù)據(jù)通信。
[0003]目前常見的Ethernet處理接收數(shù)據(jù)時的兩種軟件方法如下:第一,以Ethernet中貞為單位產(chǎn)生接收幀中斷,在中斷處理程序中處理Ethernet的一幀數(shù)據(jù),如圖1中,每個豎箭頭代表接收到一個Ethernet巾貞,產(chǎn)生一次接收巾貞中斷。第二,用定數(shù)器(timer)產(chǎn)生周期中斷,在中斷處理程序中輪詢接收緩存描述符(Buffer Descriptor, BD)鏈,處理本周期內(nèi)接收到的多幀數(shù)據(jù),如圖2中,每個實心豎箭頭代表一次定時器中斷,處理當(dāng)前周期間隔里接收到的所有虛箭頭表示的Ethernet中貞。
[0004]在接收幀中斷中處理接收數(shù)據(jù)是響應(yīng)速度最快的辦法,但在數(shù)據(jù)接收過于頻繁時,反復(fù)進入接收巾貞中斷,會影響處理器整體效率。包大小對ethernet接收效率的影響很大,在接收幾千字節(jié)(分片)的包時,速率可達幾百Mbps,而在接收幾十字節(jié)的包時速率只有一百多Mbps。用接收幀中斷方式處理頻繁接收的小包,效率下降尤其明顯。如圖3所示。
[0005]在Timer周期中斷中批量處理接收數(shù)據(jù),可以減少任務(wù)頻繁切換的次數(shù),提高處理效率,但在數(shù)據(jù)流量較大時往往由于其優(yōu)先級太高導(dǎo)致處理時間太長,長時間占用CPU導(dǎo)致其他優(yōu)先級低的處理模塊無法及時得到處理;且Timer周期在軟件初始化時寫死,無法在線修改,對系統(tǒng)的數(shù)據(jù)實時處理影響較大,如圖4所示,其中虛線頭表示接收到一個Ethernet 中貞。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實施例提供一種數(shù)據(jù)幀處理方法和裝置,用于提高系統(tǒng)資源的使用效率和處理性能。
[0007]—種數(shù)據(jù)幀處理方法,該方法包括:
[0008]在預(yù)先設(shè)定的周期定時器每次超時時,產(chǎn)生中斷,在中斷時間內(nèi)從緩存描述符BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀;
[0009]當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)從BD獲取并處理未被處理的數(shù)據(jù)幀。
[0010]一種數(shù)據(jù)幀處理裝置,該裝置包括:
[0011]第一處理單元,用于在預(yù)先設(shè)定的周期定時器每次超時時,產(chǎn)生中斷,在中斷時間內(nèi)從緩存描述符BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀;
[0012]第二處理單元,用于當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)處理在中斷時間內(nèi)未被處理的數(shù)據(jù)幀。
[0013]本發(fā)明實施例提供的方案中,在每次周期定時器產(chǎn)生中斷后,在中斷時間內(nèi)從BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀;當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)從BD獲取并處理未被處理的數(shù)據(jù)幀;可見,本方案中,不是在中斷時間內(nèi)處理本周期內(nèi)接收到的所有數(shù)據(jù)幀,而是在中斷時間內(nèi)處理數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀,并由優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)處理未被處理的數(shù)據(jù)幀,從而避免了由于中斷程序優(yōu)先級太高導(dǎo)致長時間占用CPU使得其他優(yōu)先級低的處理模塊無法及時得到處理,進而在保證數(shù)據(jù)幀的及時有效處理的同時,降低了對其他處理模塊的影響,提高了系統(tǒng)資源的使用效率和處理性能。
【專利附圖】
【附圖說明】
[0014]圖1為現(xiàn)有技術(shù)中的DSP響應(yīng)Ethernet接收巾貞中斷示意圖;
[0015]圖2為現(xiàn)有技術(shù)中的DSP響應(yīng)定時器中斷處理接收Ethernet幀示意圖;
[0016]圖3為現(xiàn)有技術(shù)中的Ethernet接收巾貞中斷任務(wù)頻繁中斷應(yīng)用任務(wù)示意圖;
[0017]圖4為現(xiàn)有技術(shù)中的定時器中斷任務(wù)處理Ethernet幀示意圖;
[0018]圖5為本發(fā)明實施例提供的方法流程示意圖;
[0019]圖6為本發(fā)明實施例時器中的中斷和優(yōu)先級任務(wù)共同處理Ethernet幀示意圖;
[0020]圖7為本發(fā)明實施例中的Ethernet接收處理流程示意圖;
[0021]圖8A-圖8D為本發(fā)明實施例中的Ethernet接收緩沖區(qū)示意圖;
[0022]圖9為本發(fā)明實施例提供的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0023]為了提高系統(tǒng)資源的使用效率和處理性能,本發(fā)明實施例提供一種數(shù)據(jù)幀處理方法。
[0024]參見圖5,本發(fā)明實施例提供的數(shù)據(jù)幀處理方法,包括以下步驟:
[0025]步驟50:在預(yù)先設(shè)定的周期定時器每次超時時,產(chǎn)生中斷,在中斷時間內(nèi)從BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀;該預(yù)設(shè)門限值為大于O的整數(shù)。
[0026]步驟51:當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)從BD獲取并處理未被處理的數(shù)據(jù)幀。
[0027]具體的,優(yōu)先級接收處理任務(wù)的優(yōu)先級可以低于系統(tǒng)的信令處理任務(wù)的優(yōu)先級。
[0028]進一步的,在不存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。協(xié)議棧處理任務(wù)的優(yōu)先級可以與優(yōu)先級接收處理任務(wù)的優(yōu)先級相同。
[0029]進一步的,在步驟51中優(yōu)先級接收處理任務(wù)處理完成在中斷時間內(nèi)未被處理的數(shù)據(jù)幀后,激活協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)和該優(yōu)先級接收處理任務(wù)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。
[0030]較佳的,當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值或CPU占用率大于設(shè)定閾值時,選擇性丟棄部分?jǐn)?shù)據(jù)幀。設(shè)定閾值可以是大于的數(shù)值;具體的,包括如下兩種情況:
[0031]第一,當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值時,進入緊急模式,在緊急模式下不再從BD獲取新的數(shù)據(jù)幀,僅觸發(fā)協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)和優(yōu)先級接收處理任務(wù)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層;
[0032]第二,當(dāng)CPU占用率大于設(shè)定閾值時,對于在中斷時間內(nèi)和優(yōu)先級接收處理任務(wù)處理的數(shù)據(jù)幀,根據(jù)各數(shù)據(jù)幀的IP頭中的端口號信息選擇性丟棄一定數(shù)量的數(shù)據(jù)幀,比如將IP頭中的端口號為設(shè)定值或在設(shè)定取值范圍內(nèi)的數(shù)據(jù)幀丟棄。
[0033]下面結(jié)合具體實施例對本發(fā)明進行說明:
[0034]本實施例提出了一種Ethernet數(shù)據(jù)幀接收策略,根據(jù)基站系統(tǒng)數(shù)字信號處理器(DSP)的各種壓力情況,靈活變換周期定時器和優(yōu)先級接收處理任務(wù)接收Ethernet數(shù)據(jù)幀的方式,并在CPU壓力過大時進行選擇性丟包,提高效率的同時減少了對DSP上其他模塊的影響,保證基站核心數(shù)據(jù)的優(yōu)先處理。本實施例既保證了基本以太網(wǎng)數(shù)據(jù)的處理實時性,又避免了數(shù)據(jù)流量太大導(dǎo)致DSP其他優(yōu)先級任務(wù)處理不及時的問題。
[0035]如圖6所示,定時器中斷處理完成后根據(jù)Ethernet數(shù)據(jù)幀的接收數(shù)量判斷是否觸發(fā)優(yōu)先級接收處理任務(wù),以及隨后的協(xié)議棧處理任務(wù),使Ethernet數(shù)據(jù)幀的處理可以按部就班的進行,同時也不影響其他高優(yōu)先級任務(wù)的及時運行;并在CPU占用率達到95%時選擇性的丟棄部分Ethernet數(shù)據(jù)巾貞,將Ethernet數(shù)據(jù)巾貞的處理過程對其他模塊的影響降至可接受范圍,做到了既保證Ethernet數(shù)據(jù)幀的實時接收,又兼顧了基站關(guān)鍵信令的及時處理。
[0036]軟件初始化時,分別創(chuàng)建周期定時器和優(yōu)先級接收處理兩種任務(wù),周期定時器的周期默認(rèn)配置為1ms,優(yōu)先級接收處理任務(wù)的優(yōu)先級與協(xié)議棧處理任務(wù)的優(yōu)先級一致,且低于系統(tǒng)主要的信令處理模塊的優(yōu)先級。
[0037]設(shè)置Ims周期定時器處理Ethernet數(shù)據(jù)幀的數(shù)量最大為m,優(yōu)先級接收處理任務(wù)處理Ethernet數(shù)據(jù)巾貞的數(shù)量最大為η個,這樣在Ims保證能夠及時處理的Ethernet數(shù)據(jù)中貞為m個,可以保證基站主要信令的及時傳送。若Ims內(nèi)接收的Ethernet數(shù)據(jù)巾貞小于m個,周期定時器處理完畢后激活協(xié)議棧處理任務(wù),完成組包等功能。若瞬間流量較大(即Ims內(nèi)接收的Ethernet數(shù)據(jù)巾貞大于m個),則Ims周期定時器任務(wù)在處理完成后將激活優(yōu)先級接收處理任務(wù),若沒有更高優(yōu)先級任務(wù)運行,該優(yōu)先級接收處理任務(wù)將開始繼續(xù)處理Ethernet數(shù)據(jù)幀。在優(yōu)先級接收處理任務(wù)啟動時,Ims內(nèi)接收的Ethernet數(shù)據(jù)幀的數(shù)量將可以達到m+n個,優(yōu)先級接收處理任務(wù)處理完成后再觸發(fā)協(xié)議棧處理任務(wù),完成組包等功能。
[0038]DSP的Ethernet數(shù)據(jù)巾貞接收處理流程如圖7所示:
[0039]步驟一:在Ims的周期定時器每次超時時,產(chǎn)生中斷;
[0040]步驟二:中斷服務(wù)程序從BdBuffer中獲取并處理在當(dāng)前Ims周期內(nèi)接收到的數(shù)目不大于m的Ethernet數(shù)據(jù)巾貞;[0041]步驟三:判斷BdBuffer中的Ethernet數(shù)據(jù)巾貞的數(shù)目是否大于m,若是,則到步驟四,否則中斷服務(wù)程序激活協(xié)議棧處理任務(wù),并到步驟五:
[0042]步驟四:激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)從BD獲取并處理未被處理的Ethernet數(shù)據(jù)巾貞;優(yōu)先級接收處理任務(wù)處理完BdBuffer中的Ethernet數(shù)據(jù)巾貞后,激活協(xié)議棧處理任務(wù);
[0043]步驟五:協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對處理后得到的Ethernet數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。
[0044]本實施例中,Ims周期定時器、優(yōu)先級接收處理任務(wù)屬于以太接收任務(wù),協(xié)議棧處理任務(wù)屬于以太包處理任務(wù),共同維護BD緩存區(qū)(BdBuffer)。Tb_buf為循環(huán)鏈表,使用寫指針w_ptr和讀指針r_ptr維護;Free_buf為棧格式,采用壓棧、出棧方式維護,如圖8A所
/Jn ο
[0045]初始化時將BdBuffer中1024個1536字節(jié)緩沖區(qū)指針掛在BD中,剩余512個緩沖區(qū)的指針全部壓入Free_buf ;
[0046]在接收任務(wù)中查詢BD,將接收有效BD中的BdBuffer指針賦值給Tb_buf,并將Tb_buf的寫指針遞增,同時將Free_buf中空閑buff指針出棧并替換BD中BdBuffer指針,F(xiàn)ree_buf的棧指針遞減。
[0047]協(xié)議棧任務(wù)運行后處理Tb_buf中有效的Ethernet巾貞,處理完畢后將Tb_buf讀指針遞增,并將處理過的buf指針壓入Free_buf。
[0048]為保證基站重要信令的及時處理,當(dāng)Ethernet瞬間流量過大或CPU占用率過高時選擇性丟棄部分Ethernet業(yè)務(wù)包,具體包括:
[0049]Ethernet流量過大時的丟包;
[0050]當(dāng)Free_buf中壓入的指針數(shù)量小于門限值m時說明此時有大量Ethernet數(shù)據(jù)中貞被接收,進入緊急模式,緊急模式下不再從BD獲取新的Ethernet數(shù)據(jù)幀,只觸發(fā)協(xié)議棧處理任務(wù)處理接收到的Ethernet數(shù)據(jù)巾貞,當(dāng)Free_buf中指針數(shù)量大于門限值η后解除緊急模式重新開始查詢BD鏈表。
[0051]CPU占用過高時的丟包;
[0052]當(dāng)CPU占用率大于95%時,DSP處于極度繁忙狀態(tài),以太接收任務(wù)根據(jù)各Ethernet數(shù)據(jù)幀的IP頭中的端口號信息選擇性丟棄一定數(shù)量的Ethernet數(shù)據(jù)幀,以保證其他模塊的正常運行。
[0053]下面具體說明:
[0054]BD為記錄緩存區(qū)(buffer)信息的結(jié)構(gòu)描述字,通過配置芯片的BD鏈表寄存器可以將一個一個的接收buffer描述字串聯(lián)起來;當(dāng)接收到新的Ethernet數(shù)據(jù)巾貞時,芯片會將該Ethernet數(shù)據(jù)幀放到某個BD的buffer中,在BD中置相應(yīng)標(biāo)置。用戶只需要查詢各個BD的標(biāo)志位即可知道是否有數(shù)據(jù)更新。所以需要保證BD記錄的buffer為空閑狀態(tài)(即從BD鏈中某個BD上buffer取數(shù)據(jù),需要更新一個新的buffer給這個BD),以支持芯片隨時將新數(shù)據(jù)放進去。
[0055]Ims周期定時器、優(yōu)先級接收處理任務(wù)屬于以太接收任務(wù),協(xié)議棧處理任務(wù)屬于以太包處理任務(wù),共同維護BdBuffer。Tb_buf為循環(huán)鏈表,使用寫指針w_ptr和讀指針r_ptr維護;Free_buf為棧格式,采用壓棧、出棧方式維護;[0056]A、初始化時將BdBuffer中1024個1536字節(jié)緩沖區(qū)指針掛在BD中,Tb_buf的寫指針w_ptr和讀指針r_ptr為O,剩余512個緩沖區(qū)的指針全部壓入Free_buf,則Free_buf的top_ptr為512,如圖8B所示;
[0057]B、在接收任務(wù)中查詢BD,將接收有效BD中BdBuffer指針賦值給Tb_buf,并將Tb_buf的寫指針w_ptr遞增,同時將Free_buf中空閑buf指針出棧并替換BD中BdBuffer指針,F(xiàn)ree_buf的棧指針top_ptr遞減。例如去兩個Ethernet數(shù)據(jù)巾貞后,w_ptr=2, r_ptr=0, top_ptr=509,如圖 8C 所不;
[0058]C、協(xié)議棧處理任務(wù)運行后會判斷Tb_buf中讀寫指針是否相等,若不等則表示收到新的Ethernet數(shù)據(jù)巾貞,處理Tb_buf中有效的Ethernet數(shù)據(jù)巾貞,處理完畢后將Tb_buf讀指針r_ptr遞增(r_ptr=2, w_ptr=2),并將處理過的每個以太巾貞buf的指針壓入Free_buf (top_ptr=509+2),則 Free_buf 的指針 top_ptr 遞增,如圖 8D 所不。
[0059]大壓力模式下流量大的丟包場景,就是在大量的Ethernet數(shù)據(jù)幀到來時導(dǎo)致步驟C無法運行,從而Tb_buf里讀寫指針差距較大,當(dāng)然同時Free_buf里大量buf地址被替換到BD上導(dǎo)致top_ptr指針太小。
[0060]參見圖9,本發(fā)明實施例提供的數(shù)據(jù)幀處理裝置,包括:
[0061]第一處理單元90,用于在預(yù)先設(shè)定的周期定時器每次超時時,產(chǎn)生中斷,在中斷時間內(nèi)從緩存描述符BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀;
[0062]第二處理單元91,用于當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)處理在中斷時間內(nèi)未被處理的數(shù)據(jù)幀。
[0063]進一步的,所述優(yōu)先級接收處理任務(wù)的優(yōu)先級低于系統(tǒng)的信令處理任務(wù)的優(yōu)先級。
[0064]進一步的,所述第一處理單元90還用于:
[0065]在不存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。
[0066]進一步的,所述第二處理單元91還用于:在所述優(yōu)先級接收處理任務(wù)處理完成在中斷時間內(nèi)未被處理的數(shù)據(jù)幀后,激活協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)和該優(yōu)先級接收處理任務(wù)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。
[0067]進一步的,該裝置還包括:
[0068]數(shù)據(jù)幀丟棄單元92,用于當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值或CPU占用率大于設(shè)定閾值時,選擇性丟棄部分?jǐn)?shù)據(jù)幀。
[0069]進一步的,所述數(shù)據(jù)幀丟棄單元92用于:
[0070]當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值時,進入緊急模式,在緊急模式下不再從BD獲取新的數(shù)據(jù)幀,僅觸發(fā)協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)和所述優(yōu)先級接收處理任務(wù)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層;或者,
[0071]當(dāng)CPU占用率大于設(shè)定閾值時,對于在中斷時間內(nèi)和所述優(yōu)先級接收處理任務(wù)處理的數(shù)據(jù)幀,根據(jù)各數(shù)據(jù)幀的IP頭中的端口號信息選擇性丟棄一定數(shù)量的數(shù)據(jù)幀。
[0072]綜上,本發(fā)明的有益效果包括:
[0073]本發(fā)明實施例提供的方案中,在每次周期定時器產(chǎn)生中斷后,在中斷時間內(nèi)從BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀;當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)從BD獲取并處理未被處理的數(shù)據(jù)幀;可見,本方案中,不是在中斷時間內(nèi)處理本周期內(nèi)接收到的所有數(shù)據(jù)幀,而是在中斷時間內(nèi)處理數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀,并由優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)處理未被處理的數(shù)據(jù)幀,從而避免了由于中斷程序優(yōu)先級太高導(dǎo)致長時間占用CPU使得其他優(yōu)先級低的處理模塊無法及時得到處理,進而在保證數(shù)據(jù)幀的及時有效處理的同時,降低了對其他處理模塊的影響,提高了系統(tǒng)資源的使用效率和處理性能。
[0074]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0075]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0076]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0077]盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0078]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)幀處理方法,其特征在于,該方法包括: 在預(yù)先設(shè)定的周期定時器每次超時時,產(chǎn)生中斷,在中斷時間內(nèi)從緩存描述符BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀; 當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)從BD獲取并處理未被處理的數(shù)據(jù)幀。
2.如權(quán)利要求1所述的方法,其特征在于,所述優(yōu)先級接收處理任務(wù)的優(yōu)先級低于系統(tǒng)的信令處理任務(wù)的優(yōu)先級。
3.如權(quán)利要求1所述的方法,其特征在于,在不存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,進一步包括: 激活協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。
4.如權(quán)利要求1所述的方法,其特征在于,在所述優(yōu)先級接收處理任務(wù)處理完成在中斷時間內(nèi)未被處理的數(shù)據(jù)幀后,進一步包括: 激活協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)和該優(yōu)先級接收處理任務(wù)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。
5.如權(quán)利要求1所述的方法,其 特征在于,進一步包括: 當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值或CPU占用率大于設(shè)定閾值時,選擇性丟棄部分?jǐn)?shù)據(jù)幀。
6.如權(quán)利要求5所述的方法,其特征在于,當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值或CPU占用率大于設(shè)定閾值時,選擇性丟棄部分?jǐn)?shù)據(jù)幀,具體包括: 當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值時,進入緊急模式,在緊急模式下不再從BD獲取新的數(shù)據(jù)幀,僅觸發(fā)協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)和所述優(yōu)先級接收處理任務(wù)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層;或者, 當(dāng)CPU占用率大于設(shè)定閾值時,對于在中斷時間內(nèi)和所述優(yōu)先級接收處理任務(wù)處理的數(shù)據(jù)幀,根據(jù)各數(shù)據(jù)幀的IP頭中的端口號信息選擇性丟棄一定數(shù)量的數(shù)據(jù)幀。
7.一種數(shù)據(jù)幀處理裝置,其特征在于,該裝置包括: 第一處理單元,用于在預(yù)先設(shè)定的周期定時器每次超時時,產(chǎn)生中斷,在中斷時間內(nèi)從緩存描述符BD獲取并處理在本周期內(nèi)接收到的數(shù)目不大于預(yù)設(shè)門限值的數(shù)據(jù)幀; 第二處理單元,用于當(dāng)存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活優(yōu)先級接收處理任務(wù),該優(yōu)先級接收處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,繼續(xù)處理在中斷時間內(nèi)未被處理的數(shù)據(jù)幀。
8.如權(quán)利要求7所述的裝置,其特征在于,所述優(yōu)先級接收處理任務(wù)的優(yōu)先級低于系統(tǒng)的信令處理任務(wù)的優(yōu)先級。
9.如權(quán)利要求7所述的裝置,其特征在于,所述第一處理單元還用于: 在不存在中斷時間內(nèi)未被處理的數(shù)據(jù)幀時,激活協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。
10.如權(quán)利要求7所述的裝置,其特征在于,所述第二處理單元還用于:在所述優(yōu)先級接收處理任務(wù)處理完成在中斷時間內(nèi)未被處理的數(shù)據(jù)幀后,激活協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)和該優(yōu)先級接收處理任務(wù)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包提交給應(yīng)用層。
11.如權(quán)利要求7所述的裝置,其特征在于,該裝置還包括: 數(shù)據(jù)幀丟棄單元,用于當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值或CPU占用率大于設(shè)定閾值時,選擇性丟棄部分?jǐn)?shù)據(jù)幀。
12.如權(quán)利要求11所述的裝置,其特征在于,所述數(shù)據(jù)幀丟棄單元用于: 當(dāng)接收到的數(shù)據(jù)幀的數(shù)量大于設(shè)定閾值時,進入緊急模式,在緊急模式下不再從BD獲取新的數(shù)據(jù)幀,僅觸發(fā)協(xié)議棧處理任務(wù),該協(xié)議棧處理任務(wù)在沒有比自身優(yōu)先級高的其他處理任務(wù)運行時,對在中斷時間內(nèi)和所述優(yōu)先級接收處理任務(wù)處理后得到的數(shù)據(jù)幀進行協(xié)議棧處理,并將得到的數(shù)據(jù)包 提交給應(yīng)用層;或者, 當(dāng)CPU占用率大于設(shè)定閾值時,對于在中斷時間內(nèi)和所述優(yōu)先級接收處理任務(wù)處理的數(shù)據(jù)幀,根據(jù)各數(shù)據(jù)幀的IP頭中的端口號信息選擇性丟棄一定數(shù)量的數(shù)據(jù)幀。
【文檔編號】H04L12/861GK103428108SQ201310342340
【公開日】2013年12月4日 申請日期:2013年8月7日 優(yōu)先權(quán)日:2013年8月7日
【發(fā)明者】雷文, 侯彥龍 申請人:大唐移動通信設(shè)備有限公司