網口掃盲三:乙太網晶元MAC和PHY的關係

来源:https://www.cnblogs.com/rayhe/archive/2018/05/25/9087420.html
-Advertisement-
Play Games

問:如何實現單片乙太網微控制器? 答:訣竅是將微控制器、乙太網媒體接入控制器(MAC)和物理介面收發器(PHY)整合進同一晶元,這樣能去掉許多外接元器件.這種方案可使MAC和PHY實現很好的匹配,同時還可減小引腳數、縮小晶元面積.單片乙太網微控制器還降低了功耗,特別是在採用掉電模式的情況下. 問:以 ...


問:如何實現單片乙太網微控制器?

答:訣竅是將微控制器、乙太網媒體接入控制器(MAC)和物理介面收發器(PHY)整合進同一晶元,這樣能去掉許多外接元器件。這種方案可使MAC和PHY實現很好的匹配,同時還可減少引腳數、縮小晶元面積,單片乙太網微控制器還降低了功耗,特別是在採用掉電模式的情況下。

問:乙太網MAC是什麼?

答:MAC即Media Access Control,即媒體訪問控制子層協議。該協議位於OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。在發送數據的時候,MAC協議可以事先判斷是否可以發送數據,如果可以發送將給數據加上一些控制信息,最終將數據以及控制信息以規定的格式發送到物理層;在接收數據的時候,MAC協議首先判斷輸入的信息並判斷是否發生傳輸錯誤,如果沒有錯誤,則去掉控制信息發送至LLC層。該層協議是乙太網MAC由IEEE-802.3乙太網標准定義。最新的MAC同時支持10Mbps和100Mbps兩種速率。

乙太網數據鏈路層其實包含MAC(介質訪問控制)子層和LLC(邏輯鏈路控制)子層。一塊乙太網卡MAC晶元的作用不但要實現MAC子層和LLC子層的功能,還要提供符合規範的PCI界面以實現和主機的數據交換。

MAC從PCI匯流排收到IP數據包(或者其他網路層協議的數據包)後,將之拆分並重新打包成最大1518Byte,最小64Byte的幀。這個幀裡面包括了目標MAC地址、自己的源MAC地址和數據包裡面的協議類型(比如IP數據包的類型用80表示)。最後還有一個DWORD(4Byte)的CRC碼。

可是目標的MAC地址是哪裡來的呢?這牽扯到一個ARP協議(介乎於網路層和數據鏈路層的一個協議)。第一次傳送某個目的IP地址的數據的時候,先會發出一個ARP包,其MAC的目標地址是廣播地址,裡面說到:”誰是xxx.xxx.xxx.xxx這個IP地址的主人?”因為是廣播包,所有這個區域網的主機都收到了這個ARP請求。收到請求的主機將這個IP地址和自己的相比較,如果不相同就不予理會,如果相同就發出ARP響應包。這個IP地址的主機收到這個ARP請求包後回覆的ARP響應里說到:“我是這個IP地址的主人”。這個包裡面就包括了他的MAC地址。以後給這個IP地址的幀的目標MAC地址就被確定了。(其它的協議如IPX/SPX也有相應的協議完成這些操作)

IP地址和MAC地址之間的關聯關係保存在主機系統裡面,叫做ARP表。由驅動程式和操作系統完成。在Microsoft的系統裡面可以用arp-a的命令查看ARP表。收到數據幀的時候也是一樣,做完CRC以後,如果沒有CRC效驗錯誤,就把幀頭去掉,把數據包拿出來通過標準的介面傳遞給驅動和上層的協議棧,最終正確的達到我們的應用程式。

還有一些控制幀,例如流控幀也需要MAC直接識別並執行相應的行為。

乙太網MAC晶元的一端接電腦PCI匯流排,另外一端就接到PHY晶元上,它們之間是通過MII介面鏈接的。

問:什麼是MII?

答:MII即媒體獨立介面,它是IEEE-802.3定義的乙太網行業標準。"媒體獨立"表明在不對MAC硬體重新設計或替換的情況下,任何類型的PHY設備都可以正常工作。它包括一個數據介面,以及一個MAC和PHY之間的管理介面。

  • 數據介面包括分別用於發送器和接收器的兩條獨立通道。每條通道都有自己的數據,時鐘和控制信號。MII數據介面總共需要16個信號,包括TX_ER,TXD<3:0>,TX_EN,TX_CLK, COL,RXD<3:0>,RX_EX,RX_CLK,CRS,RX_DV等。MII以4位半位元組方式傳送數據雙向傳輸,時鐘速率25MHz。其工作速率可達100Mb/s;
  • MII管理介面是個雙信號介面,一個是時鐘信號,另一個是數據信號。通過管理介面,上層能監視和控制PHY。其管理是使用SMI(Serial Management Interface)匯流排通過讀寫PHY的寄存器來完成的。PHY裡面的部分寄存器是IEEE定義的,這樣PHY把自己目前的狀態反映到寄存器裡面,MAC通過SMI匯流排不斷的讀取PHY的狀態寄存器以得知目前PHY的狀態,例如連接速度,雙工的能力等。當然也可以通過SMI設置PHY的寄存器達到控制的目的,例如流控的打開關閉,自協商模式還是強制模式等。不論是物理連接的MII匯流排和SMI匯流排還是PHY的狀態寄存器和控制寄存器都是有IEEE的規範的,因此不同公司的MAC和PHY一樣可以協調工作。當然為了配合不同公司的PHY的自己特有的一些功能,驅動需要做相應的修改。

MII支持10Mbps和100Mbps的操作,一個介面由14根線組成,它的支持還是比較靈活的,但是有一個缺點是因為它一個埠用的信號線太多,如果一個8埠的交換機要用到112根線,16埠就要用到224根線,到32埠的話就要用到448根線,一般按照這個介面做交換機是不太現實的,所以現代的交換機的製作都會用到其它的一些從MII簡化出來的標準,比如RMII、SMII、GMII等。

RMII是簡化的MII介面,在數據的收發上它比MII介面少了一倍的信號線,所以它一般要求是50MHz的匯流排時鐘。RMII一般用在多埠的交換機,它不是每個埠安排收、發兩個時鐘,而是所有的數據埠共用一個時鐘用於所有埠的收發,這裡就節省了不少的埠數目。RMII的一個埠要求7個數據線,比MII少了一倍,所以交換機能夠接入多一倍數據的埠。和MII一樣,RMII支持10Mbps和100Mbps的匯流排介面速度。

SMII是由思科提出的一種媒體介面,它有比RMII更少的信號線數目,S表示串列的意思。因為它只用一根信號線傳送發送數據,一根信號線傳輸接受數據,所以為了滿足100Mbps的匯流排介面速度的需求,它的時鐘頻率就達到了125MHz,為什麼用125MHz,是因為數據線裡面會傳送一些控制信息。SMII一個埠僅用4根信號線完成100Mbps的傳輸,比起RMII差不多又少了一倍的信號線。SMII在工業界的支持力度是很高的。同理,所有埠的數據收發都公用同一個外部的125MHz時鐘。

GMII是千兆網的MII介面,這個也有相應的RGMII介面,表示簡化了的GMII介面。

MII匯流排

在IEEE802.3中規定的MII匯流排是一種用於將不同類型的PHY與相同網路控制器(MAC)相連接的通用匯流排。網路控制器可以用同樣的硬體介面與任何PHY。

GMII(Gigabit MII)

GMII採用8位介面數據,工作時鐘125MHz,因此傳輸速率可達1000Mbps。同時相容MII所規定的10/100 Mbps工作方式。

GMII介面數據結構符合IEEE乙太網標準。該介面定義見IEEE 802.3-2000。

發送器

  • GTXCLK——吉比特TX。信號的時鐘信號(125MHz)
  • TXCLK——10/100Mbps信號時鐘
  • TXD[7..0]——被髮送數據
  • TXEN——發送器使能信號
  • TXER——發送器錯誤(用於破壞一個數據包)

註:在千兆速率下,向PHY提供GTXCLK信號,TXD、TXEN、TXER信號與此時鐘信號同步。否則,在10/100Mbps速率下,PHY提供TXCLK時鐘信號,其它信號與此信號同步。其工作頻率為25MHz(100M網路)或2.5MHz(10M網路)。

接收器:

  • RXCLK——接收時鐘信號(從收到的數據中提取,因此與GTXCLK無關聯)
  • RXD[7..0]——接收數據
  • RXDV——接收數據有效指示
  • RXER——接收數據出錯指示
  • COL——衝突檢測(僅用於半雙工狀態)

管理配置

  • MDC——配置介面時鐘
  • MDIO——配置介面I/O

管理配置介面控制PHY的特性。該介面有32個寄存器地址,每個地址16位。其中前16個已經在"IEEE 802.3,2000-22.2.4 Management Functions"中規定了用途,其餘的則由各器件自己指定。

RMII(Reduced Media Independant Interface)
簡化媒體獨立介面
是標準的乙太網介面之一,比MII有更少的I/O傳輸。

RMII口是用兩根線來傳輸數據的,MII口是用4根線來傳輸數據的,GMII是用8根線來傳輸數據的。MII/RMII只是一種介面,對於10Mbps線速,MII的時鐘速率是2.5MHz就可以了,RMII則需要5MHz;對於100Mbps線速,MII需要的時鐘速率是25MHz,RMII則是50MHz。

MII/RMII用於傳輸乙太網包,在MII/RMII介面是4/2bit的,在乙太網的PHY里需要做串並轉換、編解碼等才能在雙絞線和光纖上進行傳 輸,其幀格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。乙太網幀的格式為:前導符+開始位+目的mac地址+源mac地址+類型/長度+數據+padding(optional)+32bitCRC
如果有vlan,則要在類型/長度後面加上2個位元組的vlan tag,其中12bit來表示vlan id,另外4bit表示數據的優先順序!

問:乙太網PHY是什麼?

答:PHY是物理介面收發器,它實現物理層。IEEE-802.3標准定義了乙太網PHY。包括MII/GMII(介質獨立介面)子層,PCS(物理編碼子層),PMA(物理介質附加)子層,PMD(物理介質相關)子層,MDI子層。它符合IEEE-802.3k中用於10BaseT(第14條)和100BaseTX(第24條和第25條)的規範。

PHY在發送數據的時候,收到MAC過來的數據(對PHY來說,沒有幀的概念,對它來說,都是數據而不管什麼地址,數據還是CRC。對於100BaseTX因為使用4B/5B編碼,每4bit就增加1bit的檢錯碼),然後把並行數據轉化為串列流數據,再按照物理層的編碼規則把數據編碼,再變為模擬信號把數據送出去。收數據時的流程反之。PHY還有個重要的功能就是實現CSMA/CD的部分功能。它可以檢測到網路上是否有數據在傳送,如果有數據在傳送中就等待,一旦檢測到網路空閑,再等待一個隨機時間後將送數據出去。如果兩個碰巧同時送出了數據,那樣必將造成衝突,這時候,衝突檢測機構可以檢測到衝突,然後各等待一個隨機的時間重新發送數據。這個隨機時間很有講究的,並不是一個常數,在不同的時刻計算出來的隨機時間都是不同的,而且有多重演算法來應付出現概率很低的同兩台主機之間的第二次衝突。

許多網友在接入Internet寬頻時,喜歡使用”搶線”強的網卡,就是因為不同的PHY碰撞後計算隨機時間的方法設計上不同,使得有些網卡比較”占便宜”。不過,搶線只對廣播域的網路而言的,對於交換網路和ADSL這樣點到點連接到局端設備的接入方式沒什麼意義。而且”搶線”也只是相對而言的,不會有質的變化。

現在交換機的普及使得交換網路的普及,使得衝突域網路少了很多,極大地提高了網路的帶寬。但是如果用HUB,或者共用帶寬接入Internet的時候還是屬於衝突域網路,有衝突碰撞的。交換機和HUB最大的區別就是:一個是構建點到點網路的區域網交換設備,一個是構建衝突域網路的區域網互連設備。

除此之外PHY還提供了和對端設備連接的重要功能,並通過LED燈顯示出自己目前的連接狀態和工作狀態讓我們知道。當我們給網卡接入網線的時候,PHY不斷發出的脈衝信號檢測到對端有設備,它們通過標準的”語言”交流,互相協商並確定連接速度、雙工模式、是否採用流控等。通常情況下,協商的結果是兩個設備中能同時支持的最大速度和最好的雙工模式。這個技術被稱為AutoNegotiation或者NWAY,它們是一個意思–自動協商。

具體傳輸過程為,發送數據時,網卡首先偵聽介質上是否有載波(載波由電壓指示),如果有,則認為其他站點正在傳送信息,繼續偵聽介質。一旦通信介質在一定時間段內(稱為幀間縫隙IFG=9.6微秒)是安靜的,即沒有被其他站點占用,則開始進行幀數據發送,同時繼續偵聽通信介質,以檢測衝突。在發送數據期間,如果檢測到衝突,則立即停止該次發送,並向介質發送一個“阻塞”信號,告知其他站點已經發生衝突,從而丟棄那些可能一直在接收的受到損壞的幀數據,並等待一段隨機時間(CSMA/CD確定等待時間的演算法是二進位指數退避演算法)。在等待一段隨機時間後,再進行新的發送。如果重傳多次後(大於16次)仍發生衝突,就放棄發送。接收時,網卡瀏覽介質上傳輸的每個幀,如果其長度小於64位元組,則認為是衝突碎片。如果接收到的幀不是衝突碎片且目的地址是本地地址,則對幀進行完整性校驗,如果幀長度大於1518位元組(稱為超長幀,可能由錯誤的LAN驅動程式或干擾造成)或未能通過CRC校驗,則認為該幀發生了畸變。通過校驗的幀被認為是有效的,網卡將它接收下來進行本地處理。

問:造成乙太網MAC和PHY單片整合難度高的原因是什麼?

答:PHY整合了大量模擬硬體,而MAC是典型的全數字器件。晶元面積及模擬/數字混合架構是為什麼先將MAC集成進微控制器而將PHY留在片外的原因。更靈活、密度更高的晶元技術已經可以實現MAC和PHY的單晶元整合。

問:網卡上除RJ-45介面外,還需要其它元件嗎?

答:PHY和MAC是網卡的主要組成部分,網卡一般用RJ-45插口,10M網卡的RJ-45插口也只用了1,2,3,6四根針,而100M或1000M網卡的則是八根針都是全的。除此以外,還需要其它元件,因為雖然PHY提供絕大多數模擬支持,但在一個典型實現中,仍需外接6,7只分立元件及一個區域網絕緣模塊。絕緣模塊一般採用一個1:1的變壓器。這些部件的主要功能是為了保護PHY免遭由於電氣失誤而引起的損壞。

另外,一顆CMOS製程的晶元工作的時候產生的信號電平總是大於0V的(這取決於晶元的製程和設計需求),但是這樣的信號送到100米甚至更長的地方會有很大的直流分量的損失。而且如果外部網線直接和晶元相連的話,電磁感應(打雷)和靜電,很容易造成晶元的損壞。再就是設備接地方法不同,電網環境不同會導致雙方的0V電平不一致,這樣信號從A傳到B,由於A設備的0V電平和B點的0V電平不一樣,這樣會導致很大的電流從電勢高的設備流向電勢低的設備。

為瞭解決以上問題Transformer(隔離變壓器)這個器件就應運而生。它把PHY送出來的差分信號用差模耦合的線圈耦合濾波以增強信號,並且通過電磁場的轉換耦合到連接網線的另外一端。這樣不但使網線和PHY之間沒有物理上的連接而換傳遞了信號,隔斷了信號中的直流分量,還可以在不同0V電平的設備中傳送數據。

隔離變壓器本身就是設計為耐2KV~3KV的電壓的。也起到了防雷感應(我個人認為這裡用防雷擊不合適)保護的作用。有些朋友的網路設備在雷雨天氣時容易被燒壞,大都是PCB設計不合理造成的,而且大都燒毀了設備的介面,很少有晶元被燒毀的,就是隔離變壓器起到了保護作用。

隔離變壓器本身是個被動元件,只是把PHY的信號耦合了到網線上,並沒有起到功率放大的作用。那麼一張網卡信號的傳輸的最長距離是誰決定的呢?

一張網卡的傳輸最大距離和與對端設備連接的相容性主要是PHY決定的。但是可以將信號送的超過100米的PHY其輸出的功率也比較大,更容易產生EMI的問題。這時候就需要合適的Transformer與之配合。作PHY的老大公司Marvell的PHY,常常可以傳送180~200米的距離,遠遠超過IEEE的100米的標準。

RJ-45的接頭實現了網卡和網線的連接。它裡面有8個銅片可以和網線中的4對雙絞(8根)線對應連接。其中100M的網路中1,2是傳送數據的,3,6是接收數據的。1,2之間是一對差分信號,也就是說它們的波形一樣,但是相位相差180度,同一時刻的電壓幅度互為正負。這樣的信號可以傳遞的更遠,抗干擾能力強。同樣的,3,6也一樣是差分信號。

網線中的8根線,每兩根扭在一起成為一對。我們製作網線的時候,一定要註意要讓1,2在其中的一對,3,6在一對。否則長距離情況下使用這根網線的時候會導致無法連接或連接很不穩定。

現在新的PHY支持AUTO MDI-X功能(也需要Transformer支持)。它可以實現RJ-45介面的1,2上的傳送信號線和3,6上的接收信號線的功能自動互相交換。有的PHY甚至支持一對線中的正信號和負信號的功能自動交換。這樣我們就不必為了到底連接某個設備需要使用直通網線還是交叉網線而費心了。這項技術已經被廣泛的應用在交換機和SOHO路由器上。

在1000Basd-T網路中,其中最普遍的一種傳輸方式是使用網線中所有的4對雙絞線,其中增加了4,5和7,8來共同傳送接收數據。由於1000Based-T網路的規範包含了AUTOMDI-X功能,因此不能嚴格確定它們的傳出或接收的關係,要看雙方的具體的協商結果。

一片網卡主要功能的實現就基本上是上面這些器件了。

其他的,還有一顆EEPROM晶元,通常是一顆93C46。裡面記錄了網卡晶元的供應商ID,子系統供應商ID,網卡的MAC地址,網卡的一些配置,如SMI匯流排上PHY的地址,BOOTROM的容量,是否啟用BOOTROM引導系統等東西。

很多網卡上還有BOOTROM這個東西。它是用於無盤工作站引導操作系統的。既然無盤,一些引導用必需用到的程式和協議棧就放到裡面了,例如RPL,PXE等。實際上它就是一個標準的PCI ROM。所以才會有一些硬碟防寫卡可以通過燒寫網卡的BootRom來實現。其實PCI設備的ROM是可以放到主板BIOS裡面的。啟動電腦的時候一樣可以檢測到這個ROM並且正確識別它是什麼設備的。AGP在配置上和PCI很多地方一樣,所以很多顯卡的BIOS也可以放到主板BIOS裡面。這就是為什麼板載的網卡我們從來沒有看到過BOOTROM的原因。

最後就是電源部分了。大多數網卡現在都使用3.3V或更低的電壓。有的是雙電壓的,因此需要電源轉換電路。

而且網卡為了實現Wake on line功能,必須保證全部的PHY和MAC的極少一部分始終處於有電的狀態,這需要把主板上的5V Standby電壓轉換為PHY工作電壓的電路。在主機開機後,PHY的工作電壓應該被從5V轉出來的電壓替代以節省5V Standby的消耗(許多劣質網卡沒有這麼做)。

有Wake on line功能的網卡一般還有一個WOL的介面。那是因為PCI2.1以前沒有PCI設備喚醒主機的功能,所以需要這一根線通過主板上的WOL的介面連到南橋裡面以實現WOL的功能。新的主板合網卡一般支持PCI2.2/2.3,擴展了PME#信號功能,不需要那個介面而通過PCI匯流排就可以實現喚醒功能。

我們現在來看兩個圖

MAC和PHY分開的乙太網卡

MAC和PHY集成在一顆晶元的乙太網卡

上圖中各部件為:

①RJ-45介面

②Transformer(隔離變壓器)

③PHY晶元

④MAC晶元

⑤EEPROM

⑥BOOTROM插槽

⑦WOL接頭

⑧晶振

⑨電壓轉換晶元

⑩LED指示燈

網卡的功能主要有兩個:一是將電腦的數據封裝為幀,並通過網線(對無線網路來說就是電磁波)將數據發送到網路上去;二是接收網路上其它設備傳過來的幀,並將幀重新組合成數據,發送到所在的電腦中。網卡能接收所有在網路上傳輸的信號,但正常情況下只接受發送到該電腦的幀和廣播幀,將其餘的幀丟棄。然後,傳送到系統CPU做進一步處理。當電腦發送數據時,網卡等待合適的時間將分組插入到數據流中。接收系統通知電腦消息是否完整地到達,如果出現問題,將要求對方重新發送。

問:10BaseT和100BaseTX PHY實現方式不同的原因何在?

答:兩種實現的分組描述本質上是一樣的,但兩者的信令機制完全不同。其目的是阻止一種硬體實現容易地處理兩種速度。10BaseT採用曼徹斯特編碼,100BaseTX採用4B/5B編碼。

問:什麼是曼徹斯特編碼?

答:曼徹斯特編碼又稱曼徹斯特相位編碼,它通過相位變化來實現每個位(圖2)。通常,用一個時鐘周期中部的上升沿表示“1”,下降沿表示“0”。周期末端的相位變化可忽略不計,但有時又可能需要將這種相位變化計算在內,這取決於前一位的值。

問:什麼是4B/5B編碼?

答:4B/5B編碼是一種塊編碼方式。它將一個4位的塊編碼成一個5位的塊。這就使5位塊內永遠至少包含2個“1”轉換,所以在一個5位塊內總能進行時鐘同步。該方法需要25%的額外開銷。

問:網卡的MAC和PHY間的關係?

答:網卡工作在osi的最後兩層,物理層和數據鏈路層,物理層定義了數據傳送與接收所需要的電與光信號、線路狀態、時鐘基準、數據編碼和電路等,並向數據鏈路層設備提供標準介面.物理層的晶元稱之為PHY.數據鏈路層則提供定址機構、數據幀的構建、數據差錯檢查、傳送控制、向網路層提供標準的數據介面等功能.乙太網卡中數據鏈路層的晶元稱之為MAC控制器.很多網卡的這兩個部分是做到一起的.他們之間的關係是pci匯流排接mac匯流排,mac接phy,phy接網線(當然也不是直接接上的,還有一個變壓裝置).

PHY和MAC之間是如何傳送數據和相互溝通的.通過IEEE定義的標準的MII/GigaMII(Media Independed Interfade,介質獨立界面)界面連接MAC和PHY.這個界面是IEEE定義的.MII界面傳遞了網路的所有數據和數據的控制.ETHERNET的介面實質是MAC通過MII匯流排控制PHY的過程.

問:網線上傳輸的是模擬信號還是數字信號?

答:是模擬信號。因為它傳出和接收是採用的模擬的技術。雖然它傳送的信息是數字的(並不是傳送的信息是數字的信號就可以叫做數字信號)。

簡單的例子:我們知道電話是模擬信號,但是當我們撥號上網的時候,電話線里傳送的是數字信息,但信號本身依舊是模擬的。然而ADSL同樣是通過電話線傳送的,卻是數字信號。這取決於它傳出和接受採用的技術。

問:若操作系統沒有載入網卡驅動,網卡雖然在系統設備樹上,但網卡介面創建不了,那網卡實際能不能接收到數據?

答:這裡面有很多細節,我根據Intel網卡的Spec大概寫了寫,想儘量寫的通俗一些,所以沒有刻意用Spec里的術語,另外本文雖然講的是MAC/PHY,但光口卡的(SERDES)也是類似的。

  1.  PCI設備做reset以後進入D0uninitialized(非初始化的D0狀態,參考PCI電源管理規範),此時網卡的MAC和DMA都不工作,PHY是工作在一個特殊的低電源狀態的;
  2.  操作系統創建設備樹時,初始化這個設備,PCI命令寄存器的 Memory Access Enable or the I/O Access Enable bit會被enable,這就是D0active。此時PHY/MAC就使能了;
  3.  PHY被使能應該就可以接收物理鏈路上的數據了,否則不能收到FLP/NLP, PHY就不能建立物理連接。但這類包一般是流量間歇發送的;
  4.  驅動程式一般要通過寄存器來控制PHY,比如自動協商speed/duplex,查詢物理鏈路的狀態Link up/down;
  5.  MAC被使能後,如果沒有驅動設置控制寄存器的一個位(CTRL.SLU )的話, MAC和PHY是不能通訊的,就是說MAC不知道PHY的link已經ready,所以收不到任何數據的。這位設置以後,PHY完成自協商,網卡才會有個Link change的中斷,知道物理連接已經Link UP了;
  6.  即使Link已經UP,MAC還需要enable接收器的一個位(RCTL.RXEN ),包才可以被接收進來,如果網卡被reset,這位是0,意味著所有的包都會被直接drop掉,不會存入網卡的 FIFO。老網卡在驅動退出前利用這位關掉接收。Intel的最新千兆網卡發送接收隊列的動態配置就是依靠這個位的,重新配置的過程一定要關掉流量;
  7.  無論驅動載入與否,發生reset後,網卡EEPOM里的mac地址會寫入網卡的MAC地址過濾寄存器,驅動可以去修改這個寄存器,現代網卡通常支持很多MAC地址,也就是說,MAC地址是可以被軟體設置的。例如,Intel的千兆網卡就支持16個單播 MAC地址,但只有1個是存在EEPROM里的,其它是軟體聲稱和設置的;
  8.  但如果驅動沒有載入,網卡已經在設備樹上,操作系統完成了步驟1-2的初始化,此時網卡的PHY應該是工作的,但因為沒有人設置控制位(CTRL.SLU)來讓MAC和PHY建立聯繫,所以MAC是不收包的。這個控制位在reset時會再設置成0;
  9.  PHY可以被軟體設置加電和斷電,斷電狀態除了接收管理命令以外,不會接收數據。另外,PHY還能工作在Smart Power Down模式下,link down就進入省電狀態;
  10.  有些多口網卡,多個網口共用一個PHY,所以BIOS里設置disbale了某個網口,也未必會把PHY的電源關掉,反過來,也要小心地關掉PHY的電源;
  11.  要詳細瞭解PHY,最終還是要熟悉IEEE乙太網的相關協議。

本文引用:http://blog.csdn.net/woodstar123/article/details/3324368


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在經過了上面幾篇文章的學習這賓,本篇文章我們來學習如何在已經的功能中添加新欄位。 ...
  • 20180523更新內容 本次更新兩個內容,一是增加視頻處理功能,二是增加定時服務功能。 視頻處理 定時服務 BitAdminCore框架,用最少的代碼,實現最多的功能 本次新暫未發佈,後續有空發佈 計劃修改內容 1、人臉登錄功能需要重構,目前功能不完善。 2、QuerySuite類重構,同時支持m ...
  • 偉大的無產階級Willaim曾說過:"無論你覺得自己多麼的了不起,也永遠有人比你更強"。對,我說過!我就是william。 今天想記錄一下在項目中遇到的一個比較有意思的東西,異常攔截器(也不能完全說只是異常攔截,準確的說應該叫方法攔截),那有的人可能會說,異常攔截器不就是用Try……Catch就好了 ...
  • 之前ASP.NET中使用的HTTP Modules及HTTP Handlers,在ASP.NET Core中已不復存在,取而代之的是Middleware。Middleware除了簡化了HTTP Modules/Handlers的使用方式,還帶入了Pipeline的概念。本篇將介紹ASP.NET Co ...
  • AWK中,變數分為兩種:內置變數與自定義變數。 常見的內置變數有: FS:輸入欄位分隔符, 預設為空白字元 OFS:輸出欄位分隔符, 預設為空白字元 RS:輸入記錄分隔符(輸入換行符), 指定輸入時的換行符 ORS:輸出記錄分隔符(輸出換行符),輸出時用指定符號代替換行符 NF:number of ...
  • 1. 簡介 Regmap 機制是在 Linux 3.1 加入進來的特性。主要目的是減少慢速 I/O 驅動上的重覆邏輯,提供一種通用的介面來操作底層硬體上的寄存器。其實這就是內核做的一次重構。Regmap 除了能做到統一的 I/O 介面,還可以在驅動和硬體 IC 之間做一層緩存,從而能減少底層 I/O ...
  • 文章來源: linux 平均負載 load average 的含義 load average 的含義 平均負載(load average)是指系統的運行隊列的平均利用率,也可以認為是可運行進程的平均數。 以路況為例, 單核CPU、單車道 情況如下: 0.00-1.00 之間的數字表示此時路況非常良好 ...
  • 1:基礎容器編譯部署apache 1.1:pull一個ubuntu 16.04的鏡像 sudo docker pull ubuntu:16.04 1.2:運行容器 sudo docker run -d --name ubuntu -p 80:80 ubuntu:16.04 1.3:安裝ubuntu依 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...