[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