專(zhuān)利名稱(chēng):解決wlan接收緩沖區(qū)占用問(wèn)題的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種解決WLAN中接收緩沖區(qū)被無(wú)效數(shù)據(jù)占用的方法和硬件部件。
背景技術(shù):
在無(wú)線(xiàn)局域網(wǎng)中,由于網(wǎng)絡(luò)環(huán)境復(fù)雜,為了提高可靠性,需要將MSDU或MMDU分解為較小長(zhǎng)度的多個(gè)分段發(fā)送,這個(gè)規(guī)程稱(chēng)為分段;每個(gè)MSDU/MMPDU最多可以分為16個(gè)分段。每個(gè)分段由幀頭和幀體兩個(gè)部分構(gòu)成,幀頭從MSDU/MMPDU復(fù)制過(guò)來(lái),但是需要對(duì)其中的分段序號(hào)字段和多分段字段進(jìn)行設(shè)置。第一個(gè)分段的分段序號(hào)字段為0,以后分段依次按1遞增。除了最后一個(gè)分段的多分段字段設(shè)置為0外,其他所有分段的多分段字段設(shè)置為1。
對(duì)于接收方,需要將多個(gè)分段進(jìn)行組合構(gòu)成單個(gè)的MSDU或MMDU,這個(gè)規(guī)程稱(chēng)為重組。
當(dāng)一個(gè)STA發(fā)送某個(gè)MSDU分段的過(guò)程中,可能出現(xiàn)中斷,而隨后競(jìng)爭(zhēng)到信道并且發(fā)送MSDU/MMPDU幀的可能是另一個(gè)STA,這就導(dǎo)致接受方在一段時(shí)間內(nèi)可能無(wú)法接收到MSDU/MMPDU的完整分段,那么已接收的分段就需要存儲(chǔ)在接收緩沖區(qū)內(nèi)。而且由于信道競(jìng)爭(zhēng)的隨機(jī)性,接收方無(wú)法預(yù)測(cè)某個(gè)MSDU/MMDU的隨后分段會(huì)在什么時(shí)候發(fā)送,也就無(wú)法預(yù)計(jì)何時(shí)可以接收完整。
基于如上分析可知,在一段時(shí)間內(nèi),接收方一側(cè)會(huì)保持有多個(gè)不完整得MSDU/MMPDU的分段,如果某個(gè)MSDU/MMPDU的后續(xù)分段一直不能到達(dá),那么其已經(jīng)接收到的分段就會(huì)一直占用接收存儲(chǔ)容量。最終導(dǎo)致后續(xù)到達(dá)的MSDU/MMPDU無(wú)法接收,即使該MSDU/MMPDU沒(méi)有進(jìn)行分段。這個(gè)問(wèn)題就是接收緩沖區(qū)無(wú)效占用問(wèn)題。
該問(wèn)題不僅出現(xiàn)在未完成接收分段上。另一種情況是,如果某個(gè)MSDU/MMPDU已經(jīng)接收完整,但是由于某些原因,沒(méi)有能夠被處理,形成一個(gè)死數(shù)據(jù),也會(huì)導(dǎo)致對(duì)接收緩沖區(qū)的一直占用。
請(qǐng)參閱圖1,該圖顯示了一個(gè)由于接收分段不完整導(dǎo)致的接收緩存區(qū)無(wú)效占用情況。
(1)MSDU/MMPDU接收緩存區(qū)保持了若干個(gè)MSDU/MMPDU的分段,導(dǎo)致剩余空閑空間很少。
(2)在一段時(shí)間內(nèi),由于保持的MSDU/MMPDU都無(wú)法接收完整,那么接收緩存區(qū)被一直占用。
(3)在此期間,任何到達(dá)的MSDU/MMPDU都無(wú)法有足夠的空間被接收,即使它沒(méi)有分段。
(4)如果沒(méi)有合適的方法,除非某個(gè)存儲(chǔ)的MSDU/MMPDU被接收完整,否則存儲(chǔ)區(qū)會(huì)被一直占用,導(dǎo)致通信中斷。
為避免這一問(wèn)題,WLAN MAC協(xié)議提供了一種使用MSDU/MMPDU最長(zhǎng)接收時(shí)間進(jìn)行規(guī)避的方法。方法定義目的SAT應(yīng)為每個(gè)正被接收的MSDU/MMPDU維護(hù)一個(gè)接收定時(shí)器,該定時(shí)器有一個(gè)屬性aMaxReceiveLifeTime,定義了接收一個(gè)MSDU/MMPDU所允許的最長(zhǎng)時(shí)間。接收定時(shí)器從MSDU/MMPDU第一個(gè)分段到達(dá)時(shí)開(kāi)始計(jì)數(shù),如果超出最長(zhǎng)接收時(shí)間,則目的STA將丟棄所有已接收的該MSDU/MMPDU分段。協(xié)議同時(shí)定義,實(shí)現(xiàn)應(yīng)該至少能同時(shí)保證三個(gè)MSDU/MMPDU的分段接收,所以必須至少同時(shí)維護(hù)三個(gè)接收定時(shí)器。最長(zhǎng)接收時(shí)間的閥值aMaxReceiveLifeTime由實(shí)現(xiàn)者進(jìn)行定義和調(diào)整。
根據(jù)該方法的一個(gè)直觀(guān)實(shí)現(xiàn),就是為每個(gè)MSDU/MMPDU維護(hù)一個(gè)定時(shí)器。在硬件實(shí)現(xiàn)上,就必須根據(jù)最多可能存放的MSDU/MMPDU,預(yù)先定義相應(yīng)數(shù)量的定時(shí)器。并且為每個(gè)MSDU/MMPDU定義記錄到達(dá)時(shí)間的寄存器。因?yàn)镸SDU/MMPDU幀,其最小長(zhǎng)度和最大長(zhǎng)度差別能達(dá)到10倍以上,這意味著如果按照協(xié)議定義,維持至少三幀數(shù)據(jù)的接收緩沖區(qū),那么可能存放的小數(shù)據(jù)幀在3×10=30幀,需要預(yù)先定義極大數(shù)量的定時(shí)器。
由上述分析可知,該方法有如下缺點(diǎn)(1)需要預(yù)先定義大量定時(shí)器,成本高。
(2)大部分情況下,定時(shí)器都處于空閑狀態(tài),實(shí)現(xiàn)效率低。
(3)較多的定時(shí)器本身消耗較高的功耗。
對(duì)該方法的一個(gè)改進(jìn)是,為每個(gè)MSDU/MMPDU分配一個(gè)到達(dá)時(shí)間寄存器,同時(shí)定義一個(gè)共用定時(shí)器。當(dāng)MSDU/MMPDU第一次到達(dá)時(shí)填寫(xiě)其對(duì)應(yīng)的到達(dá)時(shí)間寄存器。共用定時(shí)器每隔一段時(shí)間就觸發(fā)一次對(duì)所有的MSDU/MMPDU的輪詢(xún),該輪詢(xún)根據(jù)當(dāng)前時(shí)間和到達(dá)時(shí)間寄存器地差值,判斷是否到達(dá)最長(zhǎng)接收時(shí)間,如果到達(dá),那么就釋放該MSDU/MMPDU占用空間。
請(qǐng)參閱圖2,該圖示意了這一結(jié)構(gòu)。
該方法有了很大的改進(jìn),但是由于使用了定時(shí)進(jìn)行輪詢(xún)機(jī)制,所以有如下缺點(diǎn)(1)因?yàn)槎〞r(shí)粒度不能太大,所以輪詢(xún)次數(shù)較高,導(dǎo)致不必要的處理消耗。
(2)緩沖區(qū)管理不能夠根據(jù)通信情況自適應(yīng),導(dǎo)致無(wú)論接收緩沖區(qū)占用情況如何,都使用同一策略。比如如果目前緩沖區(qū)內(nèi)占用少的話(huà),可以允許未接收完整的MSDU/MMPDU的分段多保持一段時(shí)間,這樣有利于提高通信性能。
(3)定時(shí)器實(shí)現(xiàn)關(guān)聯(lián)與系統(tǒng)時(shí)鐘頻率,相對(duì)復(fù)雜。同時(shí),因?yàn)楸硎疽粋€(gè)時(shí)間至少需要8個(gè)字節(jié),比較浪費(fèi)硬件資源。
發(fā)明內(nèi)容
本發(fā)明提供一種解決由于接收分段不完整或者死數(shù)據(jù)導(dǎo)致的接收緩存區(qū)無(wú)效占用問(wèn)題的方法和硬件部件,本發(fā)明能夠在解決問(wèn)題的基礎(chǔ)上,同時(shí)具有自適應(yīng)能力,并且能夠保持較小的處理頻度。
本發(fā)明公開(kāi)了一種硬件部件,能夠很好的解決由于接收分段不完整或者死數(shù)據(jù)導(dǎo)致的接收緩存區(qū)無(wú)效占用問(wèn)題。該部件包括一個(gè)接收緩存區(qū)RxBuff;一個(gè)RxBuff分片數(shù)據(jù)管理寄存器;一個(gè)頭記錄寄存器;一個(gè)當(dāng)前記錄寄存器;一個(gè)最早有效記錄寄存器;一個(gè)分片釋放配置寄存器。
其中,所述接收緩存區(qū),按M字節(jié)為單位劃分為N片,用于存儲(chǔ)MSDU/MMPDU的數(shù)據(jù)。
所述RxBuff分片數(shù)據(jù)管理寄存器,共分為K條管理記錄,每條記錄唯一標(biāo)志了一個(gè)MSDU/MMPDU,也保存了該MSDU/MMPDU的第一個(gè)分片數(shù)據(jù)和最后一個(gè)分片數(shù)據(jù)的位置信息。通過(guò)管理記錄,可以唯一確定一個(gè)MSDU/MMPDU,也能夠唯一定位該MSDU/MMPDU在RxBuff中的存放位置。
所述分片管理寄存器中的管理記錄包括如下字段(1)MACC地址字段記錄了接收數(shù)據(jù)的來(lái)源MAC地址;(2)MSDU/MMPDU序號(hào)字段記錄了MSDU/MMPDU的唯一序號(hào);(3)分段序號(hào)字段記錄了MSDU/MMPDU中其中一個(gè)分段的唯一序號(hào);(4)幀接收狀態(tài)字段標(biāo)志了該MSDU/MMPDU接收狀態(tài),狀態(tài)包括接收完成,接收未完成和數(shù)據(jù)無(wú)效。初始化為無(wú)效。
(5)首分片索引字段記錄了該MSDU/MMPDU第一個(gè)分片在RxBuff中的位置。
(6)尾分片索引字段記錄了該MSDU/MMPDU最后一個(gè)分片在RxBuff中的位置。
(7)分片總計(jì)字段記錄了MSDU/MMPDU總共占用了多少個(gè)分片。
所述頭記錄寄存器,指向所述分片數(shù)據(jù)管理寄存器中的最新有效記錄。
所述當(dāng)前記錄寄存器,指向所述分片數(shù)據(jù)管理寄存器中的當(dāng)前操作有效記錄。
所述最早有效記錄寄存器,指向所述分片數(shù)據(jù)管理寄存器中的記錄中,建立最早的有效記錄。
所謂有效記錄,是指該記錄所確定的MSDU/MMPDU及其其分段還存在于接收緩存區(qū)中,也即占用有緩存區(qū)。
所述分片釋放配置寄存器,用于設(shè)置一個(gè)數(shù)值,該數(shù)值表示了在需要進(jìn)行RxBuff空間釋放時(shí),需要最少釋放多少個(gè)分片。
本發(fā)明同時(shí)也公開(kāi)了一種用于解決WLAN中接收MSDU/MMDU緩沖區(qū)被無(wú)效數(shù)據(jù)占用的方法,用于在上述各組成部件之間建立聯(lián)系,解決由于接收分段不完整或者死數(shù)據(jù)導(dǎo)致接收緩存區(qū)的占用問(wèn)題,從而提高通信效率。它包括以下步驟(1)一個(gè)MSDU/MMPDU的數(shù)據(jù)到達(dá)時(shí),該數(shù)據(jù)可以是該MSDU/MMPDU的任意分段,硬件接收到M個(gè)字節(jié)后,形成一個(gè)分片,判斷該分片是否是某個(gè)分段的第一個(gè)分片,如果不是第一個(gè)分片,那么轉(zhuǎn)(5)。如果是第一個(gè)分片,轉(zhuǎn)(2);(2)一個(gè)分片數(shù)據(jù)內(nèi)部包含有該MSDU/MMPDU的幀頭信息,硬件提取幀頭中標(biāo)識(shí)信息,并比對(duì)標(biāo)識(shí)信息和RxBuff分片管理寄存器中的管理記錄,判斷該數(shù)據(jù)是否合法。如果不合法,轉(zhuǎn)(3);否則,判斷該信息是否表明是一個(gè)新的MSDU/MMPDU,如果是那么轉(zhuǎn)(4),如果不是,轉(zhuǎn)(5)。
(3)丟棄該不合法的分段數(shù)據(jù)。
(4)在RxBuff分片管理寄存器中增加一條記錄,更新當(dāng)前記錄寄存器和首記錄寄存器,然后轉(zhuǎn)(5);(5)查看RxBuff分片占用情況,如果空閑分片低于閥值,轉(zhuǎn)(6),否則轉(zhuǎn)(7);(6)從最早有效記錄寄存器指向的記錄開(kāi)始,逐條釋放記錄所標(biāo)識(shí)的MSDU/MMPDU占用的RxBuff分片空間,直到釋放的分片數(shù)達(dá)到分片釋放配置寄存器中的數(shù)值。然后轉(zhuǎn)(7)。
(7)將該分片數(shù)據(jù)放入到一個(gè)RxBuff分片中,轉(zhuǎn)(8)。
(8)重復(fù)上述過(guò)程,直到MSDU/MMPDU標(biāo)志信息中顯示接收完整,轉(zhuǎn)(9)。
(9)接收緩存部件提示MSDU/MMPDU接收完整,請(qǐng)求上層提取數(shù)據(jù);如果該數(shù)據(jù)被提取,那么釋放其占用的RxBuff分片空間;如果最早有效記錄寄存器正好指向該記錄,那么從該記錄開(kāi)始,逐條查找,直到找到一條有效記錄,將最早有效記錄寄存器指向該查找到的記錄。
步驟(4)進(jìn)一步說(shuō)明(1)將首記錄寄存器指向的記錄下移一條,并更新首記錄寄存器指向該記錄。如果該記錄的幀接收狀態(tài)字段標(biāo)識(shí)為有效狀態(tài),那么釋放該記錄指向的MSDU/MMPDU所占用的RxBuff分片,然后轉(zhuǎn)(2)。否則轉(zhuǎn)(2)。
(2)保存該記錄內(nèi)存放提取到的標(biāo)識(shí)信息和分片位置信息。轉(zhuǎn)(3)。
(3)更新當(dāng)前記錄寄存器,指向本記錄。
步驟(6)進(jìn)一步說(shuō)明(1)釋放最早有效記錄寄存器指向的記錄所標(biāo)識(shí)的MSDU/MMPDU占用的分片。判斷釋放分片是否等于釋放配置寄存器內(nèi)的數(shù)值,如果等于,轉(zhuǎn)(3),否則轉(zhuǎn)(2)。
(2)從最早有效記錄寄存器指向的記錄下移一條記錄,判斷該記錄的幀接收狀態(tài)字段,如果該字段內(nèi)容為無(wú)效,那么繼續(xù)下移,直到到達(dá)一條有效記錄,轉(zhuǎn)(1);否則轉(zhuǎn)(3)。
(3)下移記錄直到到達(dá)一條有效記錄,將最早有效記錄寄存器指向該記錄。
由上述描述可知,本發(fā)明只有在空閑內(nèi)存小于閥值的時(shí)候才進(jìn)行RxBuff的釋放。同時(shí),最早有效寄存器總是指向最早到達(dá)但是一直沒(méi)有完成的MSDU/MMPDU,或者是完成但是未被上層提取得死數(shù)據(jù)。通過(guò)本發(fā)明描述的方法,就能夠?qū)崿F(xiàn)只有必要的時(shí)候才進(jìn)行空間釋放,而且總是先釋放在緩存中存在時(shí)間最長(zhǎng)的數(shù)據(jù)。同時(shí),如果在接收緩沖區(qū)沒(méi)有到達(dá)閥值得情況下,也就是通信緩慢地情況下,允許未完成MSDU/MMPDU等待較長(zhǎng)的時(shí)間以提高接收效率;在通信繁忙的情況下,則會(huì)盡快釋放等待時(shí)間長(zhǎng)的未完成數(shù)據(jù),提高通信效率。
本發(fā)明具有以下優(yōu)點(diǎn)(1)本發(fā)明只有必要的時(shí)候才進(jìn)行空間釋放,而不需要定時(shí)的進(jìn)行輪詢(xún)。
(2)本發(fā)明總是先釋放在緩存中存在時(shí)間最長(zhǎng)的數(shù)據(jù),該數(shù)據(jù)包括未完成的MSDU/MMPDU,也包括完成但是未處理的死數(shù)據(jù)。從而完全解決無(wú)效數(shù)據(jù)占用問(wèn)題。
(3)本發(fā)明在通信緩慢地情況下,允許未完成MSDU/MMPDU等待較長(zhǎng)的時(shí)間以提高接收效率;在通信繁忙的情況下,則會(huì)盡快釋放等待時(shí)間長(zhǎng)的未完成數(shù)據(jù)以提高通信效率,具有自適應(yīng)性。
(4)本發(fā)明未使用定時(shí)器和時(shí)間存儲(chǔ)寄存器,減小了實(shí)現(xiàn)的復(fù)雜度和成本。
圖1為無(wú)效數(shù)據(jù)占用問(wèn)題示意圖;圖2為使用共用計(jì)時(shí)器解決無(wú)效數(shù)據(jù)占用問(wèn)題的硬件裝置的結(jié)構(gòu)示意圖;圖3為實(shí)現(xiàn)本發(fā)明所述方法的硬件裝置的結(jié)構(gòu)示意圖;
圖4是基于圖3硬件裝置的解決接收緩存區(qū)占用問(wèn)題的處理流程圖。
具體實(shí)施例方式
本發(fā)明的具體實(shí)施基本和本發(fā)明說(shuō)明書(shū)中所闡述的結(jié)構(gòu)和原理一致。以下結(jié)合附圖,具體說(shuō)明本發(fā)明。
本發(fā)明公開(kāi)了一種硬件部件,能夠很好的解決由于接收分段不完整或者死數(shù)據(jù)導(dǎo)致的接收緩存區(qū)無(wú)效占用問(wèn)題。該部件包括一個(gè)接收緩存區(qū)RxBuff;一個(gè)RxBuff分片數(shù)據(jù)管理寄存器;一個(gè)頭記錄寄存器;一個(gè)當(dāng)前記錄寄存器;一個(gè)最早有效記錄寄存器;一個(gè)分片釋放配置寄存器。
請(qǐng)參閱圖3,其為本發(fā)明利用上述結(jié)構(gòu)實(shí)現(xiàn)的硬件部件結(jié)構(gòu)示意圖。根據(jù)本示意圖,本硬件部件由上述4個(gè)部分構(gòu)成。
其中,所述接收緩存區(qū),按M字節(jié)為單位劃分為N片,用于存儲(chǔ)MSDU/MMPDU的數(shù)據(jù)。
所述RxBuff分片數(shù)據(jù)管理寄存器,共分為K條管理記錄,每條記錄唯一標(biāo)志了一個(gè)MSDU/MMPDU,也保存了該MSDU/MMPDU的第一個(gè)分片數(shù)據(jù)和最后一個(gè)分片數(shù)據(jù)的位置信息。通過(guò)管理記錄,可以唯一確定一個(gè)MSDU/MMPDU,也能夠唯一定位該MSDU/MMPDU在RxBuff中的存放位置。
所述分片管理寄存器中的管理記錄包括如下字段(1)MACC地址字段記錄了接收數(shù)據(jù)的來(lái)源MAC地址;(2)MSDU/MMPDU序號(hào)字段記錄了MSDU/MMPDU的唯一序號(hào);(3)分段序號(hào)字段記錄了MSDU/MMPDU中其中一個(gè)分段的唯一序號(hào);(4)幀接收狀態(tài)字段標(biāo)志了該MSDU/MMPDU接收狀態(tài),狀態(tài)包括接收完成,接收未完成和數(shù)據(jù)無(wú)效。初始化為無(wú)效。
(5)首分片索引字段記錄了該MSDU/MMPDU第一個(gè)分片在RxBuff中的位置。
(6)尾分片索引字段記錄了該MSDU/MMPDU最后一個(gè)分片在RxBuff中的位置。
(7)分片總計(jì)字段記錄了MSDU/MMPDU總共占用了多少個(gè)分片。
所述頭記錄寄存器,指向所述分片數(shù)據(jù)管理寄存器中的最新有效記錄。
所述當(dāng)前記錄寄存器,指向所述分片數(shù)據(jù)管理寄存器中的當(dāng)前操作有效記錄。
所述最早有效記錄寄存器,指向所述分片數(shù)據(jù)管理寄存器中的記錄中,建立最早的有效記錄。
所謂有效記錄,是指該記錄所確定的MSDU/MMPDU及其其分段還存在于接收緩存區(qū)中,也即占用有緩存區(qū)。
所述分片釋放配置寄存器,用于設(shè)置一個(gè)數(shù)值,該數(shù)值表示了在需要進(jìn)行RxBuff空間釋放時(shí),需要最少釋放多少個(gè)分片。
請(qǐng)參閱圖4,該圖描述了使用上述說(shuō)明的硬件部件,解決接收緩沖區(qū)無(wú)效數(shù)據(jù)占用問(wèn)題的流程,具體步驟如下,(1)一個(gè)MSDU/MMPDU的數(shù)據(jù)到達(dá)時(shí),該數(shù)據(jù)可以是該MSDU/MMPDU的任意分段,硬件接收到M個(gè)字節(jié)后,形成一個(gè)分片,判斷該分片是否是某個(gè)分段的第一個(gè)分片,如果不是第一個(gè)分片,那么轉(zhuǎn)(5)。如果是第一個(gè)分片,轉(zhuǎn)(2);(2)第一個(gè)分片數(shù)據(jù)內(nèi)部包含有該MSDU/MMPDU的幀頭信息,硬件提取幀頭中標(biāo)識(shí)信息,并比對(duì)標(biāo)識(shí)信息和RxBuff分片管理寄存器中的管理記錄,判斷該數(shù)據(jù)是否合法。如果不合法,轉(zhuǎn)(3);否則,判斷該信息是否表明是一個(gè)新的MSDU/MMPDU,如果是那么轉(zhuǎn)(4),如果不是,轉(zhuǎn)(5)。
(3)丟棄該不合法的分段數(shù)據(jù)。
(4)在RxBuff分片管理寄存器中增加一條記錄,更新當(dāng)前記錄寄存器和首記錄寄存器,然后轉(zhuǎn)(5);(5)查看RxBuff分片占用情況,如果空閑分片低于閥值,轉(zhuǎn)(6),否則轉(zhuǎn)(7);(6)從最早有效記錄寄存器指向的記錄開(kāi)始,逐條釋放記錄所標(biāo)識(shí)的MSDU/MMPDU占用的RxBuff分片空間,直到釋放的分片數(shù)達(dá)到分片釋放配置寄存器中的數(shù)值。然后轉(zhuǎn)(7)。
(7)該分片數(shù)據(jù)放入到一個(gè)RxBuff分片中,轉(zhuǎn)(8)。
(8)重復(fù)上述過(guò)程,直到MSDU/MMPDU標(biāo)志信息中顯示接收完整,請(qǐng)求上層提取數(shù)據(jù);轉(zhuǎn)(9)。
(9)如果該數(shù)據(jù)被提取,那么釋放其占用的RxBuff分片空間;如果最早有效記錄寄存器正好指向該記錄,那么轉(zhuǎn)(10)。
(10)從該記錄開(kāi)始,逐條查找,直到找到一條有效記錄,將最早有效記錄寄存器指向該查找到的記錄。
以上公開(kāi)的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但本發(fā)明的保護(hù)范圍并不局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種解決WLAN中接收MSDU/MMDU緩沖區(qū)被無(wú)效數(shù)據(jù)占用的方法和裝置,其特征在于硬件部件包括一個(gè)接收緩存區(qū)RxBuff;一個(gè)RxBuff分片數(shù)據(jù)管理寄存器;一個(gè)頭記錄寄存器;一個(gè)當(dāng)前記錄寄存器;一個(gè)最早有效記錄寄存器;一個(gè)分片釋放配置寄存器。
2.如權(quán)利要求1所述其特征在于,所述分片管理寄存器中的管理記錄包括MACC地址字段;MSDU/MMPDU序號(hào)字段;分段序號(hào)字段;幀接收狀態(tài)字段;首分片索引字段;尾分片索引字段;分片總計(jì)字段。
3.根據(jù)權(quán)利要求1所述其特征在于,包括以下步驟(1)當(dāng)一個(gè)MSDU/MMPDU的數(shù)據(jù)到達(dá)時(shí),該數(shù)據(jù)可以是該MSDU/MMPDU的任意分段,硬件接收到M個(gè)字節(jié)后,形成一個(gè)分片,判斷該分片是否是某個(gè)分段的第一個(gè)分片,如果不是第一個(gè)分片,那么轉(zhuǎn)(5)。如果是第一個(gè)分片,轉(zhuǎn)(2);(2)第一個(gè)分片數(shù)據(jù)內(nèi)部包含有該MSDU/MMPDU的幀頭信息,硬件提取幀頭中標(biāo)識(shí)信息,并比對(duì)標(biāo)識(shí)信息和RxBuff分片管理寄存器中的管理記錄,判斷該數(shù)據(jù)是否合法。如果不合法,轉(zhuǎn)(3);否則,判斷該信息是否表明是一個(gè)新的MSDU/MMPDU,如果是那么轉(zhuǎn)(4),如果不是,轉(zhuǎn)(5)。(3)丟棄該不合法的分段數(shù)據(jù)。(4)在RxBuff分片管理寄存器中增加一條記錄,更新當(dāng)前記錄寄存器和首記錄寄存器,然后轉(zhuǎn)(5);(5)查看RxBuff分片占用情況,如果空閑分片低于閥值,轉(zhuǎn)(6),否則轉(zhuǎn)(7);(6)從最早有效記錄寄存器指向的記錄開(kāi)始,逐條釋放記錄所標(biāo)識(shí)的MSDU/MMPDU占用的RxBuff分片空間,直到釋放的分片數(shù)達(dá)到分片釋放配置寄存器中的數(shù)值。然后轉(zhuǎn)(7)。(7)將該分片數(shù)據(jù)放入到一個(gè)空閑的RxBuff分片中,轉(zhuǎn)(8)。(8)重復(fù)上述過(guò)程,直到MSDU/MMPDU標(biāo)志信息中顯示接收完整,轉(zhuǎn)(9)。(9)接收緩存部件提示MSDU/MMPDU接收完整,請(qǐng)求上層提取數(shù)據(jù);如果該數(shù)據(jù)被提取,那么釋放其占用的RxBuff分片空間;如果最早有效記錄寄存器正好指向該記錄,那么從該記錄開(kāi)始,逐條查找,直到找到一條有效記錄,將最早有效記錄寄存器指向該查找到的記錄。
4.如權(quán)利要求3所述其特征在于,步驟(4)進(jìn)一步包括(1)將首記錄寄存器指向的記錄下移一條,并更新首記錄寄存器指向該記錄。如果該記錄的幀接收狀態(tài)字段標(biāo)識(shí)為有效狀態(tài),那么釋放該記錄指向的MSDU/MMPDU所占用的RxBuff分片,然后轉(zhuǎn)(2)。否則轉(zhuǎn)(2)。(2)在該記錄內(nèi)存放提取到的標(biāo)識(shí)信息和分片位置信息。轉(zhuǎn)(3)。(3)更新當(dāng)前記錄寄存器,指向本記錄。
5.如權(quán)利要求3所述其特征在于,步驟(6)進(jìn)一步包括(1)釋放最早有效記錄寄存器指向的記錄所標(biāo)識(shí)的MSDU/MMPDU占用的分片。判斷釋放分片是否等于釋放配置寄存器內(nèi)的數(shù)值,如果等于,轉(zhuǎn)(3),否則轉(zhuǎn)(2)。(2)從最早有效記錄寄存器指向的記錄下移一條記錄,判斷該記錄的幀接收狀態(tài)字段,如果該字段內(nèi)容為無(wú)效,那么繼續(xù)下移,直到到達(dá)一條有效記錄,轉(zhuǎn)(1);否則轉(zhuǎn)(3)。(3)下移記錄直到到達(dá)一條有效記錄,將最早有效記錄寄存器指向該記錄。
全文摘要
本發(fā)明提供一種解決WLAN中接收MSDU/MMDU緩沖區(qū)被無(wú)效數(shù)據(jù)占用的方法和裝置,能夠很好的解決由于接收分段不完整或者死數(shù)據(jù)導(dǎo)致的接收緩存區(qū)無(wú)效占用問(wèn)題。通過(guò)本發(fā)明描述的方法,只有必要的時(shí)候才進(jìn)行空間釋放,而且總是先釋放在緩存中存在時(shí)間最長(zhǎng)的數(shù)據(jù)。同時(shí),具有適配通信情況的自適應(yīng)特性,從而提高通信效率。實(shí)現(xiàn)該功能的硬件部件包括一個(gè)接收緩存區(qū)RxBuff;一個(gè)RxBuff分片數(shù)據(jù)管理寄存器;一個(gè)頭記錄寄存器;一個(gè)當(dāng)前記錄寄存器;一個(gè)最早有效記錄寄存器;一個(gè)分片釋放配置寄存器。
文檔編號(hào)H04L12/28GK1929436SQ20051009844
公開(kāi)日2007年3月14日 申請(qǐng)日期2005年9月8日 優(yōu)先權(quán)日2005年9月8日
發(fā)明者蘭天 申請(qǐng)人:北京中電華大電子設(shè)計(jì)有限責(zé)任公司