欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

wlan收發(fā)幀在mac和主內(nèi)存間分塊交付的實現(xiàn)方法

文檔序號:7694998閱讀:130來源:國知局

專利名稱::wlan收發(fā)幀在mac和主內(nèi)存間分塊交付的實現(xiàn)方法
技術領域
:本發(fā)明屬于無線局域網(wǎng)領域,作為一種802.11發(fā)送幀和接收幀在MAC和主機內(nèi)存之間分塊交付的設計實現(xiàn)方法,特別適用于具有內(nèi)存主接口的無線局域網(wǎng)網(wǎng)卡和接入點芯片及其驅(qū)動設計,也適用于其他具有幀結構定義、具有內(nèi)存主接口的通信領域的芯片及其驅(qū)動設計。
背景技術
:802.11國際標準規(guī)定,802.11MAC層的幀結構為[幀頭,幀體,F(xiàn)CS],其發(fā)送數(shù)據(jù)幀的幀頭一般為驅(qū)動程序根據(jù)相應信息生成;FCS為802.11MAC為保證本幀發(fā)送的正確性和完整性添加的固定長度的校驗數(shù)據(jù),一般不需要驅(qū)動往MAC層交付;而數(shù)據(jù)幀的幀體數(shù)據(jù)為驅(qū)動從上層得到,而且一個數(shù)據(jù)幀的幀體一般以在主機內(nèi)存中不連續(xù)分布的多塊數(shù)據(jù)的形式存在。在802.11MAC將數(shù)據(jù)幀發(fā)送時,是將幀頭和幀體作為一個整體,添加完整性校驗數(shù)據(jù),然后發(fā)出。驅(qū)動一般將幀頭和幀體在內(nèi)存中搬移到一塊連續(xù)的內(nèi)存中,然后再根據(jù)這一塊數(shù)據(jù)的信息生成一個發(fā)送幀描述符,將本發(fā)送幀描述符交付給具有內(nèi)存主接口的802.11MAC,802.11MAC再根據(jù)這個發(fā)送幀描述符從內(nèi)存中取走本幀數(shù)據(jù),然后發(fā)出。之前的數(shù)據(jù)搬移需要主機進行大量的數(shù)據(jù)拷貝工作。對于接收幀而言,802.11MAC需要將本地接收的數(shù)據(jù)幀,根據(jù)驅(qū)動交付下來的接收幀描述符,將接收到的數(shù)據(jù)幀通過內(nèi)存主接口回寫到主機內(nèi)存中。因為驅(qū)動無法預期一個接收幀的長度,所以驅(qū)動生成并交付下來的接收幀描述符,指向一塊最大數(shù)據(jù)幀長度的內(nèi)存空間,以便于接收幀存放。不管接收幀多短多長,驅(qū)動在其接收之前,都要同樣開辟出一塊最大數(shù)據(jù)幀長度的內(nèi)存空間。在內(nèi)存使用比較緊張的情況下,無疑浪費了內(nèi)存使用。本文提出了一種方法,由具有主接口的802.11MAC根據(jù)驅(qū)動交付下來的塊描述符,而非幀描述符,以預定的順序連續(xù)的取走不連續(xù)分布的幀體數(shù)據(jù)塊,從而避免了主機的大量數(shù)據(jù)拷貝工作。由具有主接口的802.11MAC根據(jù)驅(qū)動交付下來的小長度的空內(nèi)存塊描述符,收到一幀后,可以將接收幀存到多個空內(nèi)存塊中,從而短幀僅需要比較少的空內(nèi)存塊,長幀需要比較多的空內(nèi)存塊,結果從整體上節(jié)省了內(nèi)存的使用,避免了內(nèi)存的使用浪費。
發(fā)明內(nèi)容對于802.11幀發(fā)送,上層交付到驅(qū)動的在內(nèi)存中不連續(xù)分布的多個數(shù)據(jù)塊,驅(qū)動可能會將它們作為一個幀交付給802.11MAC發(fā)出。能夠避免將屬于同一個幀的發(fā)送數(shù)據(jù)從不連續(xù)分布的多個數(shù)據(jù)塊拷貝到一個大的數(shù)據(jù)塊的方法是驅(qū)動通過為每一個數(shù)據(jù)塊生成一個塊描述符,由802.11MAC根據(jù)驅(qū)動交付下來的塊描述符鏈,通過其內(nèi)存主接口,一個數(shù)據(jù)塊接著另一個數(shù)據(jù)塊的取過來,然后作為一個數(shù)據(jù)幀發(fā)出。表1為發(fā)送塊描述符為避免數(shù)據(jù)拷貝規(guī)定的內(nèi)容。如果本數(shù)據(jù)塊為當前發(fā)送幀的最后一個數(shù)據(jù)塊,則本描述符的MoreBlock為0;否則必須為1。如果本數(shù)據(jù)塊所處的發(fā)送幀,不是發(fā)送幀隊列的最后一幀,則本發(fā)送幀的所有塊描述符中的MoreFrame指示為1;否則為0,NextBlockDescriptorPointer指向下一個發(fā)送數(shù)據(jù)塊的描述符的首地址,下一個發(fā)送數(shù)據(jù)塊,可能為同一個發(fā)送幀的下一個數(shù)據(jù)塊,也可能為下一個發(fā)送幀的第一個數(shù)據(jù)塊;表l中所有信息都是驅(qū)動交付給802.11MAC的,802.11MAC得到了這些信息,會通過其內(nèi)存主接口,先取來本數(shù)據(jù)塊,然后判斷是否需要去取下一個塊描述符,如果需要,則根據(jù)下個塊描述符的首地址,將下個塊描述符取來。判斷是否需要去取下一個塊描述符的依據(jù)是,當前塊描述符中MoreBlock或者MoreFrame有效則需要去取下一個塊描述符。一個發(fā)送幀的幀頭并不是由上層交付到驅(qū)動的,而是由驅(qū)動牛成的,而且一般幀頭較短。所以對于幀頭而言,可以作為一個獨立的數(shù)據(jù)塊存在,其塊描述符采用表l描述的通用格式。也可以在一個幀的塊描述符設定一個特定域,特定域設計見表2。表2為發(fā)送幀幀頭如果不采用發(fā)送塊描述符通用格式而采用在塊描述符增加的特定域,其中FrameHeaderPointer為本數(shù)據(jù)塊描述符所在幀的幀頭內(nèi)容首地址,F(xiàn)rameHeaderLength為本數(shù)據(jù)塊描述符所在幀的幀頭長度。對于802.11幀接收,驅(qū)動為一個接收幀開辟內(nèi)存空間時,無法預見接收幀的長度。驅(qū)動通過開辟多個小長度的空內(nèi)存塊,短接收幀存儲使用個數(shù)比較少的空內(nèi)存塊,長接收幀存儲使用個數(shù)比較多的空內(nèi)存塊。驅(qū)動在開辟空內(nèi)存塊的同時,生成相應的空內(nèi)存塊描述符鏈,之后驅(qū)動將空內(nèi)存塊描述符鏈交付給802.11MAC,802.11MAC通過其內(nèi)存主接口進行的操作為取空內(nèi)存塊描述符、回寫接收幀數(shù)據(jù)、回寫內(nèi)存塊描述符、取下一個空內(nèi)存塊描述符,然后繼續(xù)循環(huán)。表3為空內(nèi)存塊描述符具有的內(nèi)容定義。表3指示出了驅(qū)動交付給MAC的內(nèi)容部分,只有接收內(nèi)存塊隊列的最后一個內(nèi)存塊描述符的MoreMemoryBlock為0,其余的為1;NextMemoryBlockDescriptorPointer指示出了下一個空內(nèi)存塊描述符的首地址;MemoryBlockPointer和MemoryBlockLength指示出了對應空內(nèi)存塊的首地址和長度;通過調(diào)整空內(nèi)存塊的存儲空間,一個接收幀存儲可能浪費的內(nèi)存空間小于一個空內(nèi)存塊的大小。不再為任何一個接收幀都開辟最大協(xié)議規(guī)定幀長度的存儲空間,從而避免造成內(nèi)存空間的浪費<table>tableseeoriginaldocumentpage5</column></row><table>表2<table>tableseeoriginaldocumentpage5</column></row><table>表3圖1是發(fā)送幀數(shù)據(jù)塊在主內(nèi)存中的分布結構示意圖2是為接收開辟的空內(nèi)存塊在主內(nèi)存中的分布示意圖;圖3是接收幀在開辟的空內(nèi)存塊中的存儲結構示意圖。具體實施例方式下面結合附圖,具體介紹本發(fā)明的具體實施例方式對于802.11幀發(fā)送,上層交付到驅(qū)動的在內(nèi)存中不連續(xù)分布的多個數(shù)據(jù)塊,驅(qū)動可能會將它們作為一個幀交付給802.11MAC發(fā)出。能夠避免將屬于同一個幀的發(fā)送數(shù)據(jù)從不連續(xù)分布的多個數(shù)據(jù)塊拷貝到一個大的數(shù)據(jù)塊的方法是驅(qū)動通過為每一個數(shù)據(jù)塊生成一個塊描述符,由802.11MAC根據(jù)驅(qū)動交付下來的塊描述符鏈,通過其內(nèi)存主接口,一個數(shù)據(jù)塊接著另一個數(shù)據(jù)塊的取過來,然后作為一個數(shù)據(jù)幀發(fā)出。具體實施步驟如下-(1).驅(qū)動為每一個待發(fā)送的數(shù)據(jù)塊生成一個發(fā)送塊描述符,如表1所示;如果對于幀頭采用在塊描述符中設定特定域的方式,則發(fā)送塊描述符還包括了表2的內(nèi)容;(2).驅(qū)動在生成發(fā)送塊描述符后,根據(jù)當前發(fā)送數(shù)據(jù)塊在本發(fā)送幀中的順序,以及本發(fā)送幀在發(fā)送幀隊列中的順序,來生成MoreFrame,MoreBlock,NextBlockDescriptorPointer三個域,本數(shù)據(jù)塊如果為當前發(fā)送幀的最后一個數(shù)據(jù)塊,則本描述符的MoreBlock為O;否則必須為l;如果本數(shù)據(jù)塊所處的發(fā)送幀,不是發(fā)送幀隊列的最后一幀,則本發(fā)送幀的所有塊描述符中的MoreFrame指示為1;否則為0,NextBlockDescriptorPointer指向下一個發(fā)送數(shù)據(jù)塊的描述符的首地址,下一個發(fā)送數(shù)據(jù)塊,可能為同一個發(fā)送幀的下一個數(shù)據(jù)塊,也可能為下一個發(fā)送幀的第一個數(shù)據(jù)塊如果采用在發(fā)送塊描述符中為幀頭設定特定域的方式,F(xiàn)rameHeaderPointer指向驅(qū)動為本幀生成的幀頭的首地址,F(xiàn)rameHeaderLength指示幀頭數(shù)據(jù)的長度;(3).802.11MAC通過軟件配置的寄存器,獲得發(fā)送隊列的第一個塊描述符的首地址,和發(fā)送隊列啟動信號,開始使用主接口取第一個塊描述符,之后再取第一個數(shù)據(jù)塊;如果采用了在發(fā)送塊描述符中為幀頭設定特定域的方式,則在取到一幀第一個塊描述符之后,先去取幀頭數(shù)據(jù),然后再取第一個數(shù)據(jù)塊。對于一個幀的非第一個塊描述符,不會關注描述幀頭的特定域,在取到塊數(shù)據(jù)符后也不會再取幀頭數(shù)據(jù)。對于802.11幀接收,驅(qū)動為一個接收幀開辟內(nèi)存空間時,無法預見接收幀的長度。驅(qū)動通過開辟多個小長度的空內(nèi)存塊,短接收幀存儲使用個數(shù)比較少的空內(nèi)存塊,長接收幀存儲使用個數(shù)比較多的空內(nèi)存塊。驅(qū)動在開辟空內(nèi)存塊的同時,生成相應的空內(nèi)存塊描述符鏈,之后驅(qū)動將空內(nèi)存塊描述符鏈交付給802.11MAC,802.11MAC通過其內(nèi)存主接口進行的操作為取空內(nèi)存塊描述符、回寫接收幀數(shù)據(jù)、回寫內(nèi)存塊描述符、取下一個空內(nèi)存塊描述符,然后繼續(xù)循環(huán)。具體實施步驟如下(1).驅(qū)動首先準備一系列空內(nèi)存塊,并為每一個空內(nèi)存塊準備一個空內(nèi)存塊描述符,并將它們進行排序,組成一個空內(nèi)存塊描述符鏈表,對于802.11MAC來講,這是一個接收內(nèi)存塊隊列;(2).802.11MAC通過軟件配置的寄存器,獲得接收隊列的第一個空內(nèi)存塊描述符的首地址,和接收啟動信號,開始使用主接口取第一個空內(nèi)存塊描述符;(3).在取到空內(nèi)存塊描述符后,進行幀接收,接收幀的過程中,就開始往取得的空內(nèi)存塊描述符指向的空內(nèi)存塊中存接收幀數(shù)據(jù)。在這個空內(nèi)存塊能夠在接收本幀時收滿,或者本幀收完,馬上回寫這個接收塊描述符;(4).回寫之后,如果接收內(nèi)存塊隊列沒有結束,則直接取下一個接收塊描述符。802.11MAC回寫的描述符內(nèi)容部分,在表3中有說明。包括本內(nèi)存塊是否是當前接收幀占用的最后一個內(nèi)存塊,以及本內(nèi)存塊存入的接收幀數(shù)據(jù)個數(shù)。如果為接收幀占用的最后一個內(nèi)存塊,并且有剩余空間,剩余空間不再存下一個接收幀數(shù)據(jù)。本發(fā)明提出的一種802.11收發(fā)幀在MAC和主內(nèi)存之間分塊交付的實現(xiàn)方法,具有主接口的802.11MAC根據(jù)驅(qū)動交付下來的收發(fā)塊描述符而非幀描述符進行幀收發(fā)。幀發(fā)送是以預定的順序連續(xù)的取走不連續(xù)分布的幀體數(shù)據(jù)塊,避免了主機的大量數(shù)據(jù)拷貝工作;幀接收是將接收幀存到多個空內(nèi)存塊中,短幀僅需要比較少的空內(nèi)存塊,長幀需要比較多的空內(nèi)存塊,從整體上節(jié)省了內(nèi)存的使用,避免了內(nèi)存的使用浪費。權利要求1、一種802.11發(fā)送幀在具有內(nèi)存主接口的MAC和主機內(nèi)存之間分塊交付的實現(xiàn)方法,其特征在于由具有主接口的802.11MAC根據(jù)驅(qū)動交付下來的發(fā)送塊描述符以預定的順序連續(xù)的取走不連續(xù)分布的幀體數(shù)據(jù)塊,幀發(fā)送的具體實現(xiàn)步驟如下(1).驅(qū)動為每一個待發(fā)送的數(shù)據(jù)塊生成一個發(fā)送塊描述符;(2).在生成發(fā)送塊描述符后,驅(qū)動根據(jù)當前發(fā)送數(shù)據(jù)塊在本發(fā)送幀中的順序,以及本發(fā)送幀在發(fā)送幀隊列中的順序,來生成發(fā)送塊描述符中的MoreFrame,MoreBlock,NextBlockDescriptorPointer三個域;(3).802.11MAC通過軟件配置的寄存器,獲得發(fā)送隊列的第一個塊描述符的首地址和發(fā)送隊列啟動信號,開始使用主接口取第一個塊描述符,之后再取第一個數(shù)據(jù)塊。2、一種802.11接收幀在具有內(nèi)存主接口的MAC和主機內(nèi)存之間分塊交付的實現(xiàn)方法,其特征在于由具有主接口的802.11MAC根據(jù)驅(qū)動交付下來的接收塊描述符以預定的順序連續(xù)的將接收幀交付到主機的內(nèi)存塊中,幀接收的具體實施步驟如下-(1).驅(qū)動準備一系列空內(nèi)存塊,并為每一個空內(nèi)存塊準備一個空內(nèi)存塊描述符,并將空內(nèi)存塊描述符進行排序,組成一個空內(nèi)存塊描述符鏈表;(2).802.11MAC通過軟件配置的寄存器,獲得接收隊列的第一個空內(nèi)存塊描述符的首地址和接收啟動信號,使用主接口取第一個空內(nèi)存塊描述符;(3).在取到空內(nèi)存塊描述符后,進行幀接收,接收幀的過程中,往取得的空內(nèi)存塊描述符指向的空內(nèi)存塊中存接收幀數(shù)據(jù);(4).在空內(nèi)存塊在接收本幀時收滿,或者本幀收完,馬上回寫這個接收塊描述符;(5).回寫之后,如果接收內(nèi)存塊隊列沒有結束,則直接取下一個接收塊描述符。3、如權利要求1所述的一種802.11發(fā)送幀在具有內(nèi)存主接口的MAC和主機內(nèi)存之間分塊交付的實現(xiàn)方法,其特征在于幀發(fā)送過程中如果為幀頭設定特定域方式,則在取到一幀第一個塊描述符之后,先取幀頭數(shù)據(jù),然后再取第一個數(shù)據(jù)塊。4、如權利要求2所述的一種802.11接收幀在具有內(nèi)存主接口的MAC和主機內(nèi)存之間分塊交付的實現(xiàn)方法,其特征在于如果幀接收過程中內(nèi)存塊為接收幀占用的最后一個內(nèi)存塊,并且有剩余空間,剩余空間不再存儲后續(xù)幀數(shù)據(jù)。全文摘要本發(fā)明提出了一種802.11收發(fā)幀在MAC和主內(nèi)存之間分塊交付的實現(xiàn)方法。具有主接口的802.11MAC根據(jù)驅(qū)動交付下來的收發(fā)塊描述符而非幀描述符進行幀收發(fā)。幀發(fā)送是以預定的順序連續(xù)的取走不連續(xù)分布的幀體數(shù)據(jù)塊,避免了主機的大量數(shù)據(jù)拷貝工作;幀接收是將接收幀存到多個空內(nèi)存塊中,短幀僅需要比較少的空內(nèi)存塊,長幀需要比較多的空內(nèi)存塊,從整體上節(jié)省了內(nèi)存的使用,避免了內(nèi)存的使用浪費。文檔編號H04L1/00GK101594199SQ200810113120公開日2009年12月2日申請日期2008年5月28日優(yōu)先權日2008年5月28日發(fā)明者周朝顯申請人:北京中電華大電子設計有限責任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
自治县| 济宁市| 临朐县| 衡水市| 高平市| 阳西县| 洛川县| 丽水市| 曲麻莱县| 石泉县| 凌海市| 云梦县| 克山县| 甘谷县| 印江| 湄潭县| 平山县| 云梦县| 平谷区| 黄平县| 阜城县| 柳州市| 奉化市| 岚皋县| 达尔| 永平县| 名山县| 钟祥市| 桂东县| 禹城市| 汉源县| 海安县| 安达市| 视频| 和平县| 定结县| 兴隆县| 香河县| 云阳县| 临高县| 正蓝旗|