if_start() and sending packets problem

Max Laier max at love2party.net
Sat Feb 16 14:00:29 UTC 2008


Am Sa, 16.02.2008, 09:11, schrieb Tofig Suleymanov:
> Hello hackers,
>
> I will be grateful if someone could point me to the right direction
> regarding the question below.
>
> My device driver is getting incoming packets fine, but for some reason I
> am not able to send a single  packet. Here is the source code:
>
> http://www.freebsd.az/if_ib.c
>
> I've added several debug messages to the source and here is the output:
>
> (bringing interface up and assigning the ip/netmask combination)
>
> ifconfig ib0 192.168.0.6 netmask 255.255.255.0 up
>
> (At this moment I get this in my /var/log/messages. It seems to be a
> gratuitous arp who-has packet )
>
> Feb  7 19:14:32 schizo kernel: ib_init entered
> Feb  7 19:14:32 schizo kernel: ib_start entered
> Feb  7 19:14:32 schizo kernel: ib_encap entered
> Feb  7 19:14:32 schizo kernel: DHOST ff ff ff ff ff ff
> Feb  7 19:14:32 schizo kernel: SHOST  0 c0 ee 22  3 14
> Feb  7 19:14:32 schizo kernel: txeof entered
> Feb  7 19:14:32 schizo kernel: txeof exiting
>
> (now I try pinging, but no joy . I've added extra debug messages inside
> ping.c)
>
> schizo# ping 192.168.0.1
> PING 192.168.0.1 (192.168.0.1): 56 data bytes
> packets sent: -1
> ping: sendto: Invalid argument
> packets sent: -1
> ping: sendto: Invalid argument
> packets sent: -1
> ping: sendto: Invalid argument
> ^C
> --- 192.168.0.1 ping statistics ---
> 3 packets transmitted, 0 packets received, 100% packet loss
>
>
> I have also tried to add debug messages to sys/net/if.c and
> sys/net/netisr.c and it seems that the kernel doesn't even try to run my
> ib_start() function.
>
> Doing tcpdump on the interface and pinging does not show any packets
> flowing. Please note that tcpdump shows the arp who-has request right
> after I assign the ip address.
>
> ifconfig ib0 gives the following:
> ib0: flags=1008c3<UP,BROADCAST,RUNNING,NOARP,SIMPLEX,NEEDSGIANT> mtu 1500

Why do you set NOARP?  It seems that your ping can't figure out the ARP
address of 192.168.0.1 and hence returns early.  Either install a static
arp entry for 192.168.0.1 or lose the NOARP.

>        inet 192.168.0.5 netmask 0xffffff00 broadcast 192.168.0.255
>        ether 00:c0:ee:22:03:14
>        media: Ethernet 10baseT/UTP
>        status: active
>
> netstat -in gives the following output:
> Name    Mtu Network       Address              Ipkts Ierrs    Opkts Oerrs
> Coll
> bge0*  1500 <Link#1>      00:16:41:52:fb:1e        0     0        0    0
>   0
> iwi0   1500 <Link#2>      00:13:ce:cc:b8:10     3065     0     2856    0
>   0
> iwi0   1500 192.168.1     192.168.1.5           3034     -     2825    -
>   -
> lo0   16384 <Link#3>                            8        0       8     0
>   0
> lo0   16384 127              127.0.0.1          8        -       8     -
>   -
> ib0    1500 <Link#4>      00:c0:ee:22:03:14     4        0       2     0
>   0
> ib0    1500 192.168.0     192.168.0.5           0        -       3     -
>   -
>
> Any ideas are highly appreciated.

-- 
/"\  Best regards,                      | mlaier at freebsd.org
\ /  Max Laier                          | ICQ #67774661
 X   http://pf4freebsd.love2party.net/  | mlaier at EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News


More information about the freebsd-hackers mailing list