專利名稱:一種無線聚合幀的接收處理方法及接收裝置的制作方法
技術領域:
本發(fā)明涉及無線局域網通信領域,尤其涉及一種無線聚合幀的接收處理方法和相
應裝置。
背景技術:
為了增加無線局域網(WLAN)的傳輸速率,IEEE 802. 11工作組成立了 802. Iln任務組以致力于此。802. Iln標準在物理層和MAC層都采用了很多措施。802. Iln標準在物理層引入了正交頻分復用(OFDM)與多入多出(MIMO)相結合的技術,該技術的使用為實現高速傳輸打下了基礎,成為了高性能物理層(Physics,簡稱PHY)的標準。在802. Iln的基本 MAC層協議中,為了確保各個站點都能公平地取得媒質使用機會并盡量避免沖突,使用了一系列控制機制;這些機制在提高系統(tǒng)性能的同時也帶來了固定開銷,而這些開銷則限制了系統(tǒng)吞吐量的提高,MAC層通過采用幀聚合技術有效提高了系統(tǒng)吞吐量。幀聚合機制的本質為多個數據幀共用一個MAC頭部,簡化了幀的結構,去除了以往協議幀之間的幀間間隔和競爭時間,從而提高了 MAC層的吞吐量。802. Iln協議給出的A-MSDU技術,要求MAC層把用戶要求其傳輸的多個負載幀MSDU (MAC協議數據單元)組成一個負載聚合幀A-MSDU來傳送,以提高傳輸效率。按照標準,一個用戶負載幀MSDU對應一個MPDU幀(MPDU,MAC業(yè)務數據單元),而MPDU幀在傳輸時,要求接收方發(fā)送一個對應的應答幀(ACK)以確認傳輸成功。當多個用戶負載幀MSDU被重構為一個A-MSDU負載聚合幀后,由于A-MSDU只對應一個MPDU,于是減少了應答幀的數目,從而減小了開銷,達到提高傳輸效率的目的。通常,MAC層的硬件部分僅負責對MPDU幀的發(fā)送和接收,而無需關心MPDU幀承載的是普通的MSDU幀還是A-MSDU聚合幀。但是,對于MAC層軟件部分,則必須關心MPDU幀承載的內容格式。因為,在接收到MPDU幀后,MAC層軟件必須查看MPDU幀是否承載了 A-MSDU 聚合幀,如果承載了 A-MSDU聚合幀,則分別提取聚合幀中的MSDU幀然后上交給用戶。所以在A-MSDU聚合技術的實施中,會涉及MSDU幀的拷貝,尤其在接收的時候把一個聚合幀通過拷貝拆分為多個MSDU幀。很明顯,如果這些拷貝操作由軟件來完成,那么開銷相當大,從而抵消了 A-MSDU希望帶來的傳輸效率,而同時,目前的大多數MAC硬件并不支持對MSDU的聚
I=I O
發(fā)明內容
本發(fā)明的目的是,提供一種無線聚合幀的接收方法及對應裝置,在MAC硬件不支持聚合的情況下,高效地完成聚合幀的接收處理。為了實現上述目的,本發(fā)明提供一種無線聚合幀的接收處理方法,包括
A、協議接收處理單元對接收裝置當前接收到的所有MPDU幀依次進行協議上的處理;
B、然后依次將所有處理后的MPDU幀去封裝,在每個MPDU幀去封裝時,根據去封裝后的負載幀不同執(zhí)行相應不同操作如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)為空,則將該MSDU幀交給上層用戶處
理;
如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)不為空,則將該MSDU幀存入當前可用的空閑緩沖區(qū)中;
如果當前負載幀為聚合幀,則將該聚合幀存入當前可用的空閑緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間;如果該聚合幀存入之前緩沖區(qū)為空,則協議接收處理單元建立并啟動DMA傳輸事務完成聚合幀中的MSDU幀拷貝到申請的緩沖區(qū)空間;
C、在收到解聚合完成消息后,協議接收處理單元依次將完成解聚合的緩沖區(qū)中的MSDU 幀交給上層用戶處理,同時為緩沖區(qū)中需要解聚合的聚合幀建立并啟動DMA傳輸事務。具體的,所述緩沖區(qū)在初始化時申請,可分為多個子區(qū)域,每個子區(qū)域對應一個數據幀隊列和一個解聚合標志。具體的,所述步驟B中,將該MSDU幀存入當前可用的空閑緩沖區(qū)是指,協議接收處理單元在緩沖區(qū)中進行查找,當緩沖區(qū)中最后一個不為空的子區(qū)域中的數據幀隊列為MSDU 幀隊列,則將該MSDU幀存入該MSDU幀隊列;否則直接將該MSDU幀存入到當前空的子區(qū)域中的數據幀隊列中,并設置該隊列的解聚合標志為完成。具體的,所述步驟B中,將當前聚合幀存入當前可用的緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間是指,協議接收處理單元在緩沖區(qū)中進行查找,將當前聚合幀存入到當前空閑子區(qū)域中的數據幀隊列中,并在該數據幀隊列中加入申請的用于存儲從聚合幀中拷貝出所有MSDU幀的緩沖區(qū)空間,并設置該隊列的解聚合標志為未完成。具體的,所述步驟C中,在收到解聚合完成消息后,協議接收處理單元依次將解聚合標志為完成的子區(qū)域的數據幀隊列中的MSDU幀交給上層用戶處理,并為解聚合標志為未完成的數據幀隊列建立并啟動DMA傳輸事務。具體的,在收到解聚合完成消息后,協議接收處理單元釋放解聚合標志為完成的子區(qū)域的數據幀隊列中的聚合幀,并在將該子區(qū)域的數據幀隊列中的MSDU幀交給上層用戶處理后,清空該子區(qū)域。本發(fā)明的另一個目的,是提供一種無線聚合幀的接收裝置,包括 緩沖區(qū)單元,用于存儲待交給上層用戶單元處理的MSDU幀;
協議接收處理單元,用于對接收裝置當前接收的所有MPDU幀依次進行協議上的處理, 然后再依次將所有處理后的MPDU幀去封裝,在每個MPDU幀去封裝時,根據去封裝后的負載幀不同執(zhí)行相應不同操作
如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)為空,則將該MSDU幀交給上層用戶處
理;
如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)不為空,則將該MSDU幀存入當前可用的空閑緩沖區(qū)中;
如果當前負載幀為聚合幀,將該聚合幀到存入當前可用的空閑緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間,如果該聚合幀存入之前緩沖區(qū)為空,則協議接收處理單元建立并啟動DMA傳輸事務用于將聚合幀中的MSDU幀拷貝到申請的緩沖區(qū)空間;
解聚合DMA控制處理單元,用于完成協議接收處理單元建立的DMA傳輸事務,并在傳輸事務完成解聚合后通知協議接收處理單元;
所述協議接收處理單元還用于,收到解聚合DMA控制處理單元的解聚合完成消息時, 依次將緩沖區(qū)中的MSDU幀交給上層用戶處理,同時為需要解聚合的幀建立并啟動DMA傳輸事務,從而將聚合幀中的MSDU幀依次拷貝到數據幀隊列中申請的緩沖區(qū)空間。具體的,所述緩沖區(qū)單元在初始化時申請,可分為多個子區(qū)域,每個子區(qū)域對應一個數據幀隊列以及一個解聚合標志。具體的,所述協議接收處理單元還用于,
判斷當前去封裝的負載幀為單個MSDU幀,且當前緩沖區(qū)不為空時,在緩沖區(qū)中進行查找,當緩沖區(qū)中最后一個不為空的子區(qū)域中的數據幀隊列為MSDU幀隊列,則將該MSDU幀存入該MSDU幀隊列;否則直接將該MSDU幀存入到當前空的子區(qū)域中的數據幀隊列中,并設置該隊列的解聚合標志為完成;
判斷當前去封裝的負載幀為聚合幀時,在緩沖區(qū)中進行查找,將當前聚合幀存入到當前空閑子區(qū)域中的數據幀隊列中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間,并在該數據幀隊列中加入申請的用于存儲從聚合幀中拷貝出所有MSDU幀的空間,并設置該隊列的解聚合標志為未完成。具體的,解聚合DMA控制處理單元包括解聚合DMA控制器子單元和解聚合DMA完成處理程序子單元,
所述解聚合DMA控制器子單元,用于完成協議接收處理單元建立的DMA傳輸事務;并用于在所有的DMA傳輸事務完成后,通過中斷觸發(fā)解聚合DMA完成處理程序子單元執(zhí)行相應程序;
所述解聚合DMA完成處理程序子單元,用于設置緩沖區(qū)中對應子區(qū)域的數據幀隊列的解聚合標志為完成,然后發(fā)送解聚合完成消息給協議接收處理單元。綜上,本發(fā)明在MAC硬件不支持聚合的情況下,通過硬件DMA控制器完成聚合幀中 MSDU幀的拷貝,提高聚合幀的接收處理效率,并且保證了接收數據幀的順序。
圖1是本發(fā)明無線聚合幀的接收處理方法流程圖。圖2是本發(fā)明提供的無線聚合幀的接收處理方法實施例的判斷流程圖。圖3是本發(fā)明無線聚合幀的接收裝置結構示意圖。圖4是本發(fā)明無線聚合幀的接收裝置實施例的結構示意圖。圖5是本發(fā)明無線聚合幀的接收裝置的緩沖區(qū)單元的結構示意圖。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例, 對本發(fā)明作進一步詳細說明。參見圖1,為本發(fā)明提供的無線聚合幀的接收處理方法流程圖,其具體步驟為 步驟101、協議接收處理單元對接收裝置當前接收到的所有MPDU幀依次進行協議上的處理;
在本步驟中,接收裝置從媒介接收到MPDU幀后,一般后先放入MPDU接收隊列(也可以不放),接收裝置的MPDU協議接收處理單元接收到MPDU幀的入隊通知后,從MPDU接收隊列中取出所有的MPDU幀,進行MPDU協議上的相關處理。步驟102、然后依次將所有處理后的MPDU幀去封裝,在每個MPDU幀去封裝時,根據去封裝后的負載幀不同執(zhí)行相應不同操作
步驟1021、當前負載幀為單個MSDU幀,且當前緩沖區(qū)為空,則將該MSDU幀交給上層用戶處理;本子步驟中,由于當前緩沖區(qū)為空,則說明當前沒有需要解聚合的聚合幀,所以不存在接收幀保序問題,可以直接將當前的單個MSDU幀交給上層用戶處理了。步驟1022、當前負載幀為單個MSDU幀,且當前緩沖區(qū)不為空,則將該MSDU幀存入當前可用的空閑緩沖區(qū)中;本子步驟中,由于當前緩沖區(qū)不為空,說明有需要解聚合的聚合幀在排隊,所以為了保證數據幀的序列,需要將當前的單個MSDU幀順序放入緩沖區(qū)中的 MSDU隊列中或者空閑緩沖區(qū)中排隊。步驟1023、當前負載幀為聚合幀,則將該聚合幀存入當前可用的空閑緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間,如果該聚合幀存入之前緩沖區(qū)為空,則協議接收處理單元建立并啟動DMA傳輸事務,以完成將聚合幀中的MSDU幀拷貝到申請的緩沖區(qū)空間;本子步驟中當當前負載幀是此時緩沖區(qū)中唯一的聚合幀時,即該聚合幀存入之前緩沖區(qū)為空時,協議接受處理單元則建立并啟動多個DMA傳輸事務,完成解聚合后才能交給上層用戶處理,所以可以采用DMA技術拷貝出聚合幀中的MSDU幀完成解聚合,由于實現預先申請了用于存儲拷貝出的MSDU幀的緩沖區(qū)空間,所以解聚合后的 MSDU幀還是順序的。步驟103、在收到解聚合完成消息后,協議接收處理單元依次將完成解聚合的緩沖區(qū)中的MSDU幀交給上層用戶處理,同時為緩沖區(qū)中需要解聚合的聚合幀建立并啟動DMA 傳輸事務。在本步驟中,協議接收處理單元在收到解聚合完成消息后,順序將完成解聚合的緩沖區(qū)中的所有MSDU交給上層用戶處理,一旦緩沖區(qū)中的MSDU被取出交給上層用戶處理, 則該緩沖區(qū)中對應的空間被清空;同時協議接收處理單元對緩沖區(qū)中對應狀態(tài)為需要解聚合的聚合幀建立并啟動DMA傳輸事務,完成將聚合幀中的MSDU幀拷貝到申請的緩沖區(qū)空間。
實施例在本實施例中,將用于臨時存放MSDU幀的緩沖區(qū)分為多個子區(qū)域,每個子區(qū)域對應一個數據幀隊列以及一個解聚合標志。數據幀隊列用來存儲聚合幀或者MSDU幀,解聚合標志可分為完成和未完成兩種類型。當數據幀隊列存儲的是連續(xù)MSDU單幀時,該隊列的解聚合標志為完成,并稱該數據幀隊列為MSDU幀隊列;當數據幀隊列存入的是等待解聚合的聚合幀時,該隊列的解聚合標志為未完成,該數據幀隊列稱為聚合幀隊列,同時一旦聚合幀隊列中的聚合幀中的MSDU幀已經全部拷貝出并存入該隊列中,則該隊列的解聚合標志變?yōu)橥瓿汕以撽犃兄械木酆蠋瑫粍h除。在接收裝置的協議接收處理單元對接收裝置當前接收到的所有MPDU幀進行協議上的處理后,開始對處理后的MPDU幀去封裝并對去封裝后的負載幀進行判斷,根據判斷結果不同執(zhí)行不同的操作,判斷流程圖見圖2,具體為
如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)為空,則將該MSDU幀直接交給上層用戶處理;
如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)中不為空,則在緩沖區(qū)中進行查找,當緩沖區(qū)中最后一個不為空的子區(qū)域中的數據幀隊列為MSDU幀隊列,則將該MSDU幀存入該 MSDU幀隊列;否則直接將該MSDU幀存入到當前空的子區(qū)域中的數據幀隊列中,并設置該隊列的解聚合標志為完成;
如果當前負載幀為聚合幀,協議接收處理單元計算該聚合幀中的MSDU幀的數目,接著分配對應MSDU幀數目的緩沖區(qū)空間,然后在緩沖區(qū)中查找空閑的子區(qū)域,并將當前聚合幀及新分配的MSDU幀緩沖區(qū)空間加入到該空閑子區(qū)域的數據幀隊列中,并設置該隊列的解聚合標志為未完成;如果聚合幀加入之前緩沖區(qū)為空,即上述添加的聚合幀是此時緩沖區(qū)中唯一的聚合幀,協議接收處理單元則建立并啟動多個DMA傳輸事務,以從聚合幀中拷貝出多個MSDU幀;在DMA傳輸事務完成時,對應的數據幀隊列的解聚合標志被設置為完成,協議接收處理單元收到解聚合完成消息后,刪除執(zhí)行拷貝操作的數據幀隊列中的聚合幀。一旦收到DMA事務完成的通知被觸發(fā),協議接收處理單元則依次將每個子區(qū)域中解聚合標志為完成的數據幀隊列中的MSDU幀交給上層用戶處理,并清空該MSDU幀所占用的緩沖區(qū)空間。在依次將子區(qū)域中數據幀隊列中的MSDU幀交給上層用戶處理時,協議接收處理單元首先判斷當前子區(qū)域的數據幀隊列的解聚合標志是否為完成,如是,則將該子區(qū)域的數據幀隊列中的MSDU幀交給上層用戶處理,并清空該子區(qū)域,如否,則建立并啟動DMA傳輸事務, 以完成從聚合幀中拷貝出MSDU幀。在DMA傳輸事務完成后,一般會發(fā)送聚合完成消息給協議接收處理單元;在收到解聚合完成消息后,協議接收處理單元釋放解聚合標志為完成的子區(qū)域的數據幀隊列中的聚合幀,并在將該子區(qū)域的數據幀隊列中的MSDU幀交給上層用戶處理后,清空該子區(qū)域。 如果查找到有解聚合標志為未完成的子區(qū)域,則停止上交MSDU幀給上層用戶處理的操作, 建立并啟動多個DMA傳輸事務,從而將當前子區(qū)域對應的數據幀隊列中聚合幀中的MSDU幀依次拷貝到數據幀隊列中申請的緩沖區(qū)空間。本發(fā)明還提供了一種實施上述無線聚合幀接收處理方法的裝置,如圖3所示,本接收裝置包括
緩沖區(qū)單元,用于存儲待交給上層用戶單元處理的MSDU幀;
協議接收處理單元,用于對接收裝置當前接收的所有MPDU幀依次進行協議上的處理, 然后再依次將所有處理后的MPDU幀去封裝,在每個MPDU幀去封裝時,根據去封裝后的負載幀不同執(zhí)行相應不同操作如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)為空,則將該 MSDU幀交給上層用戶處理;如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)不為空,則將該 MSDU幀存入當前可用的空閑緩沖區(qū)中;如果當前負載幀為聚合幀,將該聚合幀存入當前可用的空閑緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間,如果該聚合幀存入之前前緩沖區(qū)為空,則協議接收處理單元建立并啟動DMA傳輸事務用于將聚合幀中的MSDU幀拷貝到申請的MSDU幀中;所述協議接收處理單元還用于,收到解聚合完成消息時,依次將緩沖區(qū)中的MSDU幀交給上層用戶處理,同時為緩沖區(qū)中需要解聚合的聚合幀建立并啟動DMA傳輸事務,從而將聚合幀中的MSDU幀拷貝到新分配的MSDU幀中;
解聚合DMA控制處理單元,用于完成協議接收處理單元建立的DMA傳輸事務,并在傳輸事務完成解聚合后通知協議接收處理單元。參見圖4,是本發(fā)明提供的無線聚合幀的接收裝置的實施例,包括用于存儲待交給上層用戶單元處理的MSDU幀的緩沖區(qū)單元,圖5是本發(fā)明實施例的緩沖區(qū)單元的結構示意圖;本發(fā)明的接收裝置還包括用于對接收的MPDU幀進行協議上處理,然后再對去封裝后的負載幀進行判斷并執(zhí)行不同操作的協議接收處理單元。還包括用于完成協議接收處理單元建立的DMA傳輸事務,并在傳輸事務完成解聚合后通知接收協議處理單元的解聚合DMA控制處理單元。在本實施例中,本發(fā)明的接收裝置還包括用于將從媒介接收的MPDU幀存入 MPDU接收隊列的MAC接收單元。在本實施例中,解聚合DMA控制處理單元包括解聚合DMA控制器子單元,用于完成協議接收處理單元建立的DMA傳輸事務,并用于在所有的DMA傳輸事務完成后,通過中斷觸發(fā)解聚合DMA完成處理程序子單元執(zhí)行相應程序;還包括解聚合DMA完成處理程序子單元, 用于設置緩沖區(qū)中對應子區(qū)域的數據幀隊列的解聚合標志為完成,然后發(fā)送解聚合完成消息給協議接收處理單元。為了更深入的理解本發(fā)明,現就本發(fā)發(fā)明實施例的接收裝置實施本發(fā)明接收處理方法的具體過程進行詳細說明,在本實施例中,定義如下參數
MSDU-SUB-SIZE表示緩沖區(qū)中子區(qū)域的個數,
MSDU-AMSDU-IDEX表示正在進行解聚合的子區(qū)域在緩沖區(qū)中的位置,MSDU-MSDU-IDEX 表示可存放MSDU幀的子區(qū)域在緩沖區(qū)中的位置,MSDU-EMPTY-IDEX表示空閑的子區(qū)域在緩沖區(qū)中的位置。子區(qū)域中數據幀隊列的解聚合標志具有兩個值=Done和Undone,其中Done 表示解聚合操作解聚合標志,而Undone表示解聚合操作未解聚合標志。接收裝置的MAC接收單元從媒介接收到無線MPDU幀后,首先把MPDU幀存放到MPDU接收隊列中,然后發(fā)送入隊消息通知協議接收處理單元;協議接收處理單元完成所有當前接收的MPDU幀的協議處理,然后對需要解聚合的負載幀完成解聚合后將解聚合后的負載幀交給上層用戶處理,所以協議接收處理單元執(zhí)行的具體操作參見如下步驟 A01-A03
步驟AOl 協議接收處理單元查詢是否有解聚合完成消息,如果否,則進行步驟A02的查詢及操作,否則進一步判斷正在進行解聚合的子區(qū)域在緩沖區(qū)中的位置 MSDU-AMSDU-IDEX是否等于空閑的子區(qū)域在緩沖區(qū)中的位置MSDU-EMPTY-IDEX,如果是,則返回繼續(xù)進行本步驟AOl的查詢及操作,否則進一步判斷MSDU-AMSDU-IDEX對應子區(qū)域的解聚合標志是否為Done,如果是,則取出子區(qū)域中的數據幀隊列中的數據幀,把數據幀隊列中的MSDU幀依次交給上層用戶處理,并令MSDU-AMSDU-IDEX= (MSDU-AMSDU-IDEX+1) mod MSDU-SUB-SIZE,并返回本 AOl 步驟中判斷 MSDU-AMSDU - IDEX 是否等于 MSDU-EMPTY-IDEX 的步驟;如果否進入步驟A03的操作;
步驟A02 協議接收處理單元查詢是否有MPDU入隊消息,如果否,則執(zhí)行步驟AOl的查詢及操作,否則從MPDU接收隊列中取出隊列中所有MPDU幀,并按順序依次對其中的MPDU 幀進行協議上的處理,完成對所有MPDU幀的處理后,開始對處理后的MPDU幀去封裝并對去封裝后的負載幀進行如下判斷并執(zhí)行對應的操作,直至對所有的MPDU幀完成判斷及對應操作,然后進入步驟AOl的查詢及操作
如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)為空即MSDU-AMSDU - IDEX等于 MSDU-EMPTY-IDEX,則將該MSDU幀直接交給上層用戶處理;返回本判斷步驟;
如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)不為空即MSDU-AMSDU-IDEX不等于 MSDU-EMPTY-IDEX,則在緩沖區(qū)中進行查找,當緩沖區(qū)中最后一個不為空的子區(qū)域中的數據幀隊列為 MSDU 幀隊列即(MSDU-MSDU-IDEXX+1 )mod MSDU-SUB-SIZE 等于MSDU-EMPTY-IDEX, 則把MSDU幀放入MSDU-MSDU-IDEX對應子區(qū)域數據幀隊列的尾部;否則進一步判斷 (MSDU-EMPTY-IDEX+1) mod MSDU-SUB-SIZE 是否等于 MSDU- AMSDU-IDEX,如果是則丟棄該MSDU幀,否則把MSDU幀放入MSDU-EMPTY-IDEX對應的子區(qū)域的數據幀隊列中,設置該子區(qū)域的解聚合標志為 Done,設置 MSDU-EMPTY-IDEX= (MSDU-EMPTY-IDEX+1) mod MSDU-SUB-SIZE ;返回本判斷步驟;
如果當前負載幀為聚合幀,且當前緩沖區(qū)滿即(MSDU-EMPTY-IDEX+1) mod MSDU-SUB-SIZE等于MSDU- AMSDU-IDEX,則丟棄該聚合幀A-MSDU,返回本判斷步驟;
如果當前負載幀為聚合幀,且當前緩沖區(qū)未滿即(MSDU-EMPTY-IDEX+1) mod MSDU-SUB-SIZE不等于MSDU- AMSDU-IDEX,則首先計算該聚合幀A-MSDU中包含的MSDU 幀的數目,接著分配對應數目的存儲MSDU幀緩沖區(qū)空間,然后將當前聚合幀及新分配的MSDU幀存入到該空閑子區(qū)域的數據幀隊列中,并設置該隊列的解聚合標志為Undone, 并設置 MSDU-EMPTY-IDra= (MSDU-EMPTY-IDEX+1) mod MSDU-SUB-SIZE, MSDU-MSDU-IDEX =MSDU-EMPTY-IDEX,最后,如果上述添加的聚合幀是此時緩沖區(qū)中唯一的聚合幀,則建立并啟動多個DMA傳輸事務,以從聚合幀中拷貝出多個MSDU幀;返回本判斷步驟。步驟A03,協議接收處理單元建立并啟動多個DMA傳輸事務后,協議接收處理單元進入步驟A02的查詢及操作;解聚合DMA控制器單元執(zhí)行協議接收處理單元建立的DMA傳輸事務,以從對應子區(qū)域的數據幀隊列頭部的A-MSDU幀中拷貝出多個MSDU,當所有的DMA 傳輸事務完成后,解聚合DMA控制器單元通過中斷觸發(fā)解聚合DMA完成處理程序單元執(zhí)行; 解聚合DMA完成處理程序單元首先設置緩沖區(qū)中MSDU-AMSDU-IDEX對應的子區(qū)域的解聚合標志為Done,然后發(fā)送解聚合完成消息給協議接收處理單元。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內。
權利要求
1.一種無線聚合幀的接收處理方法,其特征在于,包括如下步驟A、協議接收處理單元對接收裝置當前接收到的所有MPDU幀依次進行協議上的處理;B、然后依次將所有處理后的MPDU幀去封裝,在每個MPDU幀去封裝時,協議接收處理單元根據去封裝后的負載幀不同執(zhí)行相應不同操作如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)為空,則將該MSDU幀交給上層用戶處理;如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)不為空,則將該MSDU幀存入當前可用的空閑緩沖區(qū)中;如果當前負載幀為聚合幀,則將該聚合幀存入當前可用的空閑緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間,如果該聚合幀存入之前緩沖區(qū)為空,則協議接收處理單元建立并啟動DMA傳輸事務完成聚合幀中的MSDU幀拷貝到申請的緩沖區(qū)空間;C、在收到解聚合完成消息后,協議接收處理單元依次將完成解聚合的緩沖區(qū)中的MSDU 幀交給上層用戶處理,同時為緩沖區(qū)中需要解聚合的聚合幀建立并啟動DMA傳輸事務。
2.如權利要求1所述無線聚合幀的接收處理方法,其特征在于,所述緩沖區(qū)在初始化時申請,可分為多個子區(qū)域,每個子區(qū)域對應一個數據幀隊列和一個解聚合標志。
3.如權利要求2所述無線聚合幀的接收處理方法,其特征在于,所述步驟B中,將該 MSDU幀存入當前可用的空閑緩沖區(qū)是指,協議接收處理單元在緩沖區(qū)中進行查找,當緩沖區(qū)中最后一個不為空的子區(qū)域中的數據幀隊列為MSDU幀隊列,則將該MSDU幀存入該MSDU 幀隊列;否則直接將該MSDU幀存入到當前空的子區(qū)域中的數據幀隊列中,并設置該隊列的解聚合標志為完成。
4.如權利要求2或3所述無線聚合幀的接收處理方法,其特征在于,所述步驟B中,將該聚合幀存入當前可用的空閑緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間是指,協議接收處理單元在緩沖區(qū)中進行查找,將當前聚合幀存入到當前空閑子區(qū)域中的數據幀隊列中,并在該隊列中加入申請的用于存儲從聚合幀中拷貝出所有MSDU幀的緩沖區(qū)空間,并設置該隊列的解聚合標志為未完成。
5.如權利要求2所述無線聚合幀的接收處理方法,其特征在于,所述步驟C中,在收到解聚合完成消息后,協議接收處理單元依次將解聚合標志為完成的子區(qū)域的數據幀隊列中的MSDU幀交給上層用戶處理,并為解聚合標志為未完成的數據幀隊列建立并啟動DMA傳輸事務。
6.如權利要求5所述無線聚合幀的接收處理方法,其特征在于,在收到解聚合完成消息后,協議接收處理單元釋放解聚合標志為完成的子區(qū)域的數據幀隊列中的聚合幀,并在將該子區(qū)域的數據幀隊列中的MSDU幀交給上層用戶處理后,清空該子區(qū)域。
7.一種無線聚合幀的接收裝置,其特征在于,包括緩沖區(qū)單元,用于存儲待交給上層用戶單元處理的MSDU幀;協議接收處理單元,用于對接收裝置當前接收的所有MPDU幀依次進行協議上的處理, 然后再依次將所有處理后的MPDU幀去封裝,在每個MPDU幀去封裝時,根據去封裝后的負載幀不同執(zhí)行相應不同操作如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)為空,則將該 MSDU幀交給上層用戶處理;如果當前負載幀為單個MSDU幀,且當前緩沖區(qū)不為空,則將該MSDU幀存入當前可用的空閑緩沖區(qū)中;如果當前負載幀為聚合幀,將該聚合幀存入當前可用的空閑緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間,如果該聚合幀存入之前緩沖區(qū)為空,則協議接收處理單元建立并啟動DMA傳輸事務用于將聚合幀中的MSDU幀拷貝到申請的緩沖區(qū)空間;解聚合DMA控制處理單元,用于完成協議接收處理單元建立的DMA傳輸事務,并在傳輸事務完成解聚合后通知協議接收處理單元;所述協議接收處理單元還用于,收到解聚合DMA控制處理單元的解聚合完成消息時, 依次將緩沖區(qū)中的MSDU幀交給上層用戶處理,同時為需要解聚合的幀建立并啟動DMA傳輸事務,從而將聚合幀中的MSDU幀依次拷貝到數據幀隊列中申請的緩沖區(qū)空間。
8.如權利要求7所述無線聚合幀的接收裝置,其特征在于,所述緩沖區(qū)單元在初始化時申請,可分為多個子區(qū)域,每個子區(qū)域對應一個數據幀隊列和一個解聚合標志。
9.如權利要求8所述無線聚合幀的接收裝置,其特征在于,所述協議接收處理單元還用于,判斷當前去封裝的負載幀為單個MSDU幀,且當前緩沖區(qū)不為空時,在緩沖區(qū)中進行查找,當緩沖區(qū)中最后一個不為空的子區(qū)域中的數據幀隊列為MSDU幀隊列,則將該MSDU幀存入該MSDU幀隊列;否則直接將該MSDU幀存入到當前空的子區(qū)域中的數據幀隊列中,并設置該隊列的解聚合標志為完成;判斷當前去封裝的負載幀為聚合幀時,在緩沖區(qū)中進行查找,將當前聚合幀存入到當前空閑子區(qū)域中的數據幀隊列中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)是指,并在該數據幀隊列中加入申請的用于存儲從聚合幀中拷貝出所有MSDU幀的緩沖區(qū),并設置該隊列的解聚合標志為未完成。
10.如權利要求8所述無線聚合幀的接收裝置,其特征在于,所述解聚合DMA控制處理單元包括解聚合DMA控制器子單元和解聚合DMA完成處理程序子單元,所述解聚合DMA控制器子單元,用于完成協議接收處理單元建立的DMA傳輸事務;并用于在所有的DMA傳輸事務完成后,通過中斷觸發(fā)解聚合DMA完成處理程序子單元執(zhí)行相應程序;所述解聚合DMA完成處理程序子單元,用于設置緩沖區(qū)中對應子區(qū)域的數據幀隊列的解聚合標志為完成,然后發(fā)送解聚合完成消息給協議接收處理單元。
全文摘要
本發(fā)明提出一種無線聚合幀的接收處理方法,包括協議接收處理單元對接收裝置當前接接收到的所有MPDU幀依次進行協議上的處理;然后依次將所有處理后的MPDU幀去封裝,在每個MPDU幀去封裝時,根據去封裝后的負載幀不同執(zhí)行相應不同操作如果當前負載幀為聚合幀,則將該聚合幀存入當前可用的空閑緩沖區(qū)中,并計算該聚合幀中的MSDU幀的數目以申請相應數目的緩沖區(qū)空間,如果該聚合幀存入之前緩沖區(qū)為空,則協議接收處理單元建立并啟動DMA傳輸事務完成聚合幀中的MSDU幀拷貝到申請的緩沖區(qū)空間;在收到解聚合完成消息后,協議接收處理單元依次將完成解聚合的緩沖區(qū)中的MSDU幀交給上層用戶處理同時,為緩沖區(qū)中需要解聚合的聚合幀建立并啟動DMA傳輸事務。本發(fā)明在MAC硬件不支持聚合的情況下,通過硬件DMA控制器完成聚合幀中MSDU幀的拷貝,提高聚合幀的接收處理效率。
文檔編號H04B7/26GK102547847SQ201010612130
公開日2012年7月4日 申請日期2010年12月29日 優(yōu)先權日2010年12月29日
發(fā)明者曹淋 申請人:邁普通信技術股份有限公司