[so2] [Ixia Challenge] Frame dropped by upper layers
Flavius Anton
f.v.anton at gmail.com
Mon Mar 23 17:10:36 EET 2015
On 22 Mar 2015, at 18:27, Flavius Anton <f.v.anton at gmail.com> wrote:
>
> On 22 Mar 2015, at 15:58, Daniel Baluta <daniel.baluta at gmail.com> wrote:
>>
>> 2015-03-22 3:39 GMT+02:00 Flavius Anton via so2 <so2 at cursuri.cs.pub.ro>:
>>> Salut,
>>>
>>> M-am cam blocat la partea de receive, în sensul că aparent pachetul meu
>>> este aruncat de nivelurile superioare. În handlerul de întrerupere ajung
>>> până la urmă la un pointer către o structură sk_buff unde sunt datele,
>>> le printez pt logging și sunt valide și corecte (chiar și dimensiunea),
>>> după care le pasez mai sus. Dacă rulez în paralel un tcpdump, văd un
>>> pachet plin de 0-uri și cu un size de 0xfff0. Frame-ul ar trebui să fie
>>> un simplu ARP Request, sunt sigur că datele sunt acolo în momentul în
>>> care îl pasez mai sus (printez de la skb->data încolo vreo 64 de octeți).
>>>
>>> De asemenea, nici nu scriu peste, pentru că în întrerupere clonez
>>> bufferul.
>>>
>>> S-a mai întâlnit cineva cu problema asta? Vreo idee?
>>
>> Salut,
>>
>> Ce pui in skb->protocol?
>
> new_skb->protocol = eth_type_trans(skb, netdev);
>
> unde new_skb e sk_bufful pe care il dau mai sus cu netif_rx(),
> iar skb este sk_bufful in care scrie placa.
Ai avut intuiție bună, Daniel. De la protocol era, bușeam tot pe acolo cu
cele două skb-uri. Apelul corect trebuia făcut pe același buffer.
new_skb->protocol = eth_type_trans(new_skb, netdev);
—
Flavius
More information about the so2
mailing list