It looks like there is an issue with the byte alignment.  I found this
post:

http://www.mail-archive.com/linux-omap@vger.kernel.org/msg20797.html

and based on that made the following changes to drivers/usb/gadget/
u_ether.c:

    257,258c257
    <
    <   //skb_reserve(skb, NET_IP_ALIGN);
    ---
    >   skb_reserve(skb, NET_IP_ALIGN);
    513d511
    <         int                     i=0;
    599,606d596
    <
    < if ((int)skb->data & 0x2) {
    <   skb_push(skb, 2);
    <   for (i=0; i<length; i++) {
    <     skb->data[i] = skb->data[i+2];
    <   }
    < }
    <

I can now ping in both directions over the USB.  If anyone knows of a
better way to address this, please let me know otherwise I will go
with this.



On Mar 14, 8:28 am, bobbark <hey.its.a.g...@gmail.com> wrote:
> One more update..
>
> After booting everything up this morning, I did not create the fake
> ARP entries and ran the pings again.  According to Wireshark there was
> an ARP message coming from the host and an unknown message coming from
> the Droid, but they were identical lengths.  After examining the
> contents of the messages, the Droid was sending what appeared to be a
> valid ARP message as well but it was shifted by 2 bytes - two extra
> bytes at the beginning and the last two chopped off.
>
> On Mar 13, 3:00 pm, bobbark <hey.its.a.g...@gmail.com> wrote:
>
>
>
> > Just a little more data...  after using arp on the host side and ip on
> > the android side to manually add entries, the Destination Host
> > Unreachable errors went away but still no ping response.  I ran
> > Wireshark on the host and the messages from the device are not
> > correct.  The displayed mac addresses do not look right and the
> > protocol is unknown so just displayed as 0x7aab.  After looking at the
> > actual data in the message it appears that there are two zero bytes
> > prepended to the message.  If those were removed it looks like
> > everything would line up and work.  Has anyone ever seen this or know
> > where in the code this can be fixed ?
>
> > On Mar 13, 10:27 am, bobbark <hey.its.a.g...@gmail.com> wrote:
>
> > > I am trying to get Ethernet over USB working for my Nexus S. I am
> > > running Ice Cream Sandwich v4.0.3 and have rebuilt the kernel with USB
> > > Gadget support turned on. When I connect the phone to my Linux box and
> > > run ifconfig -a, usb0 shows up both on the phone and the Linux box. I
> > > run ifconfig to set both sides up and everything looks correct but I
> > > cannot ping from either side:
>
> > > PING 192.168.22.2 (192.168.22.2) 56(84) bytes of data.
> > > From 192.168.22.1 icmp_seq=1 Destination Host Unreachable
> > > From 192.168.22.1 icmp_seq=2 Destination Host Unreachable
>
> > > I also have a N900 running Maemo Linux that does allow Ethernet over
> > > USB. I compared output of ethtool, ifconfig, route, and arp between
> > > the N900 and the Nexus S and all are very similar except the arp
> > > output. It shows (incomplete) for the HWaddress for the Android
> > > connection:
>
> > > Address                  HWtype  HWaddress           Flags
> > > Mask            Iface
> > > 10.1.3.1                 ether   00:1B:17:05:30:13
> > > C                     eth0
> > > 192.168.22.2
> > > (incomplete)                              usb0
>
> > > "ip neigh show" results in:
>
> > > 10.1.3.99 dev eth0 lladdr b8:ac:6f:30:6f:ba REACHABLE
> > > 192.168.22.2 dev usb0  INCOMPLETE
>
> > > on the first call and:
>
> > > 10.1.3.99 dev eth0 lladdr b8:ac:6f:30:6f:ba REACHABLE
> > > 192.168.22.2 dev usb0  FAILED
>
> > > on the second call.
>
> > > The only other clue I have is that ifconfig shows on the Linux side:
>
> > > usb0      Link encap:Ethernet  HWaddr 66:E4:64:10:D1:A9
> > >       inet addr:192.168.22.1  Bcast:192.168.22.255  Mask:255.255.255.0
> > >       inet6 addr: fe80::64e4:64ff:fe10:d1a9/64 Scope:Link
> > >       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> > >       RX packets:0 errors:0 dropped:0 overruns:0 frame:0
> > >       TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
> > >       collisions:0 txqueuelen:1000
> > >       RX bytes:0 (0.0 b)  TX bytes:9039 (8.8 KiB)
> > > and on the Android side:
>
> > > usb0      Link encap:Ethernet  HWaddr 7A:78:28:52:9C:A0
> > >       inet addr:192.168.22.2 Bcast:192.168.22.255 Mask:255.255.255.0
> > >       inet6 addr: fe80::7878:28ff:fe52:9ca0/64 Scope:Link
> > >       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
> > >       RX packets:202 errors:0 dropped:202 overruns:0 frame:0
> > >       TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
> > >       collisions:0 txqueuelen:1000
> > >       RX bytes:47294 (46.1 KiB)  TX bytes:1728 (1.6 KiB)
> > > Notice the dropped packets on the Android side.
>
> > > It seems like I am almost there.. any suggestions?- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

-- 
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel

Reply via email to