一種應(yīng)用于具有多cpu和網(wǎng)卡的系統(tǒng)的網(wǎng)卡驅(qū)動(dòng)方法
【專(zhuān)利摘要】本發(fā)明提供了一種應(yīng)用于具有多CPU和網(wǎng)卡的系統(tǒng)的網(wǎng)卡驅(qū)動(dòng)方法,包括網(wǎng)卡驅(qū)動(dòng)過(guò)程一和二,且在各個(gè)CPU中創(chuàng)建數(shù)據(jù)接收設(shè)備隊(duì)列和數(shù)據(jù)發(fā)送設(shè)備隊(duì)列;網(wǎng)卡驅(qū)動(dòng)過(guò)程一包括:①在數(shù)據(jù)到達(dá)網(wǎng)卡時(shí),產(chǎn)生硬件中斷,關(guān)閉硬件中斷,調(diào)用中斷處理進(jìn)程;②將網(wǎng)卡添加至一CPU的數(shù)據(jù)接收設(shè)備隊(duì)列中;③重新開(kāi)啟硬件中斷,設(shè)置軟中斷,中斷處理進(jìn)程返回;網(wǎng)卡驅(qū)動(dòng)過(guò)程二包括:軟中斷輪詢;對(duì)于軟中斷置位的CPU,先掃描其數(shù)據(jù)接收設(shè)備隊(duì)列,依次對(duì)該隊(duì)列中的網(wǎng)卡進(jìn)行數(shù)據(jù)讀取處理,再依次對(duì)其數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中的設(shè)備進(jìn)行數(shù)據(jù)發(fā)送處理。本發(fā)明大大縮短了硬件中斷上半部分處理時(shí)間,并將硬件中斷下半部的處理任務(wù)分?jǐn)偟礁鱾€(gè)CPU上,從而提高了系統(tǒng)性能。
【專(zhuān)利說(shuō)明】—種應(yīng)用于具有多CPU和網(wǎng)卡的系統(tǒng)的網(wǎng)卡驅(qū)動(dòng)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種應(yīng)用于具有多CPU和網(wǎng)卡的系統(tǒng)的網(wǎng)卡驅(qū)動(dòng)方法。
【背景技術(shù)】
[0002]通常,Iinux系統(tǒng)的網(wǎng)卡驅(qū)動(dòng)過(guò)程主要包括兩部分。
[0003]如圖1所示,網(wǎng)卡驅(qū)動(dòng)過(guò)程的上半部包括:
101、在來(lái)自通信對(duì)端的以太網(wǎng)數(shù)據(jù)傳輸?shù)奖径说木W(wǎng)卡后,系統(tǒng)產(chǎn)生硬件中斷,同時(shí)關(guān)閉硬件中斷,即此時(shí)不會(huì)再接收網(wǎng)絡(luò)中斷。
[0004]102、硬件中斷產(chǎn)生后,系統(tǒng)CPU調(diào)用上述網(wǎng)卡在open時(shí)注冊(cè)的中斷處理函數(shù),進(jìn)行以下中斷處理:首先從網(wǎng)卡的數(shù)據(jù)寄存器中讀取所接收的以太網(wǎng)數(shù)據(jù);然后創(chuàng)建一塊緩存(skb_buf),將以太網(wǎng)數(shù)據(jù)寫(xiě)入到該緩存中;之后將該緩存以結(jié)構(gòu)鏈表的方式掛入到上述網(wǎng)卡的接收隊(duì)列中。
[0005]網(wǎng)卡的接收隊(duì)列其實(shí)就是一個(gè)鏈表,是用來(lái)臨時(shí)存放skb_buf對(duì)象實(shí)例的;所有網(wǎng)卡在將接收到的數(shù)據(jù)寫(xiě)入Skb_buf之后都會(huì)將此skb_buf鏈入到其接收隊(duì)列中,接收隊(duì)列中的各skb_buf將在網(wǎng)絡(luò)驅(qū)動(dòng)過(guò)程的下半部分被取出發(fā)送至協(xié)議棧。
[0006]103、在網(wǎng)卡設(shè)備接收完數(shù)據(jù)之后,將該網(wǎng)卡掛到當(dāng)前CPU的設(shè)備隊(duì)列中,然后設(shè)置軟中斷,等待在軟中斷中繼續(xù)處理數(shù)據(jù)。CPU的設(shè)備隊(duì)列用以維護(hù)當(dāng)前所有需要處理的網(wǎng)絡(luò)設(shè)備。
[0007]104、重新開(kāi)啟硬件中斷,此時(shí)系統(tǒng)可再次響應(yīng)硬件中斷。
[0008]如圖2所示,網(wǎng)卡驅(qū)動(dòng)過(guò)程的下半部包括:
201、系統(tǒng)在進(jìn)行軟中斷輪詢時(shí),由于在上半部設(shè)置了軟中斷,因此發(fā)現(xiàn)CPU的軟中斷被置位。
[0009]202、依次對(duì)CPU的設(shè)備隊(duì)列中各網(wǎng)卡設(shè)備所接收到的以太網(wǎng)數(shù)據(jù)進(jìn)行處理:首先從CPU的設(shè)備隊(duì)列中取得網(wǎng)卡設(shè)備,再?gòu)脑摼W(wǎng)卡設(shè)備的接收隊(duì)列中取得數(shù)據(jù)包,根據(jù)包頭內(nèi)容做相應(yīng)的處理之后就將該數(shù)據(jù)包送往網(wǎng)絡(luò)協(xié)議棧。
[0010]203、數(shù)據(jù)處理完畢后,從CPU的設(shè)備隊(duì)列中移出數(shù)據(jù)處理完畢的網(wǎng)卡設(shè)備,同時(shí)關(guān)閉軟中斷。
[0011 ] 但是上述網(wǎng)卡驅(qū)動(dòng)流程在應(yīng)用于具有多個(gè)CPU和網(wǎng)卡的系統(tǒng)中時(shí),上半部分中的關(guān)閉硬件中斷、CPU申請(qǐng)內(nèi)存及讀取寄存器中的數(shù)據(jù)、將數(shù)據(jù)寫(xiě)入內(nèi)存中、將內(nèi)存以skb_buf結(jié)構(gòu)的形式掛入設(shè)備隊(duì)列、將該設(shè)備掛入到CPU維護(hù)的設(shè)備隊(duì)列中等等這一系列的操作將會(huì)耗費(fèi)大量時(shí)間,使得系統(tǒng)對(duì)下一次硬件中斷處理將不及時(shí)。如果硬件中斷很頻繁,而此時(shí)系統(tǒng)處于硬件關(guān)中斷狀態(tài),即使系統(tǒng)中有其他CPU處于空閑狀態(tài),那中斷請(qǐng)求也得不到及時(shí)處理。因而,有必要對(duì)此驅(qū)動(dòng)方法進(jìn)行改進(jìn)。
【發(fā)明內(nèi)容】
[0012]本發(fā)明的目的在于提供一種網(wǎng)卡驅(qū)動(dòng)方法,應(yīng)用于具有多CPU和網(wǎng)卡的系統(tǒng),縮短系統(tǒng)處于硬件中斷關(guān)閉狀態(tài)的時(shí)間,提高對(duì)新的硬件中斷的響應(yīng)速度。
[0013]本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
一種應(yīng)用于具有多CPU和網(wǎng)卡的系統(tǒng)的網(wǎng)卡驅(qū)動(dòng)方法,包括網(wǎng)卡驅(qū)動(dòng)過(guò)程一和網(wǎng)卡驅(qū)動(dòng)過(guò)程二,還包括步驟:在各個(gè)CPU的數(shù)據(jù)結(jié)構(gòu)中分別創(chuàng)建數(shù)據(jù)接收設(shè)備隊(duì)列和數(shù)據(jù)發(fā)送設(shè)備隊(duì)列,初始化為空;
所述網(wǎng)卡驅(qū)動(dòng)過(guò)程一具體包括:
①在通信對(duì)端的以太網(wǎng)數(shù)據(jù)到達(dá)網(wǎng)卡時(shí),產(chǎn)生硬件中斷,同時(shí)關(guān)閉硬件中斷,調(diào)用中斷處理進(jìn)程;
②將所述網(wǎng)卡添加至一CPU的數(shù)據(jù)接收設(shè)備隊(duì)列中;
③重新開(kāi)啟硬件中斷,同時(shí)設(shè)置所述網(wǎng)卡當(dāng)前所處數(shù)據(jù)接收設(shè)備隊(duì)列所屬的CPU軟中斷,所述中斷處理進(jìn)程返回;
所述網(wǎng)卡驅(qū)動(dòng)過(guò)程二具體包括:
進(jìn)行軟中斷輪詢;對(duì)于軟中斷置位的CPU,
先掃描其數(shù)據(jù)接收設(shè)備隊(duì)列,依次對(duì)該數(shù)據(jù)接收設(shè)備隊(duì)列中的每個(gè)網(wǎng)卡進(jìn)行處理:先從設(shè)備寄存器中讀取相應(yīng)的數(shù)據(jù),將數(shù)據(jù)打包后掛入當(dāng)前網(wǎng)卡的數(shù)據(jù)接收鏈表中;然后從數(shù)據(jù)接收設(shè)備隊(duì)列中摘除當(dāng)前網(wǎng)卡,并將當(dāng)前網(wǎng)卡掛入一 CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中;再依次對(duì)其數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中的設(shè)備進(jìn)行處理:將當(dāng)前網(wǎng)卡的數(shù)據(jù)接收鏈表中的數(shù)據(jù)處理后發(fā)送至協(xié)議棧。
[0014]其中,所述步驟②,將所述網(wǎng)卡添加至一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列的過(guò)程進(jìn)一步包括:
所述中斷處理進(jìn)程輪詢各CPU,查看所述網(wǎng)卡存在于當(dāng)前CPU的數(shù)據(jù)接收設(shè)備隊(duì)列還是數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,
若存在于當(dāng)前CPU的數(shù)據(jù)接收設(shè)備隊(duì)列,則跳轉(zhuǎn)至步驟③;
若存在于當(dāng)前CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡移到一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列后跳轉(zhuǎn)至步驟③;
若不存在于任一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列及數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡添加至一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列中,之后跳轉(zhuǎn)至步驟③。
[0015]其中,所述步驟②中,在中斷處理進(jìn)程輪詢各CPU的過(guò)程中,若所述網(wǎng)卡存在于當(dāng)前CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡移到負(fù)載最少的CPU的數(shù)據(jù)接收設(shè)備隊(duì)列后跳
轉(zhuǎn)至步驟③。
[0016]其中,所述步驟②中,在中斷處理進(jìn)程輪詢各CPU的過(guò)程中,若所述網(wǎng)卡存在于當(dāng)前CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡移到當(dāng)前CPU的數(shù)據(jù)接收設(shè)備隊(duì)列后跳轉(zhuǎn)至步驟③。
[0017]其中,所述步驟②中,在中斷處理進(jìn)程輪詢各CPU的過(guò)程中,若所述網(wǎng)卡不存在于任一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列及數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡添加至負(fù)載最少的CPU的數(shù)據(jù)接收設(shè)備隊(duì)列,之后跳轉(zhuǎn)至步驟③。
[0018]其中,所述網(wǎng)卡驅(qū)動(dòng)過(guò)程二中,在將當(dāng)前網(wǎng)卡從軟中斷置位的CPU的數(shù)據(jù)接收設(shè)備隊(duì)列中摘除后,將該網(wǎng)卡掛入負(fù)載最少的CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中。[0019]其中,判定其數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中設(shè)備數(shù)量最少的CPU為負(fù)載最少的CPU。
[0020]與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下有益效果:
本發(fā)明實(shí)施例大大縮短了硬件中斷上半部分處理時(shí)間,從而能夠很快的處理其他中斷,并將硬件中斷下半部的處理任務(wù)分?jǐn)偟礁鱾€(gè)CPU上,從而提高了系統(tǒng)性能,尤其對(duì)硬件中斷共享這種情況,系統(tǒng)性能會(huì)顯著提高。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0021]圖1是現(xiàn)有技術(shù)中網(wǎng)卡驅(qū)動(dòng)方法的上半部分流程圖。
[0022]圖2是現(xiàn)有技術(shù)中網(wǎng)卡驅(qū)動(dòng)方法的下半部分流程圖。
[0023]圖3是本發(fā)明實(shí)施例中網(wǎng)卡驅(qū)動(dòng)方法的上半部分流程圖。
[0024]圖4是本發(fā)明實(shí)施例中網(wǎng)卡驅(qū)動(dòng)方法的下半部分流程圖。
【具體實(shí)施方式】
[0025]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0026]根據(jù)網(wǎng)卡驅(qū)動(dòng)分為上下兩部分的設(shè)計(jì)思想,為了能夠快速響應(yīng)網(wǎng)絡(luò)硬件中斷,需要再次壓縮中斷上半部的處理時(shí)間。現(xiàn)有技術(shù)中上半部的處理操作為申請(qǐng)內(nèi)存(SKB)、讀取寄存器,將讀取內(nèi)容做簡(jiǎn)單操作之后放入設(shè)備的接收隊(duì)列中,再將設(shè)備加入CPU的設(shè)備隊(duì)列中。本發(fā)明的改進(jìn)方法是,只執(zhí)行最后一步,即將中斷設(shè)備添加到CPU的設(shè)備隊(duì)列后,便重新開(kāi)啟硬件中斷,讓中斷處理例程返回就行了,所有剩下的處理放在下半部執(zhí)行。
[0027]為了實(shí)現(xiàn)上述改進(jìn)方法,本實(shí)施例中需要在CPU的數(shù)據(jù)結(jié)構(gòu)中創(chuàng)建兩個(gè)設(shè)備隊(duì)列,分別為數(shù)據(jù)接收設(shè)備隊(duì)列(以下簡(jiǎn)稱(chēng)隊(duì)列A)和數(shù)據(jù)發(fā)送設(shè)備隊(duì)列(以下簡(jiǎn)稱(chēng)隊(duì)列B),隊(duì)列A用以掛載需要從網(wǎng)卡寄存器中讀取數(shù)據(jù)的網(wǎng)卡設(shè)備,隊(duì)列B用以掛載已經(jīng)從寄存器中讀取出數(shù)據(jù)繽并等待將數(shù)據(jù)發(fā)送至協(xié)議棧的網(wǎng)卡設(shè)備。具體地,在網(wǎng)卡設(shè)備需要從寄存器中讀取數(shù)據(jù)時(shí),將該網(wǎng)卡設(shè)備掛到隊(duì)列A中,在網(wǎng)卡設(shè)備成功讀取數(shù)據(jù)之后將其從隊(duì)列A移至隊(duì)列B中,在網(wǎng)卡設(shè)備所讀取的數(shù)據(jù)發(fā)送至協(xié)議棧之后將其從隊(duì)列B中移除。本實(shí)施例中,隊(duì)列A的優(yōu)先級(jí)比隊(duì)列B的要高,隊(duì)列A中的網(wǎng)卡設(shè)備全部處理完之后再處理隊(duì)列B中的設(shè)備。在隊(duì)列A中摘除設(shè)備時(shí),可以根據(jù)當(dāng)前CPU的負(fù)載情況,將設(shè)備掛到其他CPU的隊(duì)列B中,由其他CPU處理數(shù)據(jù),這樣可以形成三級(jí)流水線的模式,理論上可以提高系統(tǒng)性能。
[0028]請(qǐng)參閱圖3,本實(shí)施例中網(wǎng)卡驅(qū)動(dòng)的上半部流程具體為:
301、以太網(wǎng)數(shù)據(jù)包到達(dá)網(wǎng)卡,產(chǎn)生硬件中斷,同時(shí)關(guān)閉硬件中斷,調(diào)用中斷處理進(jìn)程進(jìn)行中斷處理。
[0029]302、中斷處理進(jìn)程輪詢CPU,判斷該網(wǎng)卡設(shè)備存在于哪個(gè)CPU的隊(duì)列A或者隊(duì)列B中。由于系統(tǒng)中不會(huì)有特別多的CPU,也不會(huì)有特別多的網(wǎng)卡設(shè)備(包括虛擬網(wǎng)絡(luò)設(shè)備),因而此輪詢操作不會(huì)影響性能。
[0030]判斷結(jié)果存在以下幾種情況:
Cl)設(shè)備在隊(duì)列A中,則跳轉(zhuǎn)到步驟303 ;
(2)設(shè)備在隊(duì)列B中,則先將該設(shè)備移到隊(duì)列A中,再跳轉(zhuǎn)到步驟303 ; (3)設(shè)備不在隊(duì)列A或隊(duì)列B中,則先將該設(shè)備掛到當(dāng)前CPU的隊(duì)列A中,再跳轉(zhuǎn)到步驟 303。
[0031]303、重新開(kāi)啟硬件中斷,設(shè)置軟中斷,中斷處理進(jìn)程返回。
[0032]請(qǐng)參閱圖4,本實(shí)施例中網(wǎng)卡驅(qū)動(dòng)的下半部流程具體為:
401、軟中斷輪詢。判斷當(dāng)前CPU的軟中斷是否置位,未置位則查詢下一個(gè)CPU。
[0033]402、如當(dāng)前CPU已置位,則掃描其設(shè)備隊(duì)列A。
[0034](I)若隊(duì)列A不為空,則依次處理該隊(duì)列中的每一個(gè)設(shè)備后再跳轉(zhuǎn)至步驟403:先讀取設(shè)備寄存器,將數(shù)據(jù)組織成包的格式掛入到該設(shè)備的接收隊(duì)列(即該設(shè)備自己維護(hù)的一個(gè)數(shù)據(jù)接收鏈表)中;然后從隊(duì)列A中摘除該設(shè)備,并尋找負(fù)載輕的CPU,將該設(shè)備掛入負(fù)載輕的CPU的隊(duì)列B中。可以通過(guò)查看CPU的設(shè)備隊(duì)列B中掛載的設(shè)備數(shù)量來(lái)判斷CPU的
負(fù)載輕重。
[0035](2)若隊(duì)列A為空,那么直接跳轉(zhuǎn)至步驟403。
[0036]403、對(duì)當(dāng)前CPU的隊(duì)列B中設(shè)備進(jìn)行處理,處理流程和現(xiàn)有技術(shù)中流程一樣,將數(shù)據(jù)簡(jiǎn)單的處理一下就送往協(xié)議棧。
[0037]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種應(yīng)用于具有多CPU和網(wǎng)卡的系統(tǒng)的網(wǎng)卡驅(qū)動(dòng)方法,包括網(wǎng)卡驅(qū)動(dòng)過(guò)程一和網(wǎng)卡驅(qū)動(dòng)過(guò)程二,其特征在于,還包括步驟:在各個(gè)CPU的數(shù)據(jù)結(jié)構(gòu)中分別創(chuàng)建數(shù)據(jù)接收設(shè)備隊(duì)列和數(shù)據(jù)發(fā)送設(shè)備隊(duì)列,初始化為空; 所述網(wǎng)卡驅(qū)動(dòng)過(guò)程一具體包括: ①在通信對(duì)端的以太網(wǎng)數(shù)據(jù)到達(dá)網(wǎng)卡時(shí),產(chǎn)生硬件中斷,同時(shí)關(guān)閉硬件中斷,調(diào)用中斷處理進(jìn)程; ②將所述網(wǎng)卡添加至一CPU的數(shù)據(jù)接收設(shè)備隊(duì)列中; ③重新開(kāi)啟硬件中斷,同時(shí)設(shè)置所述網(wǎng)卡當(dāng)前所處數(shù)據(jù)接收設(shè)備隊(duì)列所屬的CPU軟中斷,所述中斷處理進(jìn)程返回; 所述網(wǎng)卡驅(qū)動(dòng)過(guò)程二具體包括: 進(jìn)行軟中斷輪詢;對(duì)于軟中斷置位的CPU, 先掃描其數(shù)據(jù)接收設(shè)備隊(duì)列,依次對(duì)該數(shù)據(jù)接收設(shè)備隊(duì)列中的每個(gè)網(wǎng)卡進(jìn)行處理:先從設(shè)備寄存器中讀取相應(yīng)的數(shù)據(jù),將數(shù)據(jù)打包后掛入當(dāng)前網(wǎng)卡的數(shù)據(jù)接收鏈表中;然后從數(shù)據(jù)接收設(shè)備隊(duì)列中摘除當(dāng)前網(wǎng)卡,并將當(dāng)前網(wǎng)卡掛入一 CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中; 再依次對(duì)其數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中的設(shè)備進(jìn)行處理:將當(dāng)前網(wǎng)卡的數(shù)據(jù)接收鏈表中的數(shù)據(jù)處理后發(fā)送至協(xié)議棧。
2.如權(quán)利要求1所述的網(wǎng)卡驅(qū)動(dòng)方法,其特征在于,所述步驟②,將所述網(wǎng)卡添加至一CPU的數(shù)據(jù)接收設(shè)備隊(duì)列的過(guò)程進(jìn)一步包括: 所述中斷處理進(jìn)程輪詢各CPU,查看所述網(wǎng)卡存在于當(dāng)前CPU的數(shù)據(jù)接收設(shè)備隊(duì)列還是數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中, 若存在于當(dāng)前CPU的數(shù)據(jù)接收設(shè)備隊(duì)列,則跳轉(zhuǎn)至步驟③; 若存在于當(dāng)前CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡移到一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列后跳轉(zhuǎn)至步驟③; 若不存在于任一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列及數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡添加至一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列中,之后跳轉(zhuǎn)至步驟③。
3.如權(quán)利要求2所述的網(wǎng)卡驅(qū)動(dòng)方法,其特征在于,所述步驟②中,在中斷處理進(jìn)程輪詢各CPU的過(guò)程中,若所述網(wǎng)卡存在于當(dāng)前CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡移到負(fù)載最少的CPU的數(shù)據(jù)接收設(shè)備隊(duì)列后跳轉(zhuǎn)至步驟③。
4.如權(quán)利要求2所述的網(wǎng)卡驅(qū)動(dòng)方法,其特征在于,所述步驟②中,在中斷處理進(jìn)程輪詢各CPU的過(guò)程中,若所述網(wǎng)卡存在于當(dāng)前CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡移到當(dāng)前CPU的數(shù)據(jù)接收設(shè)備隊(duì)列后跳轉(zhuǎn)至步驟③。
5.如權(quán)利要求2所述的網(wǎng)卡驅(qū)動(dòng)方法,其特征在于,所述步驟②中,在中斷處理進(jìn)程輪詢各CPU的過(guò)程中,若所述網(wǎng)卡不存在于任一 CPU的數(shù)據(jù)接收設(shè)備隊(duì)列及數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中,則將該網(wǎng)卡添加至負(fù)載最少的CPU的數(shù)據(jù)接收設(shè)備隊(duì)列,之后跳轉(zhuǎn)至步驟③。
6.如權(quán)利要求1所述的網(wǎng)卡驅(qū)動(dòng)方法,其特征在于,所述網(wǎng)卡驅(qū)動(dòng)過(guò)程二中,在將當(dāng)前網(wǎng)卡從軟中斷置位的CPU的數(shù)據(jù)接收設(shè)備隊(duì)列中摘除后,將該網(wǎng)卡掛入負(fù)載最少的CPU的數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中。
7.如權(quán)利要求3、5或6所述的網(wǎng)卡驅(qū)動(dòng)方法,其特征在于,該方法中,判定其數(shù)據(jù)發(fā)送設(shè)備隊(duì)列中設(shè)備數(shù)量最少的CPU為負(fù)載最少的CPU。
【文檔編號(hào)】G06F13/10GK103440213SQ201310309455
【公開(kāi)日】2013年12月11日 申請(qǐng)日期:2013年7月23日 優(yōu)先權(quán)日:2013年7月23日
【發(fā)明者】劉炳偉, 王金桂 申請(qǐng)人:深圳市共進(jìn)電子股份有限公司