ping failed but tcpdump captured echo request/reply packets

I'm configuring a network card on freebsd 7.0 which is
intalled on a laptop(Tinkpad T61) and encounter a problem.

My card is em0, media is 100baseTX(full-duplex). I
use the following command to assign an ipv4 adrress
# ifconfig em0

After ifconfig, I ping the gateway, but ping
replied with no answers. I use tcpdump to capture the
packets, and do see the gateway replies.
The route table is also right.
Destination Gateway interface link#1 em0

Why the ping failed? Has anyone encoutered this problem
before and could you share your solution with me?

route add default gw

to make sure.

The output of [font="Lucida Console"]netstat -rn[/font] should really show [font="Lucida Console"]default[/font] on the first line.
Thanks. This problem is due to the gateway.

When the gateway send ICMP echo-replies,
it use an old MAC address. The tcpdump can capture the ICMP echo request/reply packets because the NIC has been put into promiscuous mode. However, the NIC now has a new MAC address, and it will not deliver
the packets with the old MAC address to the IP layer. The consequence is
that: ping failed but tcpdump captured echo request/reply packets.

I'm ashamed that when capturing packets I usually don't turn on the -e
option. After pondering for a long while, I guessed out the above cause.
I'm so sorry for wasting your valuable time.