接收緩存描述符隊(duì)列維護(hù)方法及設(shè)備的制作方法
【專利摘要】本發(fā)明提出接收緩存描述符隊(duì)列維護(hù)方法及設(shè)備。方法包括:在每個(gè)BD指向的Buffer中預(yù)留一區(qū)域,該區(qū)域用于存放該Buffer指向的BD的地址;當(dāng)Target設(shè)備將報(bào)文寫入Head指針指向BD對(duì)應(yīng)的Buffer時(shí),在該Buffer的預(yù)留區(qū)域中寫入該BD的地址,將報(bào)文描述信息寫入該BD,將Head指針向前挪動(dòng)到指向下一個(gè)BD。本發(fā)明提高了接收BD隊(duì)列的容錯(cuò)性。
【專利說明】接收緩存描述符隊(duì)列維護(hù)方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及BD (Buffer Descriptor,緩存描述符)【技術(shù)領(lǐng)域】,尤其涉及接收BD隊(duì)列維護(hù)方法及設(shè)備。
【背景技術(shù)】
[0002]當(dāng)CPU (Central Processing Unit,中央處理單兀)通過 PCI (PeripheralComponent Interconnect,外圍組件互連)或者PCIE(Peripheral Component InterconnectExpress,快捷外圍組件互連)等總線同業(yè)務(wù)接口相連時(shí),一般都采用BD (BufferDescriptor,緩存描述符)隊(duì)列的方式來實(shí)現(xiàn)報(bào)文的收發(fā)處理。BD的主要內(nèi)容如表1所示,每個(gè)BD都指向一個(gè)Buffer (緩存),該Buffer用于緩存報(bào)文數(shù)據(jù),BD本身則包含著對(duì)該報(bào)文的描述信息,如表1所不,BD中主要包含:
[0003]Valid (有效)標(biāo)識(shí):指示Buffer中是否包含有效的報(bào)文數(shù)據(jù);
[0004]SOP (Start of Packet,包頭)/EOP (End of Packet,包尾):指不 Buffer 中的報(bào)文數(shù)據(jù)是否包頭或者包尾;
[0005]CMD (Command,命令)/Status (狀態(tài)):指示Buffer中的報(bào)文數(shù)據(jù)是否有錯(cuò)誤等;
[0006]報(bào)文長(zhǎng)度:表示Buffer中的報(bào)文數(shù)據(jù)長(zhǎng)度;
[0007]Buffer地址:表示該BD指向的Buffer地址。
[0008]
【權(quán)利要求】
1.一種接收緩存描述符BD隊(duì)列維護(hù)方法,其特征在于,該方法包括: 在每個(gè)BD指向的緩存Buffer中預(yù)留一區(qū)域,該區(qū)域用于存放該Buffer指向的BD的地址; 當(dāng)目標(biāo)Target設(shè)備將報(bào)文寫入頭Head指針指向BD對(duì)應(yīng)的Buffer時(shí),在該Buffer的預(yù)留區(qū)域中寫入該BD的地址,將報(bào)文描述信息寫入該BD,將Head指針向前挪動(dòng)到指向下一個(gè)BD。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法進(jìn)一步包括: 主機(jī)Host設(shè)備查看尾Tail指針指向的BD,讀取該BD的有效Valid標(biāo)識(shí),若該標(biāo)識(shí)指示“有效”,則讀取該BD對(duì)應(yīng)Buffer的預(yù)留區(qū)域,若讀取到信息且該信息為該BD的地址,則確認(rèn)報(bào)文沒有丟失,從該Buffer中取出報(bào)文數(shù)據(jù)交給上層模塊處理,為該BD分配預(yù)留區(qū)域?yàn)榭盏腂uffer,同時(shí)將Tail指針向前挪動(dòng)到指向下一個(gè)BD ;若未讀取到信息或者讀取到的信息不為該BD的地址,確認(rèn)報(bào)文丟失,直接將Tail指針向前挪動(dòng)到指向下一個(gè)BD。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法進(jìn)一步包括=Target設(shè)備按策略對(duì)接收BD隊(duì)列的狀態(tài)作快照,并將該狀態(tài)快照同步到Host設(shè)備,該狀態(tài)快照包含接收BD隊(duì)列中的BD的實(shí)時(shí)狀態(tài):有效或者無效。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述Host設(shè)備讀取該BD的Valid標(biāo)識(shí)之后,進(jìn)一步包括: 若該標(biāo)識(shí)指示“無效”,則從狀態(tài)快照中讀取該BD的狀態(tài),若該狀態(tài)為“有效”,則確認(rèn)該BD的真正狀態(tài)為“有效”,確認(rèn)該BD中的信息丟失,將Tail指針向前挪動(dòng)到指向下一個(gè)BD,將狀態(tài)快照中該BD的狀態(tài)由`“有效”更新為“無效”;若該狀態(tài)為“無效”,則確認(rèn)該BD真正“無效”,不作進(jìn)一步處理。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述Host設(shè)備讀取該BD的Valid標(biāo)識(shí)之后,進(jìn)一步包括: 若該Valid標(biāo)識(shí)指示“有效”,則讀取該BD對(duì)應(yīng)Buffer的預(yù)留區(qū)域,若讀取到信息且該信息為該BD的地址,則確認(rèn)報(bào)文沒有丟失,從該Buffer中取出報(bào)文數(shù)據(jù)交給上層模塊處理,為該BD分配預(yù)留區(qū)域?yàn)榭盏腂uffer,同時(shí)將Tail指針向前挪動(dòng)到指向下一個(gè)BD,且,將狀態(tài)快照中該BD的狀態(tài)更新為“無效”;若未讀取到信息或者讀取到的信息不為該BD的地址,確認(rèn)報(bào)文丟失,直接將Tail指針向前挪動(dòng)到指向下一個(gè)BD,且,將狀態(tài)快照中該BD的狀態(tài)更新為“無效”。
6.一種接收緩存描述符BD隊(duì)列維護(hù)方法,其特征在于,該方法包括: 主機(jī)Host設(shè)備查看尾Tail指針指向的BD,讀取該BD的有效Valid標(biāo)識(shí),若該標(biāo)識(shí)指示“有效”,則讀取該BD對(duì)應(yīng)緩存Buffer的預(yù)留區(qū)域,若讀取到信息且該信息為該BD的地址,則確認(rèn)報(bào)文沒有丟失,從該Buffer中取出報(bào)文數(shù)據(jù)交給上層模塊處理,為該BD分配預(yù)留區(qū)域?yàn)榭盏腂uffer,同時(shí)將Tail指針向前挪動(dòng)到指向下一個(gè)BD ;若未讀取到信息或者讀取到的信息不為該BD的地址,確認(rèn)報(bào)文丟失,直接將Tail指針向前挪動(dòng)到指向下一個(gè)BD ; 其中,Host設(shè)備從BD對(duì)應(yīng)Buffer的預(yù)留區(qū)域中讀取到的該BD的地址為:Target設(shè)備將報(bào)文寫入該BD對(duì)應(yīng)的該Buffer時(shí),在該Buffer的預(yù)留區(qū)域中寫入的。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法進(jìn)一步包括: Host設(shè)備接收Target設(shè)備發(fā)來的接收BD隊(duì)列的狀態(tài)快照,該狀態(tài)快照包含了接收BD隊(duì)列中的BD的實(shí)時(shí)狀態(tài):有效或無效,以該狀態(tài)快照更新自身保存的接收BD隊(duì)列的狀態(tài)快眧.>、、、? 且,當(dāng)Host設(shè)備在從Buffer的預(yù)留區(qū)域讀取到信息且該信息為該BD的地址,或者未讀取到信息或者讀取到的信息不為該BD的地址時(shí),所述將Tail指針向前挪動(dòng)到指向下一個(gè)BD進(jìn)一步包括:將狀態(tài)快照中該BD的狀態(tài)更新為“無效”。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述Host設(shè)備讀取該BD的Valid標(biāo)識(shí)之后,進(jìn)一步包括: 若該標(biāo)識(shí)指示“無效”,則從狀態(tài)快照中讀取該BD的狀態(tài),若該狀態(tài)為“有效”,則確認(rèn)該BD的真正狀態(tài)為“有效”,確認(rèn)該BD中的信息丟失,將Tail指針向前挪動(dòng)到指向下一個(gè)BD,將狀態(tài)快照中該BD的狀態(tài)更新為“無效”;若該狀態(tài)為“無效”,則確認(rèn)該BD真正“無效”,不作進(jìn)一步處理。
9.一種目標(biāo)Target設(shè)備,其特征在于,該設(shè)備包括: 報(bào)文寫入模塊:當(dāng)將報(bào)文寫入頭Head指針指向緩存描述符BD對(duì)應(yīng)的緩存Buffer時(shí),在該Buffer的預(yù)留區(qū)域中寫入該BD的地址,將報(bào)文描述信息寫入該BD,將Head指針向前挪動(dòng)到指向下一個(gè)BD。
10.根據(jù)權(quán)利要求9所述的Target設(shè)備,其特征在于,所述Target設(shè)備進(jìn)一步包括: 狀態(tài)快照同步模塊:按策略對(duì)接收BD隊(duì)列的狀態(tài)作快照,并將該狀態(tài)快照同步到Host設(shè)備,該狀態(tài)快照包含接收BD隊(duì)列中的BD的實(shí)時(shí)狀態(tài):有效或者無效。
11.一種主機(jī)Host設(shè)備,其特征在于,該設(shè)備包括: 報(bào)文讀取模塊:查看尾Tail指針指向的緩存描述符BD,讀取該BD的有效Valid標(biāo)識(shí),若該標(biāo)識(shí)指示“有效”,則讀取該BD對(duì)應(yīng)緩存Buffer的預(yù)留區(qū)域,若讀取到信息且該信息為該BD的地址,則確認(rèn)報(bào)文沒有丟失,從該Buffer中取出報(bào)文數(shù)據(jù)交給上層模塊處理,為該BD分配預(yù)留區(qū)域?yàn)榭盏腂uffer,同時(shí)將Tail指針向前挪動(dòng)到指向下一個(gè)BD ;若未讀取到信息或者讀取到的信息不為該BD的地址,確認(rèn)報(bào)文丟失,直接將Tail指針向前挪動(dòng)到指向下一個(gè)BD ;其中,從該BD對(duì)應(yīng)Buffer的預(yù)留區(qū)域中讀取到的該BD的地址為:目標(biāo)Target設(shè)備將報(bào)文寫入該BD對(duì)應(yīng)的該Buffer時(shí),在該Buffer的預(yù)留區(qū)域中寫入的。
12.根據(jù)權(quán)利要求11所述的Host設(shè)備,其特征在于,該Host設(shè)備進(jìn)一步包括:狀態(tài)快照接收保存模塊,用于接收Target設(shè)備發(fā)來的BD隊(duì)列的狀態(tài)快照,該狀態(tài)快照包含了接收BD隊(duì)列中的BD的實(shí)時(shí)狀態(tài):有效或者無效,以該狀態(tài)快照更新自身保存的接收BD隊(duì)列的狀態(tài)快照; 且,所述報(bào)文讀取模塊在從Buffer的預(yù)留區(qū)域讀取到信息且該信息為該BD的地址,或者未讀取到信息或者讀取到的信息不為該BD的地址時(shí),所述將Tail指針向前挪動(dòng)到指向下一個(gè)BD進(jìn)一步包括:將狀態(tài)快照中該BD的狀態(tài)更新為“無效”。
13.根據(jù)權(quán)利要求12所述的Host設(shè)備,其特征在于,所述報(bào)文讀取模塊讀取該BD的Valid標(biāo)識(shí)之后,進(jìn)一步用于,若該標(biāo)識(shí)指示“無效”,則從狀態(tài)快照接收模塊收到的狀態(tài)快照中讀取該BD的狀態(tài),若該狀態(tài)為“有效”,則確認(rèn)該BD的真正狀態(tài)為“有效”,確認(rèn)該BD中的信息丟失,將Tail指針向前挪動(dòng)到指向下一個(gè)BD,將狀態(tài)快照接收保存模塊保存的狀態(tài)快照中該BD的狀態(tài)更新為“無效”;若該狀態(tài)為“無效”,則確認(rèn)該BD真正“無效”,不作進(jìn)一步處理。
【文檔編號(hào)】H04L12/879GK103685068SQ201310659137
【公開日】2014年3月26日 申請(qǐng)日期:2013年12月6日 優(yōu)先權(quán)日:2013年12月6日
【發(fā)明者】楊逸 申請(qǐng)人:杭州華三通信技術(shù)有限公司