<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2017-03-13 21:03 GMT+02:00 Adrian Stanciu <span dir="ltr"><<a href="mailto:adrian.stanciu.pub@gmail.com" target="_blank">adrian.stanciu.pub@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">2017-03-13 11:52 GMT+02:00 Matei Oprea via so2 <<a href="mailto:so2@cursuri.cs.pub.ro">so2@cursuri.cs.pub.ro</a>>:<br>
> Hello,<br>
<br>
Salut,<br>
<span class="gmail-"><br>
><br>
> Am si eu o intrebare legata de alloc_netdev [0]. Am ales sa inregistrez asa<br>
> device-ul in retea. Dupa cum se poate vedea, primeste 3 argumente dintre<br>
> care ultimul este un callback.<br>
><br>
> Toate bune si frumoase dar am 2 probleme cu functia asta:<br>
><br>
> 1. Primesc eroare cum ca are nevoie de 4 argumente, nu 3 cum e trecut in<br>
> documentatie. Vad ca asta e un bug de pe vremea cand kernelul era la vers<br>
> 3.4, din cate m-am documentat. Versiunea de kernel locala e 4.6.7. Distro-ul<br>
> e Fedora. De asemenea, vad ca si vm-ul vostru ruleaza tot 4.ceva ...<br>
><br>
> Inca n-am gasit vreo rezolvare pentru chestia asta, poate are cineva vreo<br>
> idee.<br>
<br>
</span>Îți recomand să compilezi direct pentru kernelul 4.9.11, cel<br>
configurat în mașina virtuală SO2 [3].<br>
Astfel nu vei fi nevoit să portezi la final implementarea ta pentru<br>
kernelul folosit de vmchecker.<br>
<br>
Iar testarea să o faci tot în mașina virtuală.<br>
<span class="gmail-"><br>
> 2. Practic, ca sa initializez device-ul ar trebui sa-i pasez in functia de<br>
> probe, o referinta la pci_dev din argumentele pe care le primeste functia de<br>
> probe, right [1][2] ? Daca da, cum pot sa fac asta in callback-ul de la<br>
> alloc_netdev? Pentru ca callback-ul primeste un struct net_device *dev si<br>
> atat...<br>
<br>
</span>Aici îți recomand să folosești alloc_etherdev [4]. Este simplu și<br>
corect. Poți să urmărești cum e folosit în implementarea oficială e100<br>
[5].<br>
<br>
alloc_etherdev întoarce un pointer la un struct net_device și primește<br>
ca parametru size-ul unei structuri definite de tine (acel struct<br>
nic). În struct nic-ul tău poți să ții ce date ai nevoie (printre care<br>
și un pointer la struct pci_dev). struct nic reprezintă datele private<br>
ale struct net_device (vezi netdev_priv [6]).<br>
<span class="gmail-"><br>
> Thanks :)<br>
><br>
> [0] - <a href="https://www.fsl.cs.sunysb.edu/kernel-api/re640.html" rel="noreferrer" target="_blank">https://www.fsl.cs.sunysb.edu/<wbr>kernel-api/re640.html</a><br>
> [1] -<br>
> <a href="http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/e100.c#L569" rel="noreferrer" target="_blank">http://lxr.free-electrons.com/<wbr>source/drivers/net/ethernet/<wbr>intel/e100.c#L569</a><br>
> [2] -<br>
> <a href="http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/e100.c#L2858" rel="noreferrer" target="_blank">http://lxr.free-electrons.com/<wbr>source/drivers/net/ethernet/<wbr>intel/e100.c#L2858</a><br>
> --<br>
<br>
</span>[3] <a href="https://ocw.cs.pub.ro/courses/so2/resurse/masini-virtuale" rel="noreferrer" target="_blank">https://ocw.cs.pub.ro/courses/<wbr>so2/resurse/masini-virtuale</a><br>
[4] <a href="http://lxr.free-electrons.com/source/include/linux/etherdevice.h#L54" rel="noreferrer" target="_blank">http://lxr.free-electrons.com/<wbr>source/include/linux/<wbr>etherdevice.h#L54</a><br>
[5] <a href="http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/e100.c#L2843" rel="noreferrer" target="_blank">http://lxr.free-electrons.com/<wbr>source/drivers/net/ethernet/<wbr>intel/e100.c#L2843</a><br>
[6] <a href="http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/e100.c#L2855" rel="noreferrer" target="_blank">http://lxr.free-electrons.com/<wbr>source/drivers/net/ethernet/<wbr>intel/e100.c#L2855</a><br>
<span class="gmail-HOEnZb"><font color="#888888"><br>
Adrian<br>
</font></span></blockquote></div><br><br>Mersi frumos, o sa incerc sa folosesc <span style="font-size:12.8px">alloc_etherdev atunci. Sa stii ca folosesc kernelul vostru pentru compilare. Tot nu vrea. :) Anyways, nu mai face sens in cazul in care folosesc </span><span style="font-size:12.8px">alloc_etherdev. </span><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Oprea Matei<br><div><br></div></div></div>
</div></div>