欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

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

嵌入式以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):從MAC/PHY調(diào)試到性能優(yōu)化 做嵌入式驅(qū)動(dòng)開(kāi)發(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)目都能遇到全新的問(wèn)題。今天這一期我把自己在Ethernet以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)上積累的經(jīng)驗(yàn)整理出來(lái)從底層原理到實(shí)際調(diào)試從性能優(yōu)化到工業(yè)場(chǎng)景踩坑一次性說(shuō)透。無(wú)論你是剛開(kāi)始接觸網(wǎng)絡(luò)驅(qū)動(dòng)的新手還是已經(jīng)在MAC和PHY之間掙扎了一段時(shí)間的同行這篇內(nèi)容應(yīng)該都能提供一些參考。很多剛?cè)腴T(mén)的朋友容易把以太網(wǎng)驅(qū)動(dòng)理解為“配置寄存器、啟用DMA、收發(fā)包就完事”但實(shí)際上驅(qū)動(dòng)只是整個(gè)網(wǎng)絡(luò)路徑中的一環(huán)。你寫(xiě)的是網(wǎng)卡驅(qū)動(dòng)但你的代碼要跟協(xié)議棧、PHY、甚至交換機(jī)、對(duì)端設(shè)備發(fā)生關(guān)系。所以我先說(shuō)清楚以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)核心是理解數(shù)據(jù)流而不是只會(huì)翻datasheet。1. 以太網(wǎng)驅(qū)動(dòng)開(kāi)發(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é)議棧傳來(lái)的sk_buff通過(guò)DMA發(fā)送到MAC再由PHY轉(zhuǎn)換成物理層信號(hào)反過(guò)來(lái)PHY收到的電信號(hào)經(jīng)過(guò)MAC還原成幀DMA搬到內(nèi)存再上交協(xié)議棧。我見(jiàn)過(guò)很多人調(diào)試網(wǎng)絡(luò)不通第一步就去看寄存器這沒(méi)錯(cuò)但容易迷失方向。更穩(wěn)妥的做法是先確認(rèn)物理層鏈路是否ok——PHY是否完成了自協(xié)商link是否established然后看MAC是否收到了幀再看DMA描述符是否有數(shù)據(jù)。這種從物理層往上層走的排查思路能讓你少走很多彎路。驅(qū)動(dòng)開(kāi)發(fā)的第一個(gè)關(guān)鍵邊界是搞清楚哪些事情由硬件做哪些由驅(qū)動(dòng)做。比如CRC校驗(yàn)、幀間隙、MAC地址過(guò)濾這些絕大多數(shù)MAC硬件都做了驅(qū)動(dòng)不需要重復(fù)處理。但有些功能比如VLAN tag插入、TCP分段卸載TSO雖然硬件支持驅(qū)動(dòng)也要做很多配置和狀態(tài)維護(hù)工作。這里面的“度”沒(méi)把握好就會(huì)出現(xiàn)莫名其妙的丟包或者性能問(wèn)題。第二個(gè)邊界是PHY管理。PHY芯片的寄存器空間需要通過(guò)MDIO總線訪問(wèn)通常由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 到底在說(shuō)什么我們?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接口上往往也是基于類(lèi)似的編碼方式。PMAPhysical Medium Attachment負(fù)責(zé)串并轉(zhuǎn)換、時(shí)鐘恢復(fù)和信號(hào)調(diào)制。簡(jiǎn)單說(shuō)PCS解決“數(shù)據(jù)怎么變成可以在線上傳輸?shù)拇a流”P(pán)MA解決“碼流怎么通過(guò)物理線纜發(fā)出去”。而SGMII是一種MAC和PHY之間的接口協(xié)議它本身是一種串行接口類(lèi)似于SerDes。SGMII可以承載1Gbps或更低的速率而2.5G Ethernet的SGMII通常是2500Mbps有些芯片也支持“USXGMII”這類(lèi)擴(kuò)展接口。當(dāng)你看到“1G/2.5G Ethernet PCS/PMA or SGMII”指的是PHY支持這些接口模式你需要在驅(qū)動(dòng)里通過(guò)寄存器配置選擇合適的模式。實(shí)際項(xiàng)目里我們用的主控芯片可能內(nèi)置了MAC但缺少PHY或者PHY是外掛的。MAC和PHY之間的接口常見(jiàn)的有RGMII千兆常用的并行接口時(shí)鐘125MHz數(shù)據(jù)雙沿采樣引腳多但布線相對(duì)簡(jiǎn)單。SGMII串行接口引腳少抗干擾強(qiáng)適合高速和板間互聯(lián)。QSGMII4個(gè)SGMII復(fù)用一對(duì)差分線主要用于交換機(jī)芯片。驅(qū)動(dòng)開(kāi)發(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ù)但丟包率極高。排查這種問(wèn)題需要同時(shí)讀取MAC側(cè)的狀態(tài)寄存器通常有l(wèi)ink速度指示和PHY側(cè)的速度寄存器對(duì)比兩邊是否一致。這也是我強(qiáng)調(diào)“接口配置必須兩端對(duì)齊”的原因。2. 驅(qū)動(dòng)開(kāi)發(fā)中的關(guān)鍵環(huán)節(jié)接口、描述符與中斷處理2.1 從RGMII到SGMII的接口選擇與配置選擇RGMII還是SGMII很多時(shí)候不是開(kāi)發(fā)人員能決定的而是硬件工程師根據(jù)板級(jí)布局和成本定的。作為驅(qū)動(dòng)開(kāi)發(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í)通過(guò)寄存器配置。例如你可以設(shè)置MAC側(cè)的TX clock delay或者讓PHY側(cè)提供RX clock delay。這個(gè)配置必須在驅(qū)動(dòng)初始化階段完成而且要跟硬件原理圖對(duì)應(yīng)。我遇到過(guò)一塊板子初始化PHY后ping不通后來(lái)發(fā)現(xiàn)是RGMII的RX延時(shí)沒(méi)有配置導(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è)開(kāi)發(fā)板時(shí)如果SGMII配置不是“自協(xié)商固定從模式”可能需要強(qiáng)制設(shè)置速度。我記得有一款PHY默認(rèn)SGMII從模式必須等到對(duì)端發(fā)送自協(xié)商配置才能建立鏈路這在有些場(chǎng)景下會(huì)導(dǎo)致長(zhǎng)時(shí)間無(wú)法link up。解決方法是把SGMII配置為master模式自己主動(dòng)發(fā)起協(xié)商。2.2 DMA描述符環(huán)設(shè)計(jì)與內(nèi)存屏障無(wú)論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ū)并把物理地址寫(xiě)入描述符。然后設(shè)置擁有權(quán)位交給硬件。硬件收到數(shù)據(jù)后會(huì)填充緩沖區(qū)并把狀態(tài)位更新為“已接收”驅(qū)動(dòng)在中斷或輪詢中掃描描述符發(fā)現(xiàn)擁有權(quán)變化就知道有數(shù)據(jù)到了。這里有幾個(gè)容易犯的錯(cuò)分配緩沖區(qū)時(shí)沒(méi)有做cache對(duì)齊。網(wǎng)絡(luò)DMA要求緩沖區(qū)物理地址對(duì)齊到cache line否則可能出現(xiàn)數(shù)據(jù)不一致。沒(méi)有處理“擁有權(quán)”標(biāo)志。有些芯片用描述符的最后一個(gè)bit來(lái)表示歸屬驅(qū)動(dòng)在回收描述符時(shí)如果寫(xiě)錯(cuò)了會(huì)覆蓋硬件正在使用的描述符。環(huán)形隊(duì)列的索引管理。發(fā)送和接收的索引要明確區(qū)分“硬件當(dāng)前使用的索引”和“驅(qū)動(dòng)當(dāng)前處理的索引”兩者沒(méi)理清就會(huì)丟包或者卡死。內(nèi)存屏障也是一個(gè)關(guān)鍵點(diǎn)。CPU往描述符寫(xiě)入狀態(tài)后需要確保寫(xiě)入順序?qū)MA可見(jiàn)DMA更新?tīng)顟B(tài)后CPU讀取時(shí)也需要屏障。在Linux驅(qū)動(dòng)中通常使用dma_wmb()和dma_rmb()。有朋友問(wèn)過(guò)我為什么加了mb()還是有問(wèn)題其實(shí)是因?yàn)閙b()是全屏障性能損耗大而且有些架構(gòu)下語(yǔ)義不完全匹配DMA場(chǎng)景。正確的做法是嚴(yán)格區(qū)分讀寫(xiě)方向。我在調(diào)試一個(gè)eMMC和網(wǎng)絡(luò)DMA互相干擾的項(xiàng)目時(shí)發(fā)現(xiàn)描述符狀態(tài)一直讀取不到硬件更新后來(lái)檢查發(fā)現(xiàn)是描述符本身被分配到了非DMA安全區(qū)域。所以在分配描述符時(shí)一定要用dma_alloc_coherent()或者類(lèi)似接口保證內(nèi)存不會(huì)被cache寫(xiě)回覆蓋。2.3 中斷與輪詢的取舍以太網(wǎng)驅(qū)動(dòng)通常有兩種收包模式中斷驅(qū)動(dòng)和NAPI輪詢。中斷是及時(shí)但高吞吐時(shí)頻繁中斷會(huì)吃掉CPUNAPI是把中斷和輪詢結(jié)合起來(lái)用少量中斷配合輪詢批量收包。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ù)算耗盡或者無(wú)包可收后重新開(kāi)啟中斷。這個(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中重新開(kāi)啟就會(huì)出現(xiàn)“網(wǎng)絡(luò)死”的現(xiàn)象。我在自己的驅(qū)動(dòng)里都是把“重新使能中斷”放在poll函數(shù)的最后并加一個(gè)dummy read來(lái)保證寄存器寫(xiě)入順序。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ā)不出去。常見(jiàn)的做法是使用PHY驅(qū)動(dòng)的adjust_link回調(diào)在link up時(shí)讀取PHY的狀態(tài)然后更新MAC的配置。另外自協(xié)商超時(shí)問(wèn)題很常見(jiàn)。有些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和抓包工具定位問(wèn)題很多嵌入式工程師看不起抓包覺(jué)得嵌入式環(huán)境沒(méi)有條件。其實(shí)現(xiàn)在的開(kāi)發(fā)板大多有兩個(gè)網(wǎng)口一個(gè)跑業(yè)務(wù)一個(gè)做管理或者用交換機(jī)鏡像端口都能方便地抓包。在驅(qū)動(dòng)調(diào)試階段我強(qiáng)烈建議盡早接上抓包工具。當(dāng)出現(xiàn)“ping不通”的情況先用Wireshark抓包看有沒(méi)有請(qǐng)求發(fā)出。如果抓不到任何幀說(shuō)明數(shù)據(jù)沒(méi)有從MAC送出去問(wèn)題可能在驅(qū)動(dòng)或硬件如果能抓到請(qǐng)求但收不到應(yīng)答說(shuō)明請(qǐng)求到了對(duì)端對(duì)端的應(yīng)答可能沒(méi)回來(lái)或者我們的MAC沒(méi)有收到如果收到了應(yīng)答但協(xié)議棧沒(méi)反應(yīng)那可能是MAC地址、VLAN或者校驗(yàn)和的問(wè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è)備沒(méi)再發(fā)ACK而且不停地重傳SYN。進(jìn)一步查發(fā)現(xiàn)TCP校驗(yàn)和計(jì)算錯(cuò)誤。原因是MAC硬件開(kāi)啟了TCP校驗(yàn)和卸載TX checksum offload但驅(qū)動(dòng)沒(méi)有正確設(shè)置sk_buff的ip_summed標(biāo)志導(dǎo)致硬件計(jì)算的校驗(yàn)和覆蓋了協(xié)議棧算好的值結(jié)果反而錯(cuò)了。把ip_summed設(shè)為CHECKSUM_PARTIAL之后一切正常。3.3 常見(jiàn)問(wèn)題速查表我整理了一下這幾年遇到的最多的以太網(wǎng)驅(qū)動(dòng)問(wèn)題做成表格方便大家對(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沒(méi)有協(xié)商上千兆或線纜/接口問(wèn)題用ethtool查看自協(xié)商結(jié)果強(qiáng)制千兆測(cè)試更換線纜TCP吞吐量極低中斷頻繁或TSO/GRO未開(kāi)啟開(kāi)啟NAPI確認(rèn)ethtool -K支持TSO檢查中斷合并設(shè)備長(zhǎng)時(shí)間運(yùn)行后斷網(wǎng)PHY熱鏈接檢測(cè)失效或看門(mén)狗超時(shí)實(shí)現(xiàn)PHY link狀態(tài)輪詢?cè)黾渔溌坊謴?fù)流程發(fā)送方向正常接收方向不通接收DMA描述符不完整或接收中斷未使能檢查接收描述符初始化確認(rèn)中斷配置用loopback測(cè)試接收路徑無(wú)法與特定設(shè)備通訊對(duì)端設(shè)備MAC地址過(guò)濾或協(xié)議不匹配抓包確認(rèn)對(duì)端是否回包檢查MAC地址表檢查VLAN和協(xié)議字段這張表不可能是全的但覆蓋了大部分初級(jí)問(wèn)題。很多時(shí)候問(wèn)題不在驅(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)目里我需要讓嵌入式主控通過(guò)以太網(wǎng)與安川焊機(jī)通訊實(shí)現(xiàn)焊接參數(shù)下發(fā)和狀態(tài)讀取。這類(lè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)門(mén)CP/IP協(xié)議棧已經(jīng)替我們搞定了。真正麻煩的是應(yīng)用層的協(xié)議解析和時(shí)序控制。但從驅(qū)動(dòng)開(kāi)發(fā)角度有兩個(gè)點(diǎn)需要特別留意第一工業(yè)設(shè)備的以太網(wǎng)端口通常不響應(yīng)ARP請(qǐng)求或者M(jìn)AC地址過(guò)濾嚴(yán)格。如果主控通過(guò)MAC地址白名單方式連接設(shè)備那么驅(qū)動(dòng)可能需要構(gòu)造特殊的ARP包或者干脆不用ARP直接靜態(tài)ARP表項(xiàng)。第二有些工業(yè)設(shè)備會(huì)在連接空閑時(shí)主動(dòng)斷開(kāi)或者發(fā)送特定的“心跳包”。驅(qū)動(dòng)和協(xié)議棧需要配合在socket層面保持連接。否則你會(huì)發(fā)現(xiàn)過(guò)一段時(shí)間TCP連接還在但數(shù)據(jù)已經(jīng)發(fā)不過(guò)去了。另外工業(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é)議無(wú)關(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é)議無(wú)關(guān)”只負(fù)責(zé)把以太網(wǎng)幀正確地收發(fā)出去所有協(xié)議解析都放到上層應(yīng)用。為此驅(qū)動(dòng)需要提供干凈的接口比如注冊(cè)netdev_ops上層用socket訪問(wèn)而不是在驅(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過(guò)濾。Linux內(nèi)核有現(xiàn)成的ndo_vlan_rx_add_vid回調(diào)驅(qū)動(dòng)只需要在寄存器中配置VLAN ID即可。我在開(kāi)發(fā)支持多種工業(yè)協(xié)議的主控板時(shí)把驅(qū)動(dòng)的重點(diǎn)放在穩(wěn)定性和可配置性上。比如通過(guò)設(shè)備樹(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è)詞一度讓我很迷惑。后來(lái)才明白這其實(shí)是指蘋(píng)果設(shè)備比如iPhone、iPad在連接電腦時(shí)通過(guò)USB拔號(hào)網(wǎng)絡(luò)或者以太網(wǎng)適配器模擬出的一個(gè)網(wǎng)絡(luò)接口。這個(gè)場(chǎng)景在物聯(lián)網(wǎng)開(kāi)發(fā)里也有價(jià)值比如你想用iOS設(shè)備與嵌入式主板通訊可以通過(guò)雷電轉(zhuǎn)以太網(wǎng)適配器或者通過(guò)USB共享網(wǎng)絡(luò)。從驅(qū)動(dòng)開(kāi)發(fā)的視角當(dāng)你把蘋(píng)果設(shè)備插入電腦系統(tǒng)會(huì)識(shí)別出一個(gè)“Apple Mobile Device Ethernet”設(shè)備這個(gè)設(shè)備本質(zhì)上是一個(gè)USB網(wǎng)卡。它的驅(qū)動(dòng)是蘋(píng)果官方提供的在macOS和Windows上都有。對(duì)嵌入式開(kāi)發(fā)者來(lái)說(shuō)相關(guān)經(jīng)驗(yàn)就是你的嵌入式設(shè)備如果支持USB gadget的RNDIS或者ECM協(xié)議也可以被電腦識(shí)別為一個(gè)虛擬網(wǎng)卡從而進(jìn)行網(wǎng)絡(luò)調(diào)試。但要注意蘋(píng)果設(shè)備的以太網(wǎng)接口默認(rèn)可能只支持特定速率和協(xié)議。所以如果你用自研的設(shè)備去跟蘋(píng)果設(shè)備通訊最好先確認(rèn)雙方的USB以太網(wǎng)類(lèi)兼容性特別是驅(qū)動(dòng)中的描述符配置。這里就不展開(kāi)細(xì)說(shuō)了但至少說(shuō)明以太網(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)存拷貝和中斷開(kāi)銷(xiāo)。零拷貝是一個(gè)繞不開(kāi)的話題。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ì)列也可能帶來(lái)更多中斷需要根據(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ì)列不是萬(wàn)能的但值得嘗試。5.2 電源管理與鏈路檢測(cè)嵌入式設(shè)備對(duì)功耗敏感網(wǎng)絡(luò)驅(qū)動(dòng)的電源管理往往容易被忽略。MAC和PHY通常都有低功耗模式但在進(jìn)入低功耗前要確保沒(méi)有未完成的DMA傳輸。否則數(shù)據(jù)寫(xiě)到一半設(shè)備睡眠醒來(lái)后描述符狀態(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)遲鈍。我遇到過(guò)一個(gè)項(xiàng)目設(shè)備為了省電在空閑時(shí)關(guān)閉PHY但喚醒時(shí)總是出現(xiàn)第一次ping不通。后來(lái)發(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或者通過(guò)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)的問(wèn)題是內(nèi)存泄漏和描述符耗盡。內(nèi)存泄漏可能來(lái)自每個(gè)收包分發(fā)的緩沖區(qū)沒(méi)有正確釋放。我在檢查一個(gè)老代碼時(shí)發(fā)現(xiàn)接收路徑中每次丟包都直接調(diào)用dev_kfree_skb_any()但有些分支沒(méi)有釋放導(dǎo)致內(nèi)存緩慢增長(zhǎng)。這類(lèi)問(wèn)題很難查需要借助kmemleak工具或者定期查看/proc/net/skbuff這樣的信息。描述符耗盡也常見(jiàn)。比如發(fā)送路徑中如果上層快速發(fā)送大量小包而驅(qū)動(dòng)沒(méi)有及時(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é)語(yǔ)最后分享一個(gè)我自己的習(xí)慣。每次寫(xiě)以太網(wǎng)驅(qū)動(dòng)我都會(huì)先把PHY的寄存器表打印出來(lái)保存一份完整的狀態(tài)基線。一旦后續(xù)出現(xiàn)通訊問(wèn)題我可以快速對(duì)比寄存器值判斷是PHY配置變了還是硬件鏈路有問(wèn)題。這個(gè)方法幫我解決了不少“莫名其妙”的網(wǎng)絡(luò)故障。如果你也是做嵌入式驅(qū)動(dòng)開(kāi)發(fā)的不妨試試。另外記得在驅(qū)動(dòng)代碼里加足夠多的日志別嫌麻煩關(guān)鍵時(shí)刻就是這些日志救了你。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色小说五月天| 性爱技巧五月| 综合在线色婷婷| 久9热在线视频| 欧美成人精品A片免费一区99| 五月花亭亭| 另类图片激情五月| 天天色凹凸| 大香蕉婷婷色| 日本va欧美va欧美精品88| 色婷婷操逼| av国产精品| 婷婷五月天基地| 九九这里有精品视频| 在线免费观看激情视频| 无码人妻丰满熟妇奶水区码| 久草婷婷| 在线成人网站| 在线视频激情网站| 五月婷婷日本| W色综合| 五月丁香久久| 夜夜爽天天干| 婷婷综合伊人丁香| www.91有码.com| 99日精品视频| 色婷婷在线影院| 成人精品视频99在线观看免费| 99热综合网| av 一区三区四区| 99偷拍视频在线日本| 婷婷五月天av| 99色婷婷| 人人干99| 玖玖五月丁香| 成人丁香| 中文字幕成人影视| 五月婷婷九九热| 亚洲综合色丁香五月天| 五月天六月天| 五月天色五月天| 影音先锋色婷婷| 亚洲视频久久| 伊人大香久久| 狠狠色狠狠爱| 九九热99熟女| 成人电影在线免费试看| 久草大| 亚洲无码你懂的| www.超碰97| 天天插天天射| 六月丁香婷| 99九九在线| 丁香五月在线观看| 五月婷婷亚洲| 激情九月婷婷| 99色| 五月天综合在线网| 五月丁香在线观看国产| 婷婷激情啪啪| 久草视频一,二三四| 亚洲色五月婷婷| 几激情五月婷婷色五月色天堂| 丁香五月天婷婷中文| 天天天天天天天干| 久久有码| 久久99热这里只有精品| 久久天天| 狠狠色婷婷| 九九热这里只有精品6| 五月丁香六月婷婷开心网| 久久人人人人妻| 狠狠狠狠狠狠狠狠草| 六月色日韩| 丁香五月精品视频| 亚洲狠狠婷婷综合久久久| 欧美va亚洲va| 色婷婷六月天在线| 久久狠狠干| 激情综合国产| 深爱五月婷婷| 五月激情久久| 97人人干人人操| 99操99| 综合激情伊人影视在线| 337午夜福利| 精品成人a v无码内射| 婷婷激情五月综合| 久久女婷| 丁香五月婷婷色综合| 99热香港| 久久婷婷网| 婷婷五月天影院| 深爱激情中文五月天av| www.亭亭五月天| 久久久噜噜噜久久人妻| 国产日比| 狠狠色狠狠爱| 免费的日逼视频| 婷婷成人丁香色情基地30 | 特级片神马电影| 五月天激情美女久久| 亚洲婷婷丁香五月| 婷婷五月电影院| 大功率国产在线| 色视五月天婷婷| 深爱激情丁香五月| www.狠狠| 五月 成人 婷婷| 色玖玖综合网| 人人草人人视| 91人妻PORNY九色大屁股| WwW色婷婷| 色综合久久88| 日本激情五月| 欧洲色色| AV动漫不卡无码免费| 亚洲午夜精品久久久久久人妖| 森林影视大全,最好看的2019年视频 | 激情操逼婷婷| 97色婷婷| 成人在线99| 丁香婷婷网| BBWCUCKOLD精品熟妇| 秋霞av不能| 99re最新地址视频| 99精品国产在热久久婷婷| 五月天另类视频| 九九精品免费视频99| 色情五月婷| 五月色婷婷影视在线电影| 婷婷五月花西瓜| 这里只有精品视频| 九九中文色色| 开心五激情网| 久久这里只有精品99| 丰满女老板BD高清A片| 婷婷五月天AV在| 这里只精品| 激情五月丁香亭亭 | 婷婷五月综合在线视频| 99热手机在线精品| 九洲一级A片| 九九热这里只有精品9| 91要啪| 久月久在线视频| 99久久久久| 日本九九热| 婷婷综合在线| 五月婷婷六月天| www.狠狠干| 五月丁香激情综合| 婷婷午夜天| 中文字幕人妻AV| 色天天久婷婷| 国产精品久久久久久妇女6080| 先锋资源91| 久久人妻在线| 久热A片| 婷婷久久丁香五月| 五月婷婷草| 日本道久久91| 婷婷成人五月天成人文学小说| 婷婷丁香六月天| 92久久| 色五月天电影| 97热超碰| 天天日天天草| 成人毛片在线免费观看| 啪色综合| 人人操91| 五月天国产| 99免费热视频在线| H亚洲| 国产黄色一级片| 激情九色| www,婷婷五月天777me,com| 99久视频| 久久天天天| 专区无日本视频高清8| 99天堂在线观看免费视频| 五月天婷婷久久视频| 天天骑天天操| 婷婷九月激情| 国产SUV精品一区二区883| 激情五月天丁香| 色私五月婷婷| 五月婷婷啪啪| 婷婷丁香久久五月综合| 欧美成人一区二区三区在线视频| 我要色综合五月婷婷| 久久人人妻| 婷婷丁香社区网| 91丨九色丨国产打屁股| 亚洲精品欧洲精品| 激情小说色五月| 97干婷婷五月天| 少妇性按摩无码中文A片| 婷婷亚洲五月丁香综合在线 | 久热大香蕉| 玖热精品综合视频| 色综合色香蕉网| 久久久精品色色色| 青青草原亚洲天堂| 激情视频网址| 国产色五月| 九月色婷婷婷| 久久综合中文| 69午夜成人影片| 婷婷狠狠综合网入口| 婷婷日日天天| 91精品无码久久久久久五月天| 五月色丁香| 日韩无码专区| 国产人妻777人伦精品HD| 色婷婷五月网| www.色色五月天.com| 99re这里有精品手机在线| 激情色情五月天| 97成人丁香| 日日操夜夜骑| 99久久五月天| 二色av| w婷婷五月婷婷w| 97人人操com| 久久免费操| 五月婷婷内射网| 国产免费一区二区三州老师F1…… | 丁香六月激情蜜桃| 九九re精品视频在线观看| 99精色| 色在线五月天免费| 亚洲综合另类| 国产AV一区二区三区日韩| 激情小说视频图片网| 五月天停停日日| 国产成人99久久亚洲综合精品| 国产婷婷综合| se婷97| 精品久久99码| 一级二级香港秋霞欧美欧美秋霞| 激情网第九色| 激情丁香五月| 99国产精品白浆在线观看免费| 狠狠xx| AA丁香综合激情| 三级黄色大片视频| 婷婷色五月天在线| 欧美日韩aaaa| 袁子仪视频观看| 色五月丁香A欧美com| 久久九区| 欧美丁香婷婷五月天| 99,色| 在线色婷婷| 狼人久草| 91九色欧美| 色婷婷色五月色丁香| 久久99精品日本| 国产av一区二区三区| 9久久久久久久久久久| 久久色六月| 婷婷综合色| 噜噜噜色噜噜| 六月婷婷狠狠| 五月丁香激情片| 94干大香蕉| 欧美在线| 色色色网站| 天天干天天操天天爽| 91精品熟女| 啪啪婷婷五月天激情| 婷婷五月在线影院| 强辱丰满人妻HD中文字幕| 欧美日本一区二区三区| 五月婷婷六月激情在线| 永久的网站AAAA | 婷婷五月天成人| 婷婷五月天另类视频| 五月丁香久久呀| 影音先锋五月婷婷| 思思热在线视频精品| 九九热最新| 色播丁香婷婷五月激情| 九月婷婷丁香| 婷婷五月精品在线| 婷婷玉月丁香五月在线视频| 亚洲天堂青草| 超碰自拍天堂| 狠狠爱丁香婷| 91伦| 96色婷婷| 2020日日干| 日韩无码亚欧无码| 性色综合网| 亚洲性爱AV在线| 香蕉综合网| 思思热精品在线| 91肏| 五月天婷婷在线观看精品男人| 91视频五月丁香| 五月丁香福利| 任你擦免费视频| 狠狠干狠狠操狠狠爱| 99热热热天天人人人超超碰| 天天综合区| 中文字幕在线aⅴ免费观看| 欧美交换配乱吟粗大25P| 婷婷婷婷婷婷婷五月丁香| 大香蕉婷婷丁香视频在线| 丁香激情婷婷网| 激情色情五月天| 五月婷在线观看| 婷婷日日夜夜| 五月婷婷开心网| 99热99热| 色综合综合色| 五月婷婷丁香色播网| 五月激情综合五月| 五月丁香六月欧美综合| 嫩草综合网| 五五月丁香花激情综合网| 久久久色婷婷五月天| 亚洲色涩视频| 亚洲婷婷成人五月天| 中文网av| 五月天偷拍| 99超级碰碰| 久操综合| 亚洲欧美在线观看| 日韩xx在线| 久久婷婷综合国产| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 99色色网| 日韩99无码| 沈娜娜av| 大香蕉婷婷色| 99aese| 69五月天视频| 色婷婷亚洲五月天| 五月丁香激情啪啪| 中文字幕丰满乱孑伦无码专区 | A久久| 。久久久久久久久久久久久久人妻| 激情开心五月天婷婷基地丁香社区| jiqingliuyuetian| 色色a| AV在线不卡播放| 99re在线免费视频| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 五月天丁香成人社| WWW五月婷婷| 色婷婷91激情小说| 婷婷色五月丁香六月欧美啪| 婷婷天天综合| 久久婷婷91| 亚洲成人在线播放| 精品久久婷婷| 五月婷婷黄色视频| 五月丁香啪啪啪综合网| 丁香激情综合| 婷婷爱在线观看| 九九热这里只有精品12| www.婷婷六月天| 狠狠狠狠狠狠| 六月婷久久| 国产综合激情五月久久| 久久草中文日韩欧美| 无码少妇高潮喷水A片免费| 99热热热99精品婷婷| WWW·色色色·COM| 少妇激情五月婷婷| 亚洲AV网站| 激情图片亚洲| 色欲婷婷夜夜| 激情婷婷丁香五月天| 国产精品日本一区二区在线播放 | 九九九九九九热| 91热99| 久久丁香五月婷| 婷婷亚洲综合| 欧美图片丁香五月天| 在线综合婷婷| 五月丁香六月激情在线| 97碰人人操| 五月丁香婷婷人体| 五月丁香综合激情| 色婷婷免费观看| 天天看夜夜看| 精品国产乱码久久久久夜深人妻| 婷婷激情综合网| 久久人妻www| 国产美女无遮挡裸体毛片A片 | 热的国产99热| 色五月首页| 亚洲精品一二三| 久久久久久久综合狠狠综合| 猫咪伊人久久| www,超碰| 五月婷婷狠狠干| 亚洲狠狠操| 五月婷在线| 性视频久久| 免费观看欧美成人AA片爱我多深 | 久久色吧| 五月婷婷丁香色播网| 五月激情站| 99丁香五月婷| va婷婷| 国产亚洲精品久久久久苍井松| 99九九在线| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 大香蕉丁香| 天天模,夜夜模夜夜爽| 五月天色区| 亚洲综合久| 蜜臀av粉嫩av懂色av| 99天堂网最新| 五月天激情图片| www亚洲无码| 99热这里只有精品最新网址| 色婷婷五月综合色婷婷| 狠狠狠狠狠狠狠狠| 99久免费视频| 999婷婷综合| 超碰在线观看9| 性天天中文网| 九九成人电影婷婷| 激情五月婷婷中文字幕| 五月天另类激情在线| 九九九九综合| AV大香蕉| 五月天激情网页| 99青青草99| 99热色在线精品| 色www99| 国产寻花在线| 伊人九九九久| xx久久| 超碰激情网| 一级黄色影片| 成人色五月天| 97操碰98| 婷婷五月天综合AV| 97人人草| 五月天另类图片| 我淫我色婷婷五月天激情四射| 国产热精品| 亚洲综合色婷婷文学| 亚洲五月色| 91久久九色| 中文字幕av久久爽一区| 久热这里只有精品在线观看| 狠狠干五月| 五月丁香六月婷婷综合网站 | 大战熟女丰满人妻AV| 性爱电影科技贸易有限公司| 97超碰9久热婷婷热| 久久人人妻| 99热爱爱干干日| 精品乱码久久久久| 久久99成人性爱高清视频| 色婷婷玖玖影院| 色噜噜狠狠色综合成人99| 玖玖在线视频福利| 99只有精品9| 五月丁香六月色| 六月丁香婷婷拍拍| 中文字幕在线人妻| 日本色狠狠| 99在线观看视频免费| 国产AV一区二区三区日韩| 久久色五月天激情小说| 99视频久久| 香蕉AV777XXX色综合一区| 色综合色色色| 99热香港| 99re热99| 性爱技巧五月| se99视频| 九九热99热| 久久久妻人人人| 大鸡巴伊人网| 天天干天天拍| 五夜丁香| 激情五月天色婷婷综合| 伊人久久艹| 91人妻九色大屁股| 中文AV网| 色播五月婷婷| 人妻操在线看| 色很很96| a色婷婷| 欧美性猛交99久久久久99按摩| 日韩aaa| 日日色五月天| 久久六月天| 99热色在线精品| 97干在线| 男人天堂 久久| 伊人综合网站| 激情五月婷婷| 中文字幕婷婷五月天在线观看| 亚洲国产精品成人免费一区久久久在线观看AAAA | HD久久精品视频| 五月天激情网图片| 婷婷五月综合久久中文字幕| 婷婷十月激情综合网| 欧美噜噜久久久XXX| 玖玖婷婷五月天毛片| 99热在线观看| 开心五月网| 五月丁香六月激情视频| 婷婷激情丁香六月| 夜夜操少妇| 天天爽在线视频| 人伦30P| 99国产欧美视频| 国产69精品久久久久999小说| 91操在线视频| 99这里只有精品| 久久这里有精品视频在线免费观看| 天天爽爽日日做做| 99热最新地址在线| 五月丁香成人网| 色五月五月婷婷| 操比激情五月| 怡春院天天干| 丁香五月婷婷总啪啪| 天天婷婷综合亚洲亚洲| 五月丁香六月激情| 噜噜在线| 99在线精品视频| 天天色播| 99热在线观看精品| 天天搡日日搡aaaaⅩ| 91九色中文字幕女在线观看| 五月婷婷丁香网| 亚州欧美黄色电影| 99视频综合网| 色五月开心久久网| 日本www免费九九| 操操综合网婷婷| 婷婷影院A成人| 影音先锋日本三级资源| 9精品久久999| 精品热青草| 性做久久久久久久免费看| 伊人激情AV一区二区三区| 色婷婷电影网| 五月丁香成人网| 国产精品人成A片一区二区| 亚洲无码99| 午夜成人片400| 色色色色丁香| 欧美日本99| 婷婷丁香色性爱| 久热久操久热久草国产91| 国产色香蕉精品五夜婷| 五月天婷婷操逼视频| 亚洲五月婷| 色优久久| 初夜av| 99久久免费精品| 五月天亭亭俺也| 久久99精品久久久久久三级| 99精品性爱| 大香蕉啪啪网| 久99在线| 五月天激情啪啪| 亚洲综合视频网| 五月丁香| 五月天深爱激情网| 激情AV在线| av狠狠操| 五月天丁香久久综合| 丁香九月色| 超碰无码318604| 六月婷婷深深爱| 91视屏在线观看com.wwwvv| 超碰在线观看成人视| 亚洲天堂啪啪| 亚洲综合网激情五月天| 99热这里只有国产精品| 久久六月综合| 精品久久99码| 91九九九九九九| 色色五月婷婷久久| 久久婷婷丁香五月一二三| 久播影院免费观看电视剧大全最新网| 色五月婷婷91| 免费无码毛片一区二区A片| 国产高清视频91九九九久久久| 激情九月天天天天婷婷| 思思99精品视频| 久久五月天婷婷| 久久一热| 夜色.cnm| 色七色九九| 97色色在线视频| 黄色片区子| 538在线精品| 日本WWW九九九| 怕怕av| 五月天色综合| 国产欧美精品AAAAAA片| 综合久久综合久久| 五月婷久久在线| 五月丁香久久网| 最新无毒无码AV| 伊人色综合影院视频| 涩涩五| 久久大香蕉| 婷婷五月天丁香久久| 婷婷六月丁香在线| 激情综合99| 丁香五月婷婷综合啪啪| 五月婷丁香花| 日本3级片一区2区| 香蕉久日夜| WWW,五月天| 中文av网站| 爽tv | 综合亚洲六月婷婷在线| 色色色色色综合| 免费观看欧美成人AA片爱我多深 | 999热成人在线综合网| 在线网黄| 五月深情久久| 99热这里只是精品| 天天日天天操心| 《久久综合九色综合97婷婷| 天天爽综合| 婷婷五月成人| 综合亚洲色色| 色色五月丁香婷婷| 综合色影院| 亚洲成人va| 久久黄色片| 色欲Av五月天| 久草婷婷| A片一曲| 亚洲国产99| 亚洲天堂碰碰婷婷| 五月天激情小说婷婷基地| 五月婷婷色| 综合网色| 狠狠综合网| 在线天堂9| 久久久性爱视频| 狠狠狠狠狠狠草| 亚洲无码成人性爰网| 99激情| 色五月婷婷综合在线| h在线看免费版在线看| 久久久久九九九九视屏小说88| 人妻肉射免费观看| 亚洲亚洲人成综合网络| 亚洲性爱99| 久久ww| 色就是色婷婷五月亚洲激情| 激情久久五月天| 九月婷婷色色| 99九九在线精品热动漫| 久久婷婷影院| 亚洲免费婷婷| 熟女色专区| 丁香五月天视频| 伊人青草成人| 五月日韩中文字幕| 可以免费看的av网站| 91中文狠狠综合| 欧美视频在线观看噜噜| 深爱激情五月天| 99久久精品网| 五月激情影院| xx久久| 激情AV在线| 五月丁香色| 狠狠干夜夜干| 欧美丁香六月在线观看视频| 国产精产国品一二三在观看| 欧美色色色| 精品人妻一区二区三区在| 天天色综合网吨吧| 久久aaaaa| 婷久久| 色优久久| 伊人色综合网| 亚洲色亚洲精品| 九九超碰人人| 亚洲色综合| 这里只有视频精品| 4399精品一区二区| 丁香五月六月综合激情| 激情丁香婷婷六月天| 大地9中文在线观看免费高清| 开心综合激情综合| 久久九九国产| 开心五月激情网| 国产26uuu视频| 黄色av网站在线免费播放| 色播五月婷婷| 深爱女色婷婷丁香五月亚洲图区| 五月天开心色色网| 婷婷狠狠97| 色视频2025| 久久久婷婷五月天| 99爱爱网| 婷婷六月综合在线| 激情五月九九九| 大香蕉综合在线| 婷婷五月免费在线| 丁香六月| 大学生高潮无套内谢视频| 婷婷五月天成人网站| 91丨九色丨熟女|老版| 无码AV久久久久久久久| 另类小说色婷婷| 狠狠色狠狠干| 色婷婷香蕉丁丁网| 这里只有精品2| 婷婷五月丁香久久| 五月停亭六月,六月停亭的英语| 亚洲爆乳无码精品AAA片蜜桃| 99亚洲精品视频| 亚洲精品乱码久久久久99| 青青操日本摸摸看看| 激情五月天婷婷| 亚洲婷婷成人五月天| 91日视频| 丁香五月欧美色综合| 97碰久久| 天天婬色综合| 香蕉综合网| 99热在线看片| 欧美97p| 超碰在线人人| 狠狠色丁香久久综合婷婷亚洲成人福利 | 国产精产国品一二三在观看| 婷婷五月色天| 五月丁香六月婷婷免费| 人妻九九九九| 69人人操人人爽| 99精品无码| 中文字幕婷婷| 99视频在线精品免费观看2| 亚洲视频在线观看99| 色爱99| 1024人妻无码中文字幕| 99网| www.yw尤物| 久久人妻人人| 夜夜天天久久婷婷| 婷婷丁香视频在线观看免费 | 国产黄大片在线观看画质优化| 97干97色| 九九性爱网| 婷婷五月天狠狠| 操逼福利视频| av在线超清中文| 另类A片| ZpRSw| 熟女色色一区二区| 国产亚洲精品AAAAAAA片| 婷婷丁香五月麻豆| 91综合色| www.maotanji.com| www.婷婷五月天.com| 日日操人人操| 丁香五月天婷婷中文| 亚洲 精品 综合 精品| 色综合丁香| 综合久久久| 五月亭亭欧美女人| 色吧婷婷五月亚洲| 久久婷婷午夜| 国产午夜精品一区二区三区四区| 九九久久综合| 激情五月综合网| 99操碰| 五月激情天| 亚洲综合激情五月久久| 色999五月色| 色婷婷狠狠| 91久久久久久久久18| 久久这里都是精品| 夜夜夜夜夜骑撸| 婷婷综合五月天亚洲综合| 亚洲噜色| 中文字幕性爱丰满| 丁香婷婷五月综合影院| 天天夜夜爽| 美女妹子后射视频网站在线观看| 亚洲色 视频| 思思久日精品视频| 99在热线免费视频| 99精彩视频| 99热在线看片| 日本a片网址| 99热国内| 丁香五月天激情综合网| 五月丁香六月婷婷免费视频| 五月丁香啪啪综合网| 夜夜撸天天操| 亚洲美女网Va| 久99久精品| 天天色色天天| 欧美人与性动交CCOO| 亚洲亚洲人成综合网络| 成人五月天综合网| 99啪视频在线观看| 久久99久久99精品免观看粉| 九月婷婷综合| 六月色婷婷欧美| 99色看| 久久婷婷亚洲| 欧美日韩99| 久久激情网| 日韩成人综合网| 综合色七七| 任你干嘛免费视频播放| 五月天成人综合| 免费观看亚洲AV片| 五月丁香婷婷久久| 伊人AV五月婷| 日本色图综合| 丁香五月性| 日本三级第一页| 另类亚洲视频| 久久婷婷六月| 激情五月丁香六月| 亚洲99综合| 秋霞免费视频| 人操91在线| 婷婷月五天在线在线看| 激情五月丁香激情综合网| 99这里只有精品|v| 天天激情站| 67194中文在线| 久久免费操| 婷婷五月丁香在线观看| 色五月综合在线| 天天插天天射| 久久99免费视频网站| 久久 婷婷 五月天| 很操日本7| 色婷婷综合久久久久| 久久久天堂国产精品女人| 狠狠爱婷婷五月天| yellow视频在线观看91| 乱抡小BB| 99在线视频精品| 4399啪啪视频| 婷婷天堂综合| 天天摸人人摸| 狠狠狠狠狠狠狠狠| 国产亚洲AV人片在线| 婷婷丁香五月天综合AV| 亚州性爱99| 色色色综合网| 婷婷亚洲色| 丁香五月乱中文字幕| 99热这里只有精品99| 日韩高清成人| 以及AA大片看看| 婷婷视频网| 这里只有精品网| 99亚洲视频| 丁香五月婷婷99| 色亚洲中文| 大香蕉五月天婷婷| 国产精品成人av在线观看春天| 久99视频在线观看| 亚洲色频| 色五月婷婷少妇人妻| 色婷婷综合影院| 五月美女婷婷风骚| 99这里的视频都是精品| 狠狠人妻色综合| 1024久婷| 思思热天天看| 五月婷婷六月丁香五月| 九九婷| 在线观看熟女少妇| 色婷婷欧美| 婷婷五月欧美AA片免费| 综合激情五月丁香| 日日综合网| 一级性感黄色内射视频| 久久只有18视频| 无码成人播放器| 久久er九九| 婷婷金品综合视频| 五月综合丁香婷婷| 狠狠色噜噜狠狠狠888了| 日本一级一级一级一级| 青青草tp| 97干婷婷| 99热网址| 天天狠狠夜夜狠狠2023| 久久大香蕉丁香| 亚洲永久免费| 国产成人av在线播放| 碰碰碰91| 激情综合色婷婷六月天| 色综合中文综合网| 天天综合亚洲综合| 被强行糟蹋的女人A片| 五月天激情黄色小说在线观看| 欧美色色色色色色色色色色| 色爱综合五月| 婷婷五月综合视频免费播放| 99五丁香月| 婷婷激情五月综合丁| 桃色成人网| 婷婷五月天美女| 丁香五月播播| 另类在线| 婷婷五月六月丁香| tingtingjiqingwuyue| 成人精品在线观看| 91久久1118| 高清无码视频网址| 玖玖国产视频一区| 久久婷婷视频| 五月天丁香综合| 丁香五月色情| 99热国品免费| 天天日夜夜| 精品无码色欲AV| 国产日产亚系列精品版优势| 丁香花五月天| 国产亚洲AV人片在线| 日日操日日爽| 男人的天堂在线婷婷| 久久五月综合| 激情图片99| 中文字幕不卡+婷婷五月| 婷婷久久久久| 久久久婷| 五月天婷婷导航| 超碰无码老师| 97色天堂| 日本99热| 欧美交换配乱吟粗大25P| 丁香五月亚洲婷婷| 人人操碰| 啪啪色区| 成人在线综合| 超碰精品在线| 亚洲乱码成人| 狠狠综合久久综合| 超碰人人操人人干| 色综合色婷婷色伊人| 国产毛片精品一区二区色欲黄A片| 69er小视频| 久久婷婷大香蕉| 人妻激情在线| 婷婷五月天Av| 久久99激情五月天| 97亚洲婷婷| 草操AV在线| 欧美色激情四射| 丁香六月综合| 婷婷激情五月天7| 色狠狠色综合久久久绯色aⅴ影视| 99综合免费视频| 色婷婷第四色| 九九精品热| 99久久综合网| 婷婷色色欧美| 久久大香蕉| 九九亚洲视频| 91超碰在线观看| 久热在线中文字幕色999舞| 色婷婷综合视频| 色九网| 天堂在线伊久| 免费亚洲婷婷中文字幕| 久久这有这里精品| 狠狠九九婷婷韩| 久久九九国产精品怡红院| 激情九九这里只有精品| 在线中文av| 91 影音先锋| 99超级碰碰| 色情免费视频播放| 色99热| 狠狠综合网| 五月婷婷 激情五月| 欧美色图天堂网色| 爱久久小说下载网| 91精品综合久久婷婷九色| 五月丁香六月欧美综合| 久久国产高清| 欧美大肥婆大肥BBBBB| 天天爽综合| 婷婷久久久久| 99久高清视频| 欧美99| www.99婷婷| 99er6热在线观看精品6| 日本91在线| 久久丁香社| 欧美S码亚洲码精品M码| 亚卅毛片| 99热这里只有精品86| 精热在线综合网| 9超碰在线| 综合狠久久| 性综合网| 五月丁香影院| 99愛国产| 日本va欧美va精品发布视频 | 色欲五月丁香| 丁香六月婷婷| 99热精品无码| 亚洲一区二区无码蜜乳av| 六月丁香婷婷五月天| 99热官网精品在线| 黄色中文字目| 可以免费观看的AV| 99资源在线视频| 久久只有18视频| 亚洲人人干| 99热九九这里只有精品| 中文字幕av在线播放| 丁香99| 精品一二三区久久AAA片 | 久久久五月婷婷| 全网最新网黄大秀直播高清,主播国产录屏在线 | 成人国产网| 国产精品第一国产精品| 99热精品在线| 婷婷丁香九月| 国产精品色一哟哟| 天天干夜夜操A片| 69人妻人人澡人人爽久久| 97日韩无套内| 日本操B视频| 五月丁香在线| 欧美丁香婷婷五月| 久久五月视频| 男人天堂99| 国产精品日韩十五区| 久久66精品| 日韩一区二区三区无码| 丁香六月婷婷综合激情欧美| 色热久| 婷婷射图五月天| 中美月韩免费A片| 91九色欧美| WWW·色色色·COM| 亚洲无码成人网| 丁香五月婷婷综合91| 五月亭亭欧美女人| 欧美成人日韩| 青996青| 99福利导航| 久青操| 色娸娸综合网| 婷婷色丁香五月| 久久综合爱| WWW.天天日| 九九精品在线视频观看| 婷婷综合久久| 久久五月天合网| 久久综合热17c| 少妇口诉沐足视频播放器网址| 五月天色婷婷小说| 激情五月综亚网| 我要看激情五月天| 丁香五月五婷| 激情久久综合网| 热99这就是精品视频| 91婷婷五月天嫩女| 久久久久久97| 爱久综合| 亚洲男女激情| 日本操天堂| 午夜丁香久久久久久| 激情久久综合网| 色五月偷偷| 超碰激情网| 亚洲人人96@| 色婷婷五月天堂资源| 色五婷婷开心缴| 国产精品视频| 婷婷色五月天在线观看| 亚洲精品又粗又大又爽A片 | 五婷婷综合网| 五月综合丁| 丁香五月中文字幕| 久热这里只有精品3| 欧美97p| 六月丁香综合| 99操视频| 免费视频WWW在线观看网站| 偷拍九九热| 殴美激情综合网| 婷婷六月丁香在线| 欧美成人精品一区二区 | 九九99精品视频在线观看| 国产成人av在线| www.婷婷五月天| 殴美97色| 伊人网碰碰| 色色色99| 五月精品免费XXX| 色色国产| 欧美性猛交 XXXX 乱大交| 伊人在线大香蕉网| 乱码操操| 久久这里只有精品网| 午夜丁香婷婷| 在线99热| 日韩欧美性爱| 青青.com| 国色天香伊人狠狠色| 91男同| 亚洲精品无码99热| 五月婷婷九九热| 99色啊| 色情五月婷婷| 国产亚洲在线观看| 六月婷婷日| 激情综合婷婷五月| 操人妻视频91| 人人干av| 99色.com| tingtingjiqingwuyue| 99热都是精品| 丁香五月综合| 婷婷久久性爱| 热久久66| 99在线69| 亚洲不卡123| 婷婷五月天成人五月天| 五月婷婷在线免费观看| 99婷婷| 大香蕉天堂| 五月丁香色狠狠干大屄| 免费亚洲婷婷中文字幕| 91热在线观看视频| 这里只有精品视频视频在线观看| 强伦轩人妻一区二区电影| av在线资源| 91九色精品| 开心综合激情综合| 97人人做| 欧美日韩精品一区二区三区钱| 99re思思| 狠狠色狠狠| 韩日AV片| 这里只有精品视频看看| 色综合色五月| 99色.com| av在线色五月丁香婷区久| 色色操| 天天综合91入口| 色婷婷五月综合在线| 99综合免费视频| 26UUU欧美激情一区二区| 日日夜夜婷婷| 免费视频在线观看的网站| www,8050,午夜三级| 欧美成人日韩| 五月天丁香啪啪啪啪| 丁香花五月天| 另类小说色婷婷| 97操碰在线97| 六月婷婷网站| 亚洲亚洲人成综合网络| 人妻在线观看视频| 久久a热| 色色婷婷婷丁香五月天| 99热欧| 激情综合网五月天| 亚洲久久日| 九九视频在线| 婷婷五月天渟渟| 久久丁香五月婷婷| 五月丁香网站| 婷婷久久天堂网| 五月婷婷性| 久久婷婷五月综合色欧美| 婷婷五月天综合蜜桃| 狠狠干综合| 丁香六月婷婷一区| 久久视频这里有精品99| 91精品久久久久久77777| 欧美啪啪9| 生活片五区| 婷婷97碰碰| 久久久久久9| 香焦网五月天| 久久大香蕉同僚| 亚洲99在线| www.99免费视频| 五月婷av| 亚洲九N| 色五月综合网| 大香蕉AV电影在线| 久久66成人网站| 六六久久黄色| 婷婷色丁香六月| 日本在线观看aaa 99| 婷婷五月天久久久| 久久九九经典| 久热亚洲| 婷婷五月综合久久中文字幕| 日本一道久久| 日本色婷婷| 久久久网站| 狠狠va| 久久久久久99日本| 亚艹艹| 大香蕉五月| 人妻视频在线| 91久热| 色五月婷婷网| 99色丁香婷婷综合网| 色欧美色色色| 激情综合激情五月一起草| 亚洲AV永久无码影院黑人| 五月丁香激| 日韩欧美一级大黄网站| 亚洲色色色| 五月丁香六月婷婷中文版| 超碰成人影视| 激情五月综合婷婷| 久久久www| 操人无码| 欧美啄木乌丝袜人妻系列| 午夜福利8055| 99天堂网| 欧洲激情五月天婷婷| 狠狠色婷| 天天综合五月天| 五月色婷婷亚洲 | 狠狠狠狠狠| 精品A√| 91seAV| 啪啪91| 久久9精品| 四虎国产精品永久在线国在线| 综合综合色色| 六月婷欧美丁香综合| 第四色首页| 97资源碰碰| 狠狠精品干练久久久无码中文字幕 | 丁香五月色| 亚洲成人在线五月天| 五月婷婷色播| 大地9中文在线观看免费高清| 五月天激情子轮| 99精品热视频| 中国女人做爰A片| 五月天激情图片| 婷婷月五天在线在线看| 婷婷五月丁香基| 99九九视频| 五月丁香欧美综合免费视频| 97热久久五月婷婷| 国产精品久久久久久久久久免费|