This shows you the differences between two versions of the page.
so2:teme:tema6 [2018/05/19 22:29] daniel.baluta [Transmiterea pachetelor] |
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 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 ===== | ||