亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

嵌入式以太網(wǎng)驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):從MAC/PHY調(diào)試到性能優(yōu)化

嵌入式以太網(wǎng)驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):從MAC/PHY調(diào)試到性能優(yōu)化 做嵌入式驅(qū)動(dòng)開發(fā)這些年以太網(wǎng)這個(gè)坑算是踩得最深也最有收獲的一個(gè)領(lǐng)域。從早期的百兆芯片到現(xiàn)在的千兆、2.5G從簡(jiǎn)單的RGMII到復(fù)雜的SGMII再到工業(yè)現(xiàn)場(chǎng)跟各種設(shè)備做以太網(wǎng)通訊幾乎每個(gè)項(xiàng)目都能遇到全新的問題。今天這一期我把自己在Ethernet以太網(wǎng)驅(qū)動(dòng)開發(fā)上積累的經(jīng)驗(yàn)整理出來從底層原理到實(shí)際調(diào)試從性能優(yōu)化到工業(yè)場(chǎng)景踩坑一次性說透。無論你是剛開始接觸網(wǎng)絡(luò)驅(qū)動(dòng)的新手還是已經(jīng)在MAC和PHY之間掙扎了一段時(shí)間的同行這篇內(nèi)容應(yīng)該都能提供一些參考。很多剛?cè)腴T的朋友容易把以太網(wǎng)驅(qū)動(dòng)理解為“配置寄存器、啟用DMA、收發(fā)包就完事”但實(shí)際上驅(qū)動(dòng)只是整個(gè)網(wǎng)絡(luò)路徑中的一環(huán)。你寫的是網(wǎng)卡驅(qū)動(dòng)但你的代碼要跟協(xié)議棧、PHY、甚至交換機(jī)、對(duì)端設(shè)備發(fā)生關(guān)系。所以我先說清楚以太網(wǎng)驅(qū)動(dòng)開發(fā)核心是理解數(shù)據(jù)流而不是只會(huì)翻datasheet。1. 以太網(wǎng)驅(qū)動(dòng)開發(fā)的核心思路從MAC到PHY的整體認(rèn)知1.1 網(wǎng)絡(luò)分層視角下的驅(qū)動(dòng)邊界以太網(wǎng)驅(qū)動(dòng)處于硬件和協(xié)議棧之間往上對(duì)接Linux內(nèi)核的net_device結(jié)構(gòu)體往下直接操作MAC控制器和PHY芯片。驅(qū)動(dòng)需要處理的是內(nèi)核協(xié)議棧傳來的sk_buff通過DMA發(fā)送到MAC再由PHY轉(zhuǎn)換成物理層信號(hào)反過來PHY收到的電信號(hào)經(jīng)過MAC還原成幀DMA搬到內(nèi)存再上交協(xié)議棧。我見過很多人調(diào)試網(wǎng)絡(luò)不通第一步就去看寄存器這沒錯(cuò)但容易迷失方向。更穩(wěn)妥的做法是先確認(rèn)物理層鏈路是否ok——PHY是否完成了自協(xié)商link是否established然后看MAC是否收到了幀再看DMA描述符是否有數(shù)據(jù)。這種從物理層往上層走的排查思路能讓你少走很多彎路。驅(qū)動(dòng)開發(fā)的第一個(gè)關(guān)鍵邊界是搞清楚哪些事情由硬件做哪些由驅(qū)動(dòng)做。比如CRC校驗(yàn)、幀間隙、MAC地址過濾這些絕大多數(shù)MAC硬件都做了驅(qū)動(dòng)不需要重復(fù)處理。但有些功能比如VLAN tag插入、TCP分段卸載TSO雖然硬件支持驅(qū)動(dòng)也要做很多配置和狀態(tài)維護(hù)工作。這里面的“度”沒把握好就會(huì)出現(xiàn)莫名其妙的丟包或者性能問題。第二個(gè)邊界是PHY管理。PHY芯片的寄存器空間需要通過MDIO總線訪問通常由MAC的MDIO控制器或者獨(dú)立的MDIO硬件完成。驅(qū)動(dòng)要負(fù)責(zé)PHY的復(fù)位、自協(xié)商觸發(fā)、速度/雙工模式讀取、loopback測(cè)試等。很多新人在初始化時(shí)只做一次PHY配置后續(xù)不管了結(jié)果遇到熱插拔或者對(duì)端設(shè)備切換速率鏈路就僵死。正確的做法是注冊(cè)PHY中斷或者輪詢link狀態(tài)實(shí)時(shí)響應(yīng)鏈路變化。1.2 速率與介質(zhì)1G/2.5G Ethernet 的PCS/PMA 與 SGMII 到底在說什么我們?cè)谶x型的時(shí)候經(jīng)常會(huì)看到“1G/2.5G Ethernet PCS/PMA or SGMII”這樣的描述。很多工程師一看到PCS/PMA就頭大其實(shí)它指的是PHY內(nèi)部的兩個(gè)子層。PCSPhysical Coding Sublayer負(fù)責(zé)編碼、加擾、對(duì)齊等。千兆以太網(wǎng)用的是8B/10B編碼2.5G以太網(wǎng)在SGMII接口上往往也是基于類似的編碼方式。PMAPhysical Medium Attachment負(fù)責(zé)串并轉(zhuǎn)換、時(shí)鐘恢復(fù)和信號(hào)調(diào)制。簡(jiǎn)單說PCS解決“數(shù)據(jù)怎么變成可以在線上傳輸?shù)拇a流”PMA解決“碼流怎么通過物理線纜發(fā)出去”。而SGMII是一種MAC和PHY之間的接口協(xié)議它本身是一種串行接口類似于SerDes。SGMII可以承載1Gbps或更低的速率而2.5G Ethernet的SGMII通常是2500Mbps有些芯片也支持“USXGMII”這類擴(kuò)展接口。當(dāng)你看到“1G/2.5G Ethernet PCS/PMA or SGMII”指的是PHY支持這些接口模式你需要在驅(qū)動(dòng)里通過寄存器配置選擇合適的模式。實(shí)際項(xiàng)目里我們用的主控芯片可能內(nèi)置了MAC但缺少PHY或者PHY是外掛的。MAC和PHY之間的接口常見的有RGMII千兆常用的并行接口時(shí)鐘125MHz數(shù)據(jù)雙沿采樣引腳多但布線相對(duì)簡(jiǎn)單。SGMII串行接口引腳少抗干擾強(qiáng)適合高速和板間互聯(lián)。QSGMII4個(gè)SGMII復(fù)用一對(duì)差分線主要用于交換機(jī)芯片。驅(qū)動(dòng)開發(fā)時(shí)要特別注意SGMII的自協(xié)商機(jī)制。SGMII本身也有自協(xié)商但它不是標(biāo)準(zhǔn)的802.3自協(xié)商而是MAC和PHY之間的速率協(xié)商。驅(qū)動(dòng)里需要正確配置MAC側(cè)的SGMII自適應(yīng)通常是在MAC寄存器中使能SGMII autoneg同時(shí)也要讓PHY側(cè)配合。這個(gè)配置如果不對(duì)經(jīng)常出現(xiàn)PHY link up但數(shù)據(jù)不通或者M(jìn)AC和PHY速率不一致的情況。有一種比較陰間的現(xiàn)象PHY顯示鏈接速率是1G但MAC那邊配置的是2.5G結(jié)果就是能收到一點(diǎn)數(shù)據(jù)但丟包率極高。排查這種問題需要同時(shí)讀取MAC側(cè)的狀態(tài)寄存器通常有l(wèi)ink速度指示和PHY側(cè)的速度寄存器對(duì)比兩邊是否一致。這也是我強(qiáng)調(diào)“接口配置必須兩端對(duì)齊”的原因。2. 驅(qū)動(dòng)開發(fā)中的關(guān)鍵環(huán)節(jié)接口、描述符與中斷處理2.1 從RGMII到SGMII的接口選擇與配置選擇RGMII還是SGMII很多時(shí)候不是開發(fā)人員能決定的而是硬件工程師根據(jù)板級(jí)布局和成本定的。作為驅(qū)動(dòng)開發(fā)者你需要做的是適配。RGMII的配置要點(diǎn)主要是時(shí)鐘延時(shí)。RGMII規(guī)范要求數(shù)據(jù)在時(shí)鐘的雙沿采樣但實(shí)際布線時(shí)數(shù)據(jù)信號(hào)和時(shí)鐘信號(hào)可能存在偏差。于是就有了“tx delay”和“rx delay”的概念。很多MAC和PHY都支持在內(nèi)部插入延時(shí)通過寄存器配置。例如你可以設(shè)置MAC側(cè)的TX clock delay或者讓PHY側(cè)提供RX clock delay。這個(gè)配置必須在驅(qū)動(dòng)初始化階段完成而且要跟硬件原理圖對(duì)應(yīng)。我遇到過一塊板子初始化PHY后ping不通后來發(fā)現(xiàn)是RGMII的RX延時(shí)沒有配置導(dǎo)致MAC在時(shí)鐘沿采樣數(shù)據(jù)時(shí)采到的都是毛刺。加上delay之后一切正常。所以RGMII調(diào)試時(shí)如果你不確定延時(shí)配置可以用PHY的loopback模式測(cè)試MAC側(cè)的數(shù)據(jù)通路再逐項(xiàng)排查。SGMII的配置相對(duì)簡(jiǎn)單因?yàn)樗谴胁罘志€不需要考慮并行數(shù)據(jù)的時(shí)鐘偏移。但SGMII也有自己的坑協(xié)商失敗。特別是當(dāng)對(duì)端設(shè)備是交換機(jī)或者另一個(gè)開發(fā)板時(shí)如果SGMII配置不是“自協(xié)商固定從模式”可能需要強(qiáng)制設(shè)置速度。我記得有一款PHY默認(rèn)SGMII從模式必須等到對(duì)端發(fā)送自協(xié)商配置才能建立鏈路這在有些場(chǎng)景下會(huì)導(dǎo)致長(zhǎng)時(shí)間無法link up。解決方法是把SGMII配置為master模式自己主動(dòng)發(fā)起協(xié)商。2.2 DMA描述符環(huán)設(shè)計(jì)與內(nèi)存屏障無論MAC是內(nèi)置還是外置絕大多數(shù)以太網(wǎng)控制器都使用DMA搬運(yùn)網(wǎng)絡(luò)數(shù)據(jù)避免CPU逐字節(jié)拷貝。DMA描述符環(huán)是整個(gè)驅(qū)動(dòng)的核心數(shù)據(jù)結(jié)構(gòu)它描述了一塊內(nèi)存緩沖區(qū)的位置、長(zhǎng)度、狀態(tài)等信息。驅(qū)動(dòng)需要維護(hù)發(fā)送描述符環(huán)和接收描述符環(huán)。接收描述符環(huán)的初始化尤其重要。你需要為每個(gè)描述符分配一個(gè)緩沖區(qū)sk_buff的data區(qū)并把物理地址寫入描述符。然后設(shè)置擁有權(quán)位交給硬件。硬件收到數(shù)據(jù)后會(huì)填充緩沖區(qū)并把狀態(tài)位更新為“已接收”驅(qū)動(dòng)在中斷或輪詢中掃描描述符發(fā)現(xiàn)擁有權(quán)變化就知道有數(shù)據(jù)到了。這里有幾個(gè)容易犯的錯(cuò)分配緩沖區(qū)時(shí)沒有做cache對(duì)齊。網(wǎng)絡(luò)DMA要求緩沖區(qū)物理地址對(duì)齊到cache line否則可能出現(xiàn)數(shù)據(jù)不一致。沒有處理“擁有權(quán)”標(biāo)志。有些芯片用描述符的最后一個(gè)bit來表示歸屬驅(qū)動(dòng)在回收描述符時(shí)如果寫錯(cuò)了會(huì)覆蓋硬件正在使用的描述符。環(huán)形隊(duì)列的索引管理。發(fā)送和接收的索引要明確區(qū)分“硬件當(dāng)前使用的索引”和“驅(qū)動(dòng)當(dāng)前處理的索引”兩者沒理清就會(huì)丟包或者卡死。內(nèi)存屏障也是一個(gè)關(guān)鍵點(diǎn)。CPU往描述符寫入狀態(tài)后需要確保寫入順序?qū)MA可見DMA更新狀態(tài)后CPU讀取時(shí)也需要屏障。在Linux驅(qū)動(dòng)中通常使用dma_wmb()和dma_rmb()。有朋友問過我為什么加了mb()還是有問題其實(shí)是因?yàn)閙b()是全屏障性能損耗大而且有些架構(gòu)下語義不完全匹配DMA場(chǎng)景。正確的做法是嚴(yán)格區(qū)分讀寫方向。我在調(diào)試一個(gè)eMMC和網(wǎng)絡(luò)DMA互相干擾的項(xiàng)目時(shí)發(fā)現(xiàn)描述符狀態(tài)一直讀取不到硬件更新后來檢查發(fā)現(xiàn)是描述符本身被分配到了非DMA安全區(qū)域。所以在分配描述符時(shí)一定要用dma_alloc_coherent()或者類似接口保證內(nèi)存不會(huì)被cache寫回覆蓋。2.3 中斷與輪詢的取舍以太網(wǎng)驅(qū)動(dòng)通常有兩種收包模式中斷驅(qū)動(dòng)和NAPI輪詢。中斷是及時(shí)但高吞吐時(shí)頻繁中斷會(huì)吃掉CPUNAPI是把中斷和輪詢結(jié)合起來用少量中斷配合輪詢批量收包。Linux內(nèi)核默認(rèn)使用NAPI這也是為什么netdev驅(qū)動(dòng)里都有一個(gè)poll回調(diào)。輪詢的實(shí)現(xiàn)并不復(fù)雜在中斷處理函數(shù)里關(guān)閉發(fā)送/接收中斷激活NAPI調(diào)度poll執(zhí)行。poll中循環(huán)處理發(fā)送完成和接收數(shù)據(jù)直到預(yù)算耗盡或者無包可收后重新開啟中斷。這個(gè)機(jī)制看著普通但對(duì)驅(qū)動(dòng)性能影響很大。你要合理設(shè)置weight參數(shù)比如100、200或者更大。weight越大單次poll時(shí)間越長(zhǎng)但CPU占用也高。我通常的做法是根據(jù)實(shí)際吞吐測(cè)試結(jié)果調(diào)整以CPU占用不超標(biāo)為前提盡量提高weight。還有個(gè)細(xì)節(jié)有些MAC控制器在收包時(shí)會(huì)自動(dòng)禁用接收中斷驅(qū)動(dòng)如果忘了在poll中重新開啟就會(huì)出現(xiàn)“網(wǎng)絡(luò)死”的現(xiàn)象。我在自己的驅(qū)動(dòng)里都是把“重新使能中斷”放在poll函數(shù)的最后并加一個(gè)dummy read來保證寄存器寫入順序。3. 實(shí)際調(diào)試從寄存器到數(shù)據(jù)流的排錯(cuò)實(shí)戰(zhàn)3.1 PHY 初始化與自協(xié)商狀態(tài)機(jī)PHY的初始化不是簡(jiǎn)單的reset然后配置寄存器而是要理解PHY的狀態(tài)機(jī)。PHY上電后通常處于ENERGY-DETECT狀態(tài)不斷探測(cè)介質(zhì)是否有信號(hào)。當(dāng)檢測(cè)到對(duì)端設(shè)備時(shí)進(jìn)入自協(xié)商狀態(tài)交換能力信息最終確定速率和雙工模式。驅(qū)動(dòng)里需要確保在PHY完成自協(xié)商后再去配置MAC的速率和雙工。如果MAC側(cè)先配置了錯(cuò)誤的速率即使PHY協(xié)商好了數(shù)據(jù)也發(fā)不出去。常見的做法是使用PHY驅(qū)動(dòng)的adjust_link回調(diào)在link up時(shí)讀取PHY的狀態(tài)然后更新MAC的配置。另外自協(xié)商超時(shí)問題很常見。有些PHY的寄存器配置不當(dāng)會(huì)導(dǎo)致自協(xié)商失敗或者反復(fù)重啟。調(diào)試時(shí)可以先用ethtool -s eth0 autoneg off speed 1000 duplex full強(qiáng)制固定速率確認(rèn)鏈路是否能通再排查自協(xié)商。但要注意強(qiáng)制速率時(shí)MAC側(cè)必須同步配置不能只改PHY。3.2 用Wireshark和抓包工具定位問題很多嵌入式工程師看不起抓包覺得嵌入式環(huán)境沒有條件。其實(shí)現(xiàn)在的開發(fā)板大多有兩個(gè)網(wǎng)口一個(gè)跑業(yè)務(wù)一個(gè)做管理或者用交換機(jī)鏡像端口都能方便地抓包。在驅(qū)動(dòng)調(diào)試階段我強(qiáng)烈建議盡早接上抓包工具。當(dāng)出現(xiàn)“ping不通”的情況先用Wireshark抓包看有沒有請(qǐng)求發(fā)出。如果抓不到任何幀說明數(shù)據(jù)沒有從MAC送出去問題可能在驅(qū)動(dòng)或硬件如果能抓到請(qǐng)求但收不到應(yīng)答說明請(qǐng)求到了對(duì)端對(duì)端的應(yīng)答可能沒回來或者我們的MAC沒有收到如果收到了應(yīng)答但協(xié)議棧沒反應(yīng)那可能是MAC地址、VLAN或者校驗(yàn)和的問題。我在調(diào)試一個(gè)工業(yè)網(wǎng)關(guān)時(shí)發(fā)現(xiàn)設(shè)備能被ping通但TCP連接建立失敗。抓包發(fā)現(xiàn)SYN包發(fā)出后對(duì)端回了SYN-ACK但我們的設(shè)備沒再發(fā)ACK而且不停地重傳SYN。進(jìn)一步查發(fā)現(xiàn)TCP校驗(yàn)和計(jì)算錯(cuò)誤。原因是MAC硬件開啟了TCP校驗(yàn)和卸載TX checksum offload但驅(qū)動(dòng)沒有正確設(shè)置sk_buff的ip_summed標(biāo)志導(dǎo)致硬件計(jì)算的校驗(yàn)和覆蓋了協(xié)議棧算好的值結(jié)果反而錯(cuò)了。把ip_summed設(shè)為CHECKSUM_PARTIAL之后一切正常。3.3 常見問題速查表我整理了一下這幾年遇到的最多的以太網(wǎng)驅(qū)動(dòng)問題做成表格方便大家對(duì)照排查?,F(xiàn)象可能原因排查思路link up但ping不通MAC/PHY速度不一致或RGMII延時(shí)錯(cuò)誤檢查MAC和PHY速度寄存器調(diào)整RX/TX delay測(cè)試loopback能收到包但丟包嚴(yán)重DMA描述符不足或緩沖區(qū)被覆蓋檢查描述符環(huán)大小確認(rèn)擁有權(quán)位處理正確多ring緩沖區(qū)傳輸速度只有100MPHY沒有協(xié)商上千兆或線纜/接口問題用ethtool查看自協(xié)商結(jié)果強(qiáng)制千兆測(cè)試更換線纜TCP吞吐量極低中斷頻繁或TSO/GRO未開啟開啟NAPI確認(rèn)ethtool -K支持TSO檢查中斷合并設(shè)備長(zhǎng)時(shí)間運(yùn)行后斷網(wǎng)PHY熱鏈接檢測(cè)失效或看門狗超時(shí)實(shí)現(xiàn)PHY link狀態(tài)輪詢?cè)黾渔溌坊謴?fù)流程發(fā)送方向正常接收方向不通接收DMA描述符不完整或接收中斷未使能檢查接收描述符初始化確認(rèn)中斷配置用loopback測(cè)試接收路徑無法與特定設(shè)備通訊對(duì)端設(shè)備MAC地址過濾或協(xié)議不匹配抓包確認(rèn)對(duì)端是否回包檢查MAC地址表檢查VLAN和協(xié)議字段這張表不可能是全的但覆蓋了大部分初級(jí)問題。很多時(shí)候問題不在驅(qū)動(dòng)本身而在硬件設(shè)計(jì)或者PHY配置所以在排查時(shí)要大膽假設(shè)小心驗(yàn)證。4. 工業(yè)場(chǎng)景中的以太網(wǎng)驅(qū)動(dòng)與焊機(jī)等設(shè)備通訊的經(jīng)驗(yàn)分享4.1 安川焊機(jī)以太網(wǎng)通訊的痛點(diǎn)最近一個(gè)項(xiàng)目里我需要讓嵌入式主控通過以太網(wǎng)與安川焊機(jī)通訊實(shí)現(xiàn)焊接參數(shù)下發(fā)和狀態(tài)讀取。這類工業(yè)設(shè)備使用的以太網(wǎng)協(xié)議往往不是標(biāo)準(zhǔn)TCP/IP而是基于Ethernet/IP、Profinet或特定廠商私有協(xié)議。安川焊機(jī)有些型號(hào)支持TCP/UDP但通訊報(bào)文有特定的格式要求比如首尾字節(jié)固定、CRC校驗(yàn)、數(shù)據(jù)長(zhǎng)度固定等。在這里驅(qū)動(dòng)層面其實(shí)不需要做太多特殊事情因?yàn)門CP/IP協(xié)議棧已經(jīng)替我們搞定了。真正麻煩的是應(yīng)用層的協(xié)議解析和時(shí)序控制。但從驅(qū)動(dòng)開發(fā)角度有兩個(gè)點(diǎn)需要特別留意第一工業(yè)設(shè)備的以太網(wǎng)端口通常不響應(yīng)ARP請(qǐng)求或者M(jìn)AC地址過濾嚴(yán)格。如果主控通過MAC地址白名單方式連接設(shè)備那么驅(qū)動(dòng)可能需要構(gòu)造特殊的ARP包或者干脆不用ARP直接靜態(tài)ARP表項(xiàng)。第二有些工業(yè)設(shè)備會(huì)在連接空閑時(shí)主動(dòng)斷開或者發(fā)送特定的“心跳包”。驅(qū)動(dòng)和協(xié)議棧需要配合在socket層面保持連接。否則你會(huì)發(fā)現(xiàn)過一段時(shí)間TCP連接還在但數(shù)據(jù)已經(jīng)發(fā)不過去了。另外工業(yè)現(xiàn)場(chǎng)電磁干擾嚴(yán)重網(wǎng)線很容易出現(xiàn)瞬斷。此時(shí)PHY的link狀態(tài)會(huì)反復(fù)變動(dòng)。驅(qū)動(dòng)要能快速感知link down并在link up后自動(dòng)恢復(fù)。我的做法是用內(nèi)核的PHY狀態(tài)機(jī)注冊(cè)phy_start()和phy_stop()流程配合PHY中斷每次link變化都打印日志并通知網(wǎng)絡(luò)協(xié)議棧執(zhí)行重連。4.2 協(xié)議無關(guān)的驅(qū)動(dòng)設(shè)計(jì)思路做嵌入式驅(qū)動(dòng)有時(shí)會(huì)被要求適配多種不同的設(shè)備和協(xié)議。比如同樣是焊接控制器有的用標(biāo)準(zhǔn)Modbus TCP有的用私有協(xié)議。驅(qū)動(dòng)如果做得很死每個(gè)協(xié)議都要改一遍就會(huì)很痛苦。我的建議是在驅(qū)動(dòng)層保持“協(xié)議無關(guān)”只負(fù)責(zé)把以太網(wǎng)幀正確地收發(fā)出去所有協(xié)議解析都放到上層應(yīng)用。為此驅(qū)動(dòng)需要提供干凈的接口比如注冊(cè)netdev_ops上層用socket訪問而不是在驅(qū)動(dòng)里解析業(yè)務(wù)報(bào)文。還有一點(diǎn)工業(yè)場(chǎng)景經(jīng)常用到VLAN。比如一臺(tái)設(shè)備同時(shí)連接辦公網(wǎng)和工業(yè)網(wǎng)VLAN隔離可以防止廣播風(fēng)暴。驅(qū)動(dòng)要支持VLAN offload和VLAN過濾。Linux內(nèi)核有現(xiàn)成的ndo_vlan_rx_add_vid回調(diào)驅(qū)動(dòng)只需要在寄存器中配置VLAN ID即可。我在開發(fā)支持多種工業(yè)協(xié)議的主控板時(shí)把驅(qū)動(dòng)的重點(diǎn)放在穩(wěn)定性和可配置性上。比如通過設(shè)備樹參數(shù)配置MAC地址、PHY地址、VLAN ID、速率甚至中斷觸發(fā)方式。這樣同一個(gè)驅(qū)動(dòng)二進(jìn)制就能適配不同的設(shè)備子型號(hào)節(jié)省了很多維護(hù)成本。4.3 關(guān)于Apple Mobile Device Ethernet的插曲最近熱搜里有“apple mobile device ethernet下載”這個(gè)詞一度讓我很迷惑。后來才明白這其實(shí)是指蘋果設(shè)備比如iPhone、iPad在連接電腦時(shí)通過USB拔號(hào)網(wǎng)絡(luò)或者以太網(wǎng)適配器模擬出的一個(gè)網(wǎng)絡(luò)接口。這個(gè)場(chǎng)景在物聯(lián)網(wǎng)開發(fā)里也有價(jià)值比如你想用iOS設(shè)備與嵌入式主板通訊可以通過雷電轉(zhuǎn)以太網(wǎng)適配器或者通過USB共享網(wǎng)絡(luò)。從驅(qū)動(dòng)開發(fā)的視角當(dāng)你把蘋果設(shè)備插入電腦系統(tǒng)會(huì)識(shí)別出一個(gè)“Apple Mobile Device Ethernet”設(shè)備這個(gè)設(shè)備本質(zhì)上是一個(gè)USB網(wǎng)卡。它的驅(qū)動(dòng)是蘋果官方提供的在macOS和Windows上都有。對(duì)嵌入式開發(fā)者來說相關(guān)經(jīng)驗(yàn)就是你的嵌入式設(shè)備如果支持USB gadget的RNDIS或者ECM協(xié)議也可以被電腦識(shí)別為一個(gè)虛擬網(wǎng)卡從而進(jìn)行網(wǎng)絡(luò)調(diào)試。但要注意蘋果設(shè)備的以太網(wǎng)接口默認(rèn)可能只支持特定速率和協(xié)議。所以如果你用自研的設(shè)備去跟蘋果設(shè)備通訊最好先確認(rèn)雙方的USB以太網(wǎng)類兼容性特別是驅(qū)動(dòng)中的描述符配置。這里就不展開細(xì)說了但至少說明以太網(wǎng)驅(qū)動(dòng)并不局限于物理網(wǎng)口還包含USB虛擬網(wǎng)卡等形態(tài)。5. 驅(qū)動(dòng)性能優(yōu)化與穩(wěn)定性保障5.1 吞吐量?jī)?yōu)化零拷貝與多隊(duì)列當(dāng)你的驅(qū)動(dòng)能正常收發(fā)數(shù)據(jù)之后性能和穩(wěn)定性就是下一步目標(biāo)。在嵌入式平臺(tái)上吞吐量的瓶頸往往不是網(wǎng)絡(luò)帶寬而是內(nèi)存拷貝和中斷開銷。零拷貝是一個(gè)繞不開的話題。Linux協(xié)議棧的sk_buff本身支持headroom和frag機(jī)制驅(qū)動(dòng)在接收數(shù)據(jù)時(shí)最好讓DMA直接填充到sk_buff的數(shù)據(jù)區(qū)避免額外拷貝一次。發(fā)送方向則可以利用sendpage或者M(jìn)SG_ZEROCOPY讓協(xié)議棧的數(shù)據(jù)直接進(jìn)入DMA描述符。多隊(duì)列RSS/Flow PIR在高吞吐場(chǎng)景下很重要。如果MAC支持多隊(duì)列你可以把不同數(shù)據(jù)流的包分配到不同的DMA通道和CPU核心極大提升并發(fā)處理能力。但嵌入式CPU核心數(shù)不多多隊(duì)列也可能帶來更多中斷需要根據(jù)實(shí)際情況權(quán)衡。我在一個(gè)四核ARM平臺(tái)上把單個(gè)隊(duì)列改成雙隊(duì)列并綁定兩個(gè)中斷到不同的CPU核心吞吐量提升了約30%。代價(jià)是CPU占用率從60%升到了70%但整體吞吐從900Mbps提升到了1.2Gbps基于2.5G網(wǎng)口。所以多隊(duì)列不是萬能的但值得嘗試。5.2 電源管理與鏈路檢測(cè)嵌入式設(shè)備對(duì)功耗敏感網(wǎng)絡(luò)驅(qū)動(dòng)的電源管理往往容易被忽略。MAC和PHY通常都有低功耗模式但在進(jìn)入低功耗前要確保沒有未完成的DMA傳輸。否則數(shù)據(jù)寫到一半設(shè)備睡眠醒來后描述符狀態(tài)不一致就會(huì)導(dǎo)致驅(qū)動(dòng)卡死。鏈路檢測(cè)要盡量不依賴定時(shí)器最好用PHY中斷。有些PHY支持活動(dòng)中斷和link狀態(tài)變化中斷驅(qū)動(dòng)在link_change回調(diào)中執(zhí)行相應(yīng)操作。如果PHY不支持中斷就只能周期性地讀寄存器但輪詢間隔不能太短建議2秒左右。太短會(huì)增加功耗太長(zhǎng)則反應(yīng)遲鈍。我遇到過一個(gè)項(xiàng)目設(shè)備為了省電在空閑時(shí)關(guān)閉PHY但喚醒時(shí)總是出現(xiàn)第一次ping不通。后來發(fā)現(xiàn)喚醒后PHY的自協(xié)商需要幾秒而網(wǎng)絡(luò)協(xié)議棧已經(jīng)在喚醒后立刻發(fā)起了ARP請(qǐng)求。解決方法是在驅(qū)動(dòng)喚醒流程中等待PHY完成自協(xié)商后再上報(bào)__LINK_STATE_START或者通過netif_carrier_on()延遲上報(bào)link。5.3 長(zhǎng)期穩(wěn)定運(yùn)行的注意事項(xiàng)嵌入式設(shè)備往往要求7x24小時(shí)運(yùn)行驅(qū)動(dòng)在這種環(huán)境下最容易出現(xiàn)的問題是內(nèi)存泄漏和描述符耗盡。內(nèi)存泄漏可能來自每個(gè)收包分發(fā)的緩沖區(qū)沒有正確釋放。我在檢查一個(gè)老代碼時(shí)發(fā)現(xiàn)接收路徑中每次丟包都直接調(diào)用dev_kfree_skb_any()但有些分支沒有釋放導(dǎo)致內(nèi)存緩慢增長(zhǎng)。這類問題很難查需要借助kmemleak工具或者定期查看/proc/net/skbuff這樣的信息。描述符耗盡也常見。比如發(fā)送路徑中如果上層快速發(fā)送大量小包而驅(qū)動(dòng)沒有及時(shí)回收發(fā)送完成描述符環(huán)形隊(duì)列會(huì)滿導(dǎo)致NETDEV_TX_BUSY。解決方法是在發(fā)送的時(shí)候檢查描述符是否夠用不夠用就停止發(fā)送隊(duì)列等完成中斷后重啟隊(duì)列。這個(gè)邏輯我每次都會(huì)認(rèn)真檢查因?yàn)橐粋€(gè)簡(jiǎn)單的錯(cuò)誤就會(huì)造成死鎖。另外建議給驅(qū)動(dòng)添加debugfs接口可以手動(dòng)查看描述符環(huán)狀態(tài)、PHY寄存器、中斷統(tǒng)計(jì)。我在正式項(xiàng)目中一定會(huì)在debugfs里面放一個(gè)“手動(dòng)觸發(fā)link down再恢復(fù)”的測(cè)試入口方便生產(chǎn)測(cè)試和現(xiàn)場(chǎng)排查。這不難但對(duì)故障定位非常有幫助。結(jié)語最后分享一個(gè)我自己的習(xí)慣。每次寫以太網(wǎng)驅(qū)動(dòng)我都會(huì)先把PHY的寄存器表打印出來保存一份完整的狀態(tài)基線。一旦后續(xù)出現(xiàn)通訊問題我可以快速對(duì)比寄存器值判斷是PHY配置變了還是硬件鏈路有問題。這個(gè)方法幫我解決了不少“莫名其妙”的網(wǎng)絡(luò)故障。如果你也是做嵌入式驅(qū)動(dòng)開發(fā)的不妨試試。另外記得在驅(qū)動(dòng)代碼里加足夠多的日志別嫌麻煩關(guān)鍵時(shí)刻就是這些日志救了你。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久透逼视频| 亚洲激情视频| 999狠狠综合| 日韩欧美午夜一区二区| 激情一区二区| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 老女人老91妇女老热女| 久久人妻丝袜一区二区三| 黄色一区二区秘书性感| 玖玖爱在线视频免费观看| 亚洲999综合| 91扒丝袜综合在线| 天美AV片| 天天操av懂色| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 欧美一二三区四五区| 大香蕉黄色一区| 一级性爱啪啪视频| 日本性爱网址| 日本熟女中文| 亚洲色综合| 黄片免费久久久久久久| 无遮挡猛进视频免费无限观看| 黄片免费视频2019| 久久久99免费| 无码精品久久| www.99色| Av手机版天堂网| 亚洲欧美人妻| 18禁看网站一区| 久久久91| 国产精品96| 97国产精品一区二区传媒公司| 国产精品97超碰| 色偷综合| 插B在线观看| 黄色一区三区| 丁香7月婷婷| 超碰97久久观看| 美女诱惑在线一区| 操淫穴亚洲五月丁香| 伊人久久久日韩一区| av午夜玫瑰| 亚洲色图加勒比| 97色冈| 97WW精品| 精爱久久| 蜜桃久久久久久久久久久久| 日本最新1区2区3区| 亚洲黄色网址| 亚洲成人贴图| 欧美午夜精品久久久久久超碰| 综合网天天| 亚洲欧美国产其他二区| 综合色啪| 情色五月天久久久| 国产精品乱码久久久、久久| 欧美色91| 黄片视频观看| 国产操操日韩三级黄| 国产精品自在自拍视频| 人妻嗯啊啊在线播放| 99热这里只有精品99| 欧洲射精91| 久久久久元码视频| 久久精品国产Aⅴ| 久久久爆乳翘臀一线天伦理视频| 亚洲不卡AV在线| 日韩欧美成人大香蕉| 干B| 九九九九一区| 国产亚洲福利第一页丝袜| 久久亚洲欧美中文字幕国语| 国产免费久久久久| 亚洲综合99999| 久久这里只| heyZO天然素人无码AⅤ专区| 婷婷精品视频| 欧美第一页| 久久久新亚洲AV| 国产精品激情久久久久久久| 女人天堂AV五区在线| 成人黄页| 亚洲一区在线观看欧洲| 激情四射五月天| 欧美 亚洲 大香| 国产深喉| 搡老熟女老女人老熟妇免费视频| 色拍偷亚洲| 五月丁香黄色网| 思思热免费视频观看| 伊人影院在线理论播放 | 中文字幕在线免费观看 | 91真人天天在线| 97超碰超| 综合色啪| 大香蕉狠狠爱| 免费一级视频特黄色大片| 97人人中文网| 亚洲欧美小说| 欧美天天插| 男人天堂毛片| 激情干在线| 天天色怡春院| 久久无码成人| 四虎影视永久在线观看精品免费网站| 亚洲欧洲中文日韩女优乱码| 麻豆天美电影一区二区| 校园春色美腿丝袜| 99在线观看| 偷拍新久久| 日韩 欧美 另类 人妻| 午夜精品久久久99| 内射小黄片| 99re3这里只有精品| 变态综合色| 丝袜美腿制服人妻二区中文字幕| 在线情色电影 91大| 中文字幕老熟妇黄色视频| 日韩精品国模| 黑人嘿嘿嘿超爽免费视频| 人妻爽爽啪视频| 亚洲国产91精品一区二区久久| 亚洲情色一区综合| 天天视频黄| 欧美一二三区四五区| 五月丁香六月综合缴清无码| 中文字幕一二三区| 国产家庭乱伦表演| 色噜噜人妻丝袜AV资源| 黄色一区二区秘书性感| 天美传媒精品久久视频| 亚洲人人操| 亚洲欧美在线丝袜| 一个人在线看的黄色电影网站| 校园春色综合网| 国产精品情侣啪啪| 国产精品日韩在线一区| 狠狠干妹子| 色婷婷色99国产综合精品| 色噜噜人妻av中文字幕| 亚洲熟妇丝袜在线观看| 亚洲综合中文字幕有码| 少妇天堂| 亚洲激情色片| 国产玖玖| 成 人片 黄色大片| 深夜国产福利| 撸撸成人在线视频| 欧美性猛交美女自慰91| 国产第12页| 成人精品欧洲亚洲| www.久久99| 日产操逼| 极品出轨视频网站| 欧美日韩国产电影| 91丨九色丨东北熟女| 亚洲精品国语在线播放| 久久九操在线观看| 欧美亚洲激情小说| 99久久久er直播网址| 天天干夜夜鈤| 另类专区加勒比| 久久婷婷一区二| 亚洲欧洲综合视频在线| 色y情视频免费看| 人妻蜜桃臀| 成人色女网| 欧美十八禁在线看| 操逼操逼视频操逼| 伊人热综合| 18精品一二区| 国产精品久久久久久久免牛肉蒲团| av一区二区三区 中文| 极品销魂美女一区二区| 国产精选视频| 亚洲少妇自拍中文字幕懂色| 久久久久久久久久va| 亚洲综合射| 青春草A| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 久久免费99精品久久久久久| 国产深夜福利| 四方色播| 风间由美日韩欧美久久| 国内一级精品| 天天性射网| 97日视频| 中文字幕片| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 91综合色噜噜| 老鸭窝成人免费毛片视频| 亚洲欧美日韩电影网站一区 | 97精品视频免费| 婷婷综合在线| 91精品久久综合熟女| 日本1区2区不卡视频| 91狠狠综合| 大香蕉中文201| 欧美人妻一区二区| 日本免费二区三区| 九九九偷拍| 伊人在线大香蕉视频久久| 97精品视频免费| 五月天春色激情网| 国产13区| 97硬碰| 禁十八久久| 97色欧州| 啊啊啊好疼| 91欧美性| 青青草国产一区二区三区| 久久超碰98| 一牛一区二区三区久久| 91久久久老司机| 色九九九综合| KK色在线影院| 九九九精品成人免费视频小说| 91综合网站| 久久超碰日韩精品| 超碰成人人人爽人人爽| 欧美视频一| 91超碰人人操| 96精品在线| 91精品成人www| 国产白领连续中出在线观看| 国产精品视频在线播放| 97国产精选| 一二三区精品视频| 国产精品视频内谢女人| 九九精品99| 日本天天操| 无遮挡h肉动漫在线观看| 久久五月婷| 国产精品一区二区在钱播放| 东京热av男人的天堂| 日产123区精品免费观看| 另类专区加勒比| 欧美亚洲天天| 免费av在线播放二区| 国产精品婬乱一级毛片彝族| 国产亚洲一黄| 久久精品视频一区三区小泽玛利亚| 视频在线中文字幕| 久久在线观看免费视频| 一区二区偷拍拍视频| 看黑人AV不卡| 在线洲亚线| 人人操人人摸avav| 激情综合久久| 一区| 日韩小电影| 久久国产免费激情视频| 亚洲人妻一区二区三区| 色网综合网| 爱爱啊啊啊| 人妻精品视频一区二区| 亚洲综合有玛| 国产精品96久久久久久| 日韩另类| 国产女主播视频在线观看| 欧美黄业| 日本精品第一视频在'| 亚洲伊人久久精品狠狠在线| 亚洲情色 欧美| 99re公开精品免费视频| 国产青视频| 少妇色| 图片区小说区| 久操在97| 2018天天日天天日| 久9久| 一本大道青青| 网页导航五月天免费一二三区| 久久久久骚| 自拍六区| 人妻久久久久久久久久久久久久久 | 成人熟女区| 精品视频一区二区| 欧美图片偷拍| 亚洲天天更新| 色色丁香| 久久久久久久久成人av解说| 一道本东京热加勒比一区二区三区| 青娱乐 青青青操 日逼| 亚洲日韩精品一区视频在线| 中文字幕人乱码中文字的预防方法 | 97任你吞精| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 91性高潮久久久久久久久| 99热日| 国产精品干干干| 久久曰曰| 欧美黄片免费在线观看视频| 久久久久久9999| 免费黄色片。| h色99999| 亚洲国产日韩欧美熟妇在线| 蜜臀99久久精品| 婷婷色影院| 色原狠狠天天天| 999国产精品999| 少妇特黄一区二区三区| 日本欧美成人片AAAA| 99re6在线视频播放免费精品| 日韩去日本高清在| 欧美天堂在线| 色狠狠综合噜一二三区| 日韩无码视频黄色| 男人成人黄色视频在线观看免费下载| 国产三级日产三级韩国三级| 色臀AV| 青青草日本无码| 家庭乱伦国产精品| 久久偷偷色综合蜜桃| 亚洲最新中文字幕免费| 亚州黄站| 中美日韩毛片| 日韩一级免费性爱| 美女黄网| 欧洲自拍色图gif在线| 无码人妻丰满热妇又大又粗| www.男人的天堂| 第四色亚洲色图| 十八禁的黄污污免费网站| 亚洲中文字幕久久无码精品| www鬼畜国产男人的天堂| 永久电影三级在线观看| av线电影| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 黄片免费久久久久久久| 91精品国产91熟女| 91激情网| 丝袜熟女2P| 久久精品国产亚洲AV高清演员表 | 色婷婷99| 青椒国产97在线熟女| 夜夜嗨一区二区三区直播内容| 99热色这里只有精品| 日韩人妻播放| 欧美精品精品一区二区| 亚洲中文字幕久久无码精品| 一区| 高清不卡一二三区视频......| 高清无码 国产精品| 超碰在线一区| 国产AV线| 日韩欧美资源| 屌妞视频久久久久久久久久久久| 亚洲中文字幕网| 欧美伊人久久综合网| 不卡视频一区蜜桃视频| 91N综合网在线| AV色天香在线| 超碰资源亚洲97| 成人免费福利网站国产| 成全在线观看免费观看| 国内精品嫩模A∨私拍小视频| 91在线丝袜| 日本九九久久99| 欧美中文字幕一区| 99久久无色码| 精品夜夜澡人妻无码| 亚洲av乱伦色图网站| 亚洲第一精品在线视频| 亚洲欧洲自拍图片专区满春格| 狼人狠干| 999热这里只有精品| 激情小说亚洲图片| 伊人 俄罗斯 a v| 中文字幕88av在线| 一区=区三区视频| 天天综和| 久九九九九九九热| 国产久久久9999| 口爆综合网| 亚洲综合成人网| 玖玖玖玖精品国产剧情| 亚洲国产一级精品毛一级精品看免费视频 | 在线国产探花| 亚洲天堂,男人| 男人的天堂啪啪啪啪啪蜜桃不卡| 久热久| 九九热在线精品视频| 日韩性爱播放| 九九九九九九九精品视频| 99精品免费| 99精品在线观看| 懂色AV一区二区三区| 超碰人人在线| 熟妇人妻精品一区二区视频色欲| 一区二区三区精品黑丝白丝酒店对鸡| 乱人伦 国语对白:视频直接看| 五月综合视频| 九九久久一区二区三区| 啊啊啊啊啊啊好湿好爽视频| 日韩专区久久久| av橘色网站| 亚洲丝袜少妇在线| 欧美片第一页| 精品黑人一区二区| 国产在线不卡导航| 欧美日韩亚洲高清不卡一区二区三区| 大香蕉国产中文自拍| 日韩精品操少妇| 97欧美色| 欧美人人曰人人操人人射射| 国产第25页在线观看| 2018色综合天天操| 亚州乱码中文字幕综合久久久| 亚洲天堂情色| 久久精品28| 国产黄色在线播放观看| 色情五月丁香| 操逼999| 五十路一区无码| 妇女性内射冈站HDWWWCOM| 美女午夜福利免费视频| 国产农村妇女一区二区| 狠狠2050在线观看| 亚洲 欧美 第一页| 亚洲精品一区二区精品| 天天影视之亚洲综合网| 91 手机在线播放 绯色| a人欧美综合天堂麻豆| 超碰久在线天天做| 91操操操操| 最新日产中文在线麻豆| 97网址www| 嗯~啊~快点 死我视频免费看网站| 国产精品97视频| 狠狠色噜噜狠狠狠狠2018| 久精品无码av一区二免费国产在线观看| 天天干天天拍| 国产精品久久久久久久久久二区三区| 成人毛片免费| 99综合视频| 国产乱人妻精品入口| 日韩九九九| 极品美女福利在线观看| 亚洲日本男人天堂网| 啊嗯嗯啊好大好爽| 日韩黄色av中文字幕| 又黄又爽在线观看视频| 欧美综合色图片| 久久综合国产精品国产| 久久女人视频| 国产白丝av| 性爱1区| 殴洲老熟女| 亚洲一区二区三区在线激情| 丁香久久| 色狠狠一区二区三区香蕉| 93人人操人人| 亚洲熟女一区| 乳欲人妻办公室奶水| 欧美爆操91| 啊啊啊想要| 98色网| 国产免费小视频| 国产 丝袜 欧美中文 另类| 成人一区二区三区四区| 国产强奸乱伦xd| 嗯嗯啊啊操死我| 亚洲久久久久| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 国产探花精品在线| 国外91| 天天看天天在线精品| 91骚妇| 欧 美 自 拍 偷 拍| 黄色高清久久无码依人| 欧美亚洲色图另类国产| 91欧美性| a在线观看| 99色热| 蜜臀国产AV中文字幕| 一区二区视频在看| 久久啊哟| 国产久久成人| 九九热午夜欧亚国产视频| 围产精品一区二区三区视频播放| julia ann久久| 噜噜吧,噜噜色,噜噜| 久草免费在线视频| 亚洲中文人妻色| 久久黄片国产一区二区| 日韩 欧美 国产 麻豆| 美女操逼福利视频| 中文字幕人妻丝袜乱一区三区| 五月婷丁香| 黄色无码高清黄色无码网站| 偷拍在线观看视频| 国产成人综合网| 日韩欧无码一区二区三区免费不卡 | 国精综合一二三区影视| 强奸乱亚洲| 99re这里只有精品9| 国产精品午夜成人福利| 青娱乐久久艹| 亚洲国产综合视频| 学生妹天天看| 日韩三级一区| 亚洲天堂AV在线播放| 国产精品夜夜夜| 久操99| 最新日产中文在线麻豆| 97天天| 久久超碰98| 黑丝少妇在线观看| 天天看天天在线精品| 久久97视频| 乱老熟女一区二区三区| 99热精品在线| 熟女精品va中文字幕| 亚洲在线91| 97频视在线| 欧美日韩情色一区二区| 欧美自拍偷拍免费观看| 日韩有码 一区二区三区| 日韩av情韩国爱禁区av一区二区| 啊啊啊啊嗯嗯嗯用力好爽| 黄片视频,下载| 99999精品| 亚洲玖玖爱| a人欧美综合天堂麻豆| 色婷婷99| 无套内射性感少妇视频| 国产无马视频| 欧美亚洲素人制服精品| 日韩一级欧美一级国产一级台湾| 久久久久久无码人妻中文字幕| 女人一区| 色哟哟-国产专区| 五月天开心网| 欧亚在线视频| 韩日无码在线观看| 韩日性爱av| 91看黄片| 久久久久久99AV无码免费网站| 亚洲成a人在线观看久| 婷婷色色五月天福利| 欧美色青| 999精品久久久久久久| 亚洲女优有码无码高清| 综合熟妇一区二区三区| 久久骚| AV中文字幕剧情1区2区3| 色婷婷综合久久中文字幕雪峰| 男人的天堂2019AV| 95人妻爽爽人人做人人澡| 国产麻豆一级精品视频| 五月丁香社区婷婷日韩欧美精品影院| 色色色色日本| 思思性爱| 九热视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 大香蕉综合在线| 97色涩| 日本新免费二区三区| 综合天天网| 美女干逼2| 九一国产精品| 久久老熟女| 色香综合| 国产无码三级视频在线观看| 久久久一区二区三区三州| 男人的天堂午夜av| 亚州操逼图| 97国产成人精品免费视频| 国产无套粉嫩白浆在| 97久久久| 亚洲av总站| 午夜后入| 91青青| 欧美牲| 亚洲色系另类精品国产| 操逼操网| 9 9精品一区二区三区| 日本高清电影欧美色图| 青青操在线亚洲视频观看欧美在线| 中出789在线视频| 91欧美巨乳| 91精品人妻一区二区三区蜜桃| 狠狠干91| 国产三级中文有码在线视频| 丁香五月天堂网| 国精品一区二区三| 日本性一区| 搡老女人老91二区| 欧美性爱中文字幕无线码| 婷婷五月综合在线| 欧美亚洲美少妇一区二区| 成人AV在线网站| 在线αⅴ| 综合色播| 老司机午夜福利视频一区二区| 国产伊人精品在线| 国产真乱mangent| 欧美日韩岛国大片在线观看| 97综合在线观看| 激情小说亚洲视频| 欧美日韩国产成人高清| 久热九九| 加勒比伊人影院| 日本色色色网站免费看不卡| 國產尤物AV尤物在線觀看| 久久久影院| 在线 欧美 亚洲| 国产真乱mangent| 丁香九月激情| 久久久熟女一区| 亚洲国产成人精品999| 99综合网| 大香蕉日亚洲日本亚大| 视频一区二区三区精品| 五月综合激情| 日韩欧美麻豆 | 久热大香蕉网站| 日韩免费一级性爱视频| 操老熟女AV| 天天看天天日| 欧美色图天堂在线| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 96久久久久久久| 色综合久久88色综合久久天天| 九一综合精品视品av| 600国产精品视频| 国产精品久久久久久 百度| 天美一二三在线观看Av| 97色碰| 亚洲高潮少妇| 少妇无码999| 丁香五月天堂网| 天天在线91| 欧美顶级黄色大片免费| 牛牛久久国产精品视频一二三| 日韩电影在线观看网址| 久久久久久久九九九九九九| 偷拍综合网| 大香蕉宗合网在线| 天堂综合网| 日韩草久视频| 亚洲av青草久久一区二区| 亚洲熟妇自偷自拍另欧美| 91欧美网| 情色日播放AV| 亚洲影院365| 激情亚洲天堂| 亚洲成人一区二区精品| 91亚洲欧美综合高清在线| 亚洲一卡2卡3卡4卡乱码网站 | 久久久99999久网站| 国产性久久久| 熟女91网| 五月婷婷色| 精品999999| 欧美日韩电影一区二区| 精品毛片av一区二区| 99热日| 超碰碰碰碰| 欧美天天性| 熟女天天干| 中文字幕亚洲热播人妻| 97人人色| julia在线观看久久| 久久无码一区二区二三区性色| 九草在线大香蕉| 中日韩欧美精品无码AⅤ一区二区| 欧美人妻熟女在线| 天天干一干| 国产JDAV无码视频在线观看| 亚洲宗合网| 久久丁香| 草草影院最新网址| 97ai亚洲| 欧美熟妇人体| 亚洲色图亚洲无码强奸乱伦 | 亚洲 欧美 另类 综合 偷拍| 午夜爽爽爽在线观看永久入口姬片| 日韩精品系列| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 亚洲精品一卡二卡三卡福利视频网站| 欧美性爱视频免费一区一A| 麻豆91熟妇人妻中文字幕茄子| 射丝袜高跟鞋99| 国产欧美日韩精品中文| 无码国产精品96久久久久孕妇| 久久这里| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 日本 成 人 小说 电影 一区二区| 综合伊人激情| 欧美成人精品欧美一级乱黄一区二…| 男人天堂资源| 蜜桃精品视频一区| 九色97| JIZZJIZZ国产精品喷水| 91在线免费精品视频| 玖日综合网| 久久综合精品一区二区三区| 色五月网址| 无码黑人精品一区二区三区三| 夜夜躁狠狠躁日日躁av| 四虎在线免费视频| 国产老熟女| 26uuu欧美| 亚洲国产高清福利视频| 无码精品久久| 欧美国产精品久久九九| 日韩本不卡视频在线观看| 九九九九九九九九九五码| 亚洲综合97中文网| 色色色欧美| 啪一啪免费视频| 国产探花日韩援交| 东京热一区二区中文字幕| 91色欧美| 蜜臀99久久精品| 色阁阁AV综合网| 少妇人妻无码| 蜜臀精品1区2区| 啊啊啊好爽快点啊啊啊嗯嗯| 女人爽到高潮潮喷18禁网站| 探花在线免费观看视频国产一区| 青青青国产手线观看视频2| 久久这里只有精品9| www男人天堂| 极品出轨视频网站| 性欧美| 亚洲第一页综合在线| 蜜桃精品视频一区二区三区| 亚洲宗合网| 操少妞在线视频| 青青草玖玖爱| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 久久极品一区二区| 丰满人妻一区二区三区| 99色婷婷| 偷拍欧美综合| 老女人日韩美91| 亚洲最大的黄色电影网站。| 久久久久久久九九九九九九| 亚洲天堂另类小说男人| 日韩二三区| 超碰 av 女人天堂| 天天干人妻| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 色爱三区| 日本99热| 久久久久久久久久久人妻| 超碰97男人| 亚洲色图 综合| 亚洲午夜蜜臀| 久久在肏| 精品人成视频在线观看| 日本国产亚洲一区在线观看| 日日操免费视频| 国产自产自拍| 曰韩av中文字幕专区| 亚洲高潮少妇| 日韩激情视频| 久久9精品网站| 麻豆av一区二区| 91狠狠综合| 久久精品中文字幕观看| 久久草在线综合视频| 精品国产乱码久久久久久久久1 | 国产精品网址| 日本中文字幕在线视频| 欧美制服网站美腿丝袜| 白丝少妇一区二区| 久草电影网| 性夜影院爽黄A爽免费动漫| 波多野结衣被操50分钟免费视频| 日本国产欧美高清在线| 少妇二级| 麻豆传媒一区二区在线观看| 无套后入双马尾| 亚洲高清无毛一区二区| 十八禁啪啦拍视频无遮挡| 久久久久久久久久久久久久9999| 97网址97| 91色交| 欧美人人AAA| 亚洲色欲一区二区三区| 天天干夜夜| 国产精品人妻一区二区| 伊人婷婷五月天| 性爱AV天堂| 天天操夜夜操| 欧美极度丰满熟妇hd| 日本丝袜美腿人妻九九| 久久日韩肥臀| 福利视频一区二区微拍| 欧美嗯啊……在线观看视频免费| 夜夜嗨老熟女AV一区二区三区| 国产品精品自在在线午夜免费| 国产日韩在线播放| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 中文字幕在线播放2中文字幕在线观看2| 欧美72网页| 97欧美精品| 99ri在线视频| 亚洲综合69| 久久透逼视频| 搡老女人老妇女老妇老熟女怎么读| 精品人妻伦一区二区三区久久| 成人毛片免费| 色欧美天天| 一本大道久| 国产极品99热在线播放69| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日韩高潮一区| 99视频自拍区| 国产97视频免费观看| 美女AV一区二区| 日本性爱视频一级| 亚洲天堂性爱| 另类图片天天影视| 91一区二区| 99久久99九九99九九九| 大地资源在线观看中文第二页| 97在线青| 日韩精品碰碰| 日韩精品大香蕉伊人在线| 亚洲欧美国产中文视频| 一二三啪啪专区| 久久大黄片| 看看小穴| 日本久久女同性恋视频| 超碰97欧美在线| 天久久久噜噜噜久久国产精品爽爽| 亚洲中文字幕精品久久久久久直播| 久久久久无码一妻区| 日韩精品 视频一区二区| 激情四射五月天| 夜间福利片1000无码| 色妇91| 国产女人91精品嗷嗷嗷嗷| 夜夜做夜夜爽精品视频| 这里都是精品在线观看| 欧美亚州综合网图片| 狠狠操狠狠| 久艹日日日| 用力操死我| 日本十八禁免费看污网站| 91国产美女丝袜足交精品视频 | 一个人在线看的黄色电影网站| 免费A片三p视频| 欧美综合制服在线| 国产亚洲色婷婷久久99精品91葵花宝典| 国产风韵犹存熟妇三区| 六月激情婷婷| 一区二区中文| 精品十三区| 日韩人成网站在线播放| 国产9熟妇视频网站| 九九热精品免费视频| 国产中文字幕在线点播| 乱码人妻一区二区三区| 超碰精品在线| 蜜臀一区二区三区在线| 精品网站99999| 国模吧 一区二区三区| 久久久久久久久999| 91九九九逼| 欧美日韩国产色图在线| 蜜臀中文字幕| 国产精品久久久久久久久久久久久久久久 | 国产主播福利| 男女香蕉一区二区| 欧美性天天影视| 97在线视频观看网站| 97久久超碰国产精品| 91女在线观看| 日本人人操人人操| 色五月AV| 亚洲精品不卡一二三区| 国产欧美精品日韩区二区麻豆天美| 国产乱色国产精品免费视| 国产美女91| 久久天天躁日日躁狠狠躁| 中文字幕 国产区| 亚洲AV成人精品网站在AV| 日本 情色 1区2区3区| 18一区二区三区| 久久精品三级影视| 国产精品免费1区2区视频| 久9爱精品| 九九拍拍精品视频在线播放 | 日本欧美一区二区三区免费| 九热中文字幕| 超碰久草| 情侣操 逼视频99| 97色冈| 91一起操| 欧美视频一区二区在线| 国产婷婷综合在线观看| 亚洲欧美综合图片| 日韩精品影视| 欧美情色贴图| 成人无码专区精品视频| 婷婷丁香五月综合| 国产亚州高清国产拍精| 色综合久久av| 被窝影院午夜看片无码| 国语少妇精| 久久久无码精品人妻二区| 青青草成人视频在线观看二区| 91网站18在线观看| 久操大香蕉手机视频在线看 | 亚洲国产亚洲天堂| 麻豆一区在线| 欧美 传媒 麻豆 日韩 偷拍| 色色色色色色色色色色色色色色综合| 久久久国产成人一区二区三区在线 | 中文一区二区婷婷视频| 婷婷五月在线视频| 91狠狠综合久久久| 99精品久久久久久久婷婷蜜桃| 美女尤物人人操| 密乳AV免费观看| 麻豆国产视频精品观看| 女欧美一区二三区| 波多野42部激情无码喷潮| 97在线免费视频| 天天插网| 日韩免费a级毛片无码a∨| 亚洲av青草久久一区二区| 91网站18禁| 亚洲人妻久久| 秋霞Av理论一级在线| 久久久久亚洲Av无码专区老牛影视| 大香久久| 97操| 成人av性爱电影在线观看| 天天上日日上日韩精品| 国产精品美女久久久久久网站| 日本久久女同性恋视频| 午夜成人爽爽爽爽A片李冰冰| 91在线视频国产网站| 成人一二| 大香蕉www.超碰| 日韩久久.一级黄色片| 久久精品高清AV| 91精品国产高清久久久久久,亚洲成人 | 99爱久久视频频| 大香蕉99热| 九九九九精品一区| 青青草华人在线欧美在线| 夜夜国自区| 亚洲高清欧美总合| 懂色aV一区二区天美传媒| 中文AV制服乱伦| 欧美日韩免费性爱| www网站黄| 日本三级中国三级99人妇网站| 偷拍欧美综合| 欧美永久激情一区二区| 97AV在线免费观看| 伊人久大| 超碰97色| 日日摸夜夜夜夜爽| 色99视频| 99久久综合| 欧美亚洲高清晰| 欧美亚洲图片| 成人一级性爱| 中字乱伦AV| 嗯……啊…嗯嗯…啊…好舒服| 中文字幕78| 人人妻人人爽| 99在线免费公开视频| 亚洲成人久久美女| 色噜噜国产在线| 锕锕好爽 死我在线观看| 青青草好吊色| 上海一级黄片| 超碰日本97美女人妻人人玩人人爱| 日韩国产十八禁| 一本久久久精品| 亚洲无无码αⅴ每日更新| 一级A啪啪啪啪| 狠插 制服 自拍| 国产嫩草精品A88AV| 在线观看亚洲成人精品| 色综合色欲色综合色综合色综合| 国产精品熟女AV中文字幕在线播放| 91女优在线观看| 亚洲中文字幕精品一区| 在线精品福利免费播放| 黄色二级片网站| 97超碰公开| 国产一区在线观看无码AV| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 中文三一区| 亚洲欧美综合区自拍另类| 欧美亚洲综合色| 夜夜嗨免费视频| 欧 美 自 拍 偷 拍| 亚洲男人天堂Av| 日韩精品系列| 国产视频一区二区三区在线免费观看| 色人久久| 91精品操美女| 日韩免费大片一级播放| AV天堂电影网| 国产精品福利视频| 国产一级片| 久久久久久中文| 国语精品内射在线观看| 亚洲视频小说| 精品蜜乳AV免费观看| 亚洲综合另类| 夜夜免费视频| 97超碰久久| 欧美黑人与女人91| 性久久| 日韩/97| 免费啪啪啪网站18岁| 亚洲图片欧美制度| 丰满人妻区一区二区三| 亚洲av无码成人精品国产| 亚洲人码13| 日韩精品一区二区日韩| 97色97好| 日本乱人伦片中文三区| 91欧美高清| 日夜伊人网| 韩国久久97| 91精品老女人| 欧美淫穴| 91狠狠| 日本亚洲vr欧美不卡高清专区| 成人性生活高清视频在线播放| 久操热线| 成人性交午夜免费片| 91人妻PORNY九色大屁股| 欧洲亚洲人妻无码久久三区四区| 99热在线观看| 黄站在线免费观看| 激情av| 69一区二区三区 | 欧美人妻精品| 日韩性爱一级片| 有码人妻系列| 岛国在线免费视频| av线电影| 操逼网免费无码视频| 亚洲日韩资源| 狠狠综合网| 色图综合网| 99抽插| 久久夜黄色无码A级大片| 玖玖超碰熟| 99热66| 91av熟女人妻| 91老熟女老女人国产老太| h无码动漫在线观看| 久久成人东京热人妻| 国产刺激视频| 精品久久久久久AV无码| 日日摸日日碰| 九九热精品| 精品国产Av无码久久久亚洲| 麻豆一区在线| 国产精品一区二区黄片| 人妻少妇精品| 精品小视频在线| 女人双腿搬开让男人桶| 熟妇熟女一区二区三区| 成人A片男人的天堂| 婷婷五月天激情网| 好吊色综合| 吉川爱美亚洲二区在线 | 国产精品在线一区二区| 精品久热| 免费av高清无码| 亚洲色图8| 夜夜嗨AV蜜臀av| 另类小色呦| 免费a v| AV男人天堂网| 精品大久久| 熟女六十路| 亚洲电影中字一区二区| 大学生美女口爆| 国产亚洲日韩欧| 91美女视频电影| oumeisetu综合| 日本国产高清色www视频在线| 600国产精品视频| 亚洲一区二区 麻豆传媒| 丁香五月天啪啪| 新久久AV| 欧美色999| 亚洲第一男人天堂| 熟妇艹鸡八| 中文字幕在线24| 岛园激情| 国产操逼视频在线观看| 人人操人人肉久久精品| 鸥美极品| 久久综合中文国产| 亚洲婷婷五月天| 无码乱人伦中文视频| 亚洲一区二区三区春色| 哈哈操 大香蕉| 91男同| 人人超碰在线观看黄| 亚洲色图大香| 欧美 亚洲 偷拍自拍| 国产a片操逼| 91色综合| 久久岛国| 高潮9999外国| 99久久9| 男人久久精品| 国产一级久久久| 欧美超碰9798| 婷婷五月天影院| 日韩成人大片一区二区| 91精品女厕偷拍视频| 国产女大学生AV| 久久区| 久久综合97| 欲香欲色综合天天伊人| 午夜视频久久久| 干妹子| 精品久操| 日韩射图| 91操熟女视频 | 久久精品国产AV一区二区三区| 天天做天天爱| 美女久久久久久久久久久| 欧美亚洲首页| 清纯唯美亚洲综合| 伊人网高清| 欧亚日韩一区在线| 91黑丝在线| 牛牛AV人人夜夜澡人人爽| 国产精品人妻免费精品| 1769成人国产精品视频| 精品综合久久久久久五月天| 欧美性第一页| a片自拍直播视频| 台湾一区国产高清在线| 精品久久无码午夜福利| 亚洲成人在线高清| 国产黄色影片在线观看| 一本大道不卡一二三区| 久久毛卡| 欧美久久伊人| 狠狠色综合网| 吻戏激情性巴克| 翘臀vidoes| 精久久久91| 天天综合麻豆视频| 欧美精品系列| 亚洲无 码A片在线观看麻豆|