Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so2:teme:tema6 [2018/05/19 22:20]
daniel.baluta
so2:teme:tema6 [2019/05/22 21:08] (current)
daniel.baluta [e100 - driver de rețea]
Line 1: Line 1:
 ===== e100 - driver de rețea ==== ===== e100 - driver de rețea ====
-  * Termen de predare: ​**Miercuri, 23 Mai 2018, ora 23:00 ** \\+  * Termen de predare: ​<tema nu intra in lista oficiala de teme pentru 2019>
 ===== Scopul temei ===== ===== Scopul temei =====
  
Line 10: Line 10:
 ===== Enunț =====  ===== Enunț ===== 
  
-Să se scrie un driver pentru placa de rețea **Intel 82559ER** (device întâlnit şi sub numele de **e100** sau **eepro100**). Modulul va trebui să suporte device-urile de rețea configurate în maşina virtuală qemu. Specificațiile se găsesc ​in datasheetul e100:+Să se scrie un driver pentru placa de rețea **Intel 82559ER** (device întâlnit şi sub numele de **e100** sau **eepro100**). Modulul va trebui să suporte device-urile de rețea configurate în maşina virtuală qemu. Specificațiile se gasesc ​in documentul:
  
   * [[http://​application-notes.digchip.com/​027/​27-45688.pdf| 82559ER Fast Ethernet PCI Controller Software Developer Manual]]   * [[http://​application-notes.digchip.com/​027/​27-45688.pdf| 82559ER Fast Ethernet PCI Controller Software Developer Manual]]
  
 Nu va trebui să ciți în întregime documentul de mai sus, ci doar secțiunile indicate în enunț. Nu va trebui să ciți în întregime documentul de mai sus, ci doar secțiunile indicate în enunț.
 +
 +<note important>​Puteți porni implementarea de la zero sau folosi scheletul de cod generat: ​
 +      $ LABS=assignments/​6-e100 make skels 
 +</​note>​
  
 ==== Precizări ==== ==== Precizări ====
Line 41: Line 45:
  
 Urmăriți comentariile marcate cu TODO 2: Urmăriți comentariile marcate cu TODO 2:
-  * inițializați device-ul PCI folosind funcția ''​pci_device_enable''​ (activeaza I/O și memoria și trezește device-ul dacă era suspendat)+  * inițializați device-ul PCI folosind funcția ''​pci_enable_device''​ (activeaza I/O și memoria și trezește device-ul dacă era suspendat)
   * rezervați zonele de memorie si I/O pentru device-ul PCI folosind funcția pci_request_regions   * rezervați zonele de memorie si I/O pentru device-ul PCI folosind funcția pci_request_regions
   * device-ul e100 suporta urmatoarele zone (chapter 4.1.10)   * device-ul e100 suporta urmatoarele zone (chapter 4.1.10)
Line 51: Line 55:
 ==== e100 private data ==== ==== e100 private data ====
  
-Structura ''​e100_priv_data''​ va contine informatii specifice fiecarui device de retea gestionat de driver. În primul rând va conține informații despre pci_dev și netdevice-ul curent, apoi informatii de stare, registre, unitatea de transmisie, unitatea de recepție, etc. Spațiul de memorie pentru ''​e100_priv_data''​ se va aloca în funcția ''​alloc_etherdev''​ urmăriți ​capitolul ​[[so2:​teme:​tema6#​structura_net_device]]. ​+Structura ''​e100_priv_data''​ va contine informatii specifice fiecarui device de retea gestionat de driver. În primul rând va conține informații despre pci_dev și netdevice-ul curent, apoi informatii de stare, registre, unitatea de transmisie, unitatea de recepție, etc. Spațiul de memorie pentru ''​e100_priv_data''​ se va aloca în funcția ''​alloc_etherdev''​ urmăriți ​sectiunea ​[[so2:​teme:​tema6#​structura_net_device]]. ​
  
  
Line 93: Line 97:
    ​+--------------+--------------+    ​+--------------+--------------+
  
-Mai multe detalii despre trimiterea pachetelor citiți in secțiunea ''​Transmitting Packets''​ de [[https://​pdos.csail.mit.edu/​6.828/​2010/​labs/​lab6/​ | aici]].+Mai multe detalii despre trimiterea pachetelor citiți in secțiunea ''​Transmitting Packets''​ de [[https://​pdos.csail.mit.edu/​6.828/​2010/​labs/​lab6/​ | aici]]. Urmăriți comentariile marcate cu TODO 5.
  
 ==== Recepționarea pachetelor ==== ==== Recepționarea pachetelor ====
Line 104: Line 108:
 Unitatea de recepție (RU) se ocupă de primirea pachetelor. La primirea unui pachet din rețea, copiaza pachetul în urmator-ul RFD liber, marchează RFD-ul valid și se mută la următorul RFD. Unitatea de recepție (RU) se ocupă de primirea pachetelor. La primirea unui pachet din rețea, copiaza pachetul în urmator-ul RFD liber, marchează RFD-ul valid și se mută la următorul RFD.
  
-Mai multe detalii despre trimiterea pachetelor citiți in secțiunea ''​Receiving Packets''​ de [[https://​pdos.csail.mit.edu/​6.828/​2010/​labs/​lab6/​ | aici]]. +Mai multe detalii despre trimiterea pachetelor citiți in secțiunea ''​Receiving Packets''​ de [[https://​pdos.csail.mit.edu/​6.828/​2010/​labs/​lab6/​ | aici]]. ​Urmăriți comentariile cu TODO 6.
 ===== e100 header ===== ===== e100 header =====
  
so2/teme/tema6.1526757622.txt.gz · Last modified: 2018/05/19 22:20 by daniel.baluta
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0