On Wednesday, May 01, 2013 1:53 PM Daniele Forsi wrote:
> 2013/4/30 Andrzej Pietrasiewicz:
> 
> > As I already wrote I am now stuck with sending correct data, so that
> when
> > I sendto() from host I can recvfrom() on device (or vice versa).
> 
> payload data doesn't matter so you don't need my dumps, maybe you are
> using the same address on both sides of the link or you are sending to
> the wrong address or the route isn't set up correctly
> 

This is how I set up the host and the device, using the tools from
Rémi (http://gitorious.org/meego-cellular/phonet-utils/trees/master):

Device:
$ ./phonet -a 0x6c -i upnlink0
$ ./phonet -l -i upnlink0
  phonet addr: 6c
$ ./pnroute add 0x10 upnlink0
$ ./pnroute
 10 upnlink0
$ ifconfig upnlink0 up

Host:
$ ./phonet -a 0x10 -i usbpn0
$ ./phonet -l -i usbpn0
  phonet addr: 10
$ ./pnroute add 0x6c usbpn0
$ ./pnroute add 0x10 usbpn0
$ ./pnroute
 10 usbpn0
 6C usbpn0
$ ifconfig usbpn0 up

I attach the test program I use.
So far I have learnt that if I do

$ ./pnxmit -a 0x10 -s 0x6c

on the host, I can see that on the device the pn_rx_complete
(drivers/usb/gadget/f_phonet.c) is called, then netif_rx
(net/core/dev.c), then packet_type->func [phonet_rcv]
(net/phonet/af_phonet.c). The phonet_rcv fails at

if ((len > skb->len) || pskb_trim(skb, len))
                goto out;

with len=61182 and skb->len=10.

The len looks suspicious, but I don't know why it is set to
such a large value.
In consequence NET_RX_DROP is returned from phonet_rcv,
so I assume no client will ever be able to recvfrom a socket.

Any ideas?

Andrzej

Attachment: pnxmit.c
Description: Binary data

Reply via email to