How to interpret raw packet data from NIC
[email protected] Thu, 23 Dec 2004 21:47:34 -0500
| Newsgroups | gmane.linux.drivers.vortex.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I am tinkering with the 3com905TXB (359x.c) driver and NIC card.
I am trying to extract the data which has been just uploaded (by DMA bus master)
by the NIC, I am picking up the data from the interrupt service routine, instead
of passing it up using netif_rx() call.
I am able to pick up the data all right, but but not able to make head or tail
out of it.
I want to understand this packets contents, but till now I have not been able to
match anything with the standard IP header.
my final objective is to write a minimal UDP/IP stack from scratch. si I wanted
this data for testing purpose.
Can any one give pointer what am I missing ? Is it a big and little endian
conversion problem ?
I am using PII intel, Redhat Linux, and following is the code segment that I
used within the boomerang_rx(). I am using flat memory area, instead of sk_buff
to receive the data from NIC. rx_skbuff[entry] is just a char pointer to that
memory area.
i tried to read the memory using a striding int pointer, then de-referenced that
int pointer and printed the content in hex in the log with printk, i used both
original version and cpu native version. both appear same.
***
memcpy(skb_put(skb, pkt_len), vp->rx_skbuff[entry],
pkt_len);
int_ptr= (int *)vp->rx_skbuff[entry];
printk("<1>mapdevice:ISR:At %d : %d:", entry, pkt_len);
for (j=0;j<80/sizeof(int);j++) {printk("<1>%04x ",
le32_to_cpu(*int_ptr));int_ptr++;}
printk("<1>\n");
int_ptr= (int *)vp->rx_skbuff[entry];
printk("<1>mapdevice:ISR:");
for (j=0;j<80/sizeof(int);j++) {printk("<1>%04x ", *int_ptr);int_ptr++;}
printk("<1>\n");
thanks for looking into my problem.
regards
amitava
_______________________________________________
vortex mailing list
[email protected]
http://www.scyld.com/mailman/listinfo/vortex