[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c6ed1ac51003080104l4d67d72aybd3909ac12b54e3b@mail.gmail.com>
Date: Mon, 8 Mar 2010 17:04:09 +0800
From: figo zhang <figo1802@...il.com>
To: Yegor Yefremov <yegorslists@...glemail.com>
Cc: Dick Hollenbeck <dick@...tplc.com>, netdev@...r.kernel.org,
zealcook@...il.com
Subject: Re: KS8695: possible NAPI issue
2010/3/5 Yegor Yefremov <yegorslists@...glemail.com>:
>>> My tests look like following:
>>>
>>> 1. system start
>>> 2. ping one host: O.K.
>>> 3. nc -l -p 5000 > /var/test (about 1Mb): O.K.
>>> 4. ping the same host: failed
>> 1. type "arp" command, see the arp is exit or expire?
>
> debian:~# nc -l -p 5000 > /var/zImage
>
> debian:~# ping -c 1 192.168.1.38
>
> PING 192.168.1.38 (192.168.1.38) 56(84) bytes of data.
>
> From 192.168.1.66 icmp_seq=1 Destination Host Unreachable
>
>
>
> --- 192.168.1.38 ping statistics ---
>
> 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
>
>
>
> debian:~# arp
>
> Address HWtype HWaddress Flags Mask Iface
> 192.168.1.38 (incomplete) eth0
>
> 192.168.1.36 ether 00:10:18:39:19:aa C eth0
>
>
>> 2. at this point, see is it still have RX interrpt and receive packet in
>> ks8695_rx()? (in some watchpoint add printk).
>
> I've inserted some printks and I can see that interrupts are coming
> and the received count will be increased. I can also see my system
> sending arp requests. Even this ping request is visible in wireshark
> and its reply, but the ping utility sees nothing of it.
>
when you netcat finished, it cannot ping, right? at this point, would
you like to add some printk at RX and TX?
i want to see the target board have send arp packet, or have receive
arp reply packet.
you can add such funtion to print the packet buffer:
void print_mem(unsigned char *p,u32 len, u8 * s)
{
u32 i;
printk(" %s ram addr = %x , data len = %x",s, p, len);
for (i=0;i<len;i++) {
if (0==i%16) {
printk("\n 0x%02x : ",(p+i));
}
printk("%02x",*(u8 *)(p+i));
printk(" ");
}
printk("\n\n");
}
for TX: ks8695_start_xmit(struct sk_buff *skb, struct net_device *ndev)
=>
ksp->tx_ring[buff_n].status =
cpu_to_le32(TDES_IC | TDES_FS | TDES_LS |
(skb->len & TDES_TBS));
print_mem(skb->data, skb->len, "tx");
wmb();
for RX: static int ks8695_rx(struct ks8695_priv *ksp, int budget)
=>
/* Retrieve the sk_buff */
skb = ksp->rx_buffers[buff_n].skb;
print_mem(skb->data, skb->len, "rx");
/* Clear it from the ring */
ksp->rx_buffers[buff_n].skb = NULL;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists