To me this seems like you send every single pbuf as one ethernet frame. LwIP can combine multiple pbufs to one ethernet frame, which is done for many tcp packets: the first pbuf contains all the headers, the second pbuf contains the 'user data' (in your case the HTML page). Your driver should send pbuf queues in one frame; the end of a pbuf queue can be determined like shown in pbuf.c/.h: the last pbuf of a frame has p->len == p->tot_len (NOT p->next == NULL, as there can also be multiple frames in a pbuf queue!)
Hope that helps. Simon. -------- Original-Nachricht -------- > Datum: Mon, 25 Aug 2008 19:11:16 +0800 (CST) > Von: yihect <[EMAIL PROTECTED]> > An: lwip_users <[email protected]> > Betreff: [lwip-users] help -- the http reply is divided into 2 frames. > > > > Hi, all: > I'm porting lwIP 1.3 on uCOS-II. Now use the httpserver attached in > contrib dir for testing the port. > > Benefitting from Jonathan Larmour's help, now the http request from pc > are sent in a single ethernet frame. but when using netconn_write() api to > send http reply head info, the lwIP stack will divide the head info into 2 > frames. > The first frame seems like a full ether-ip-tcp-http frame, but the second > one seems only include the head info, no ethernet frame header, no ip > header, and no tcp header. You can see frame 8 and frame 9 from the following > file captured from pc side. > > There is a checksum error too, I don't know that's why? It's strange to > see the 6 mysterious bytes at the end of the first frame. I think that's not > correct. I think the head info should be included in one single frame when > sending. Is it true? Please tell me if i'm wrong. > > Frankly speaking, I'm a fully newbie to the lwIP stack, so, any suggestion > will be appreciated greatlly. > > captured file fragement: > ////////////////////////////////////////////////////////////////////////// > //frame 8 > No. Time Source Destination Protocol > Info > 8 1250.620706 192.168.10.2 192.168.10.123 HTTP > Continuation or non-HTTP traffic > Frame 8 (60 bytes on wire, 60 bytes captured) > Ethernet II, Src: 00:53:45:00:00:00 (00:53:45:00:00:00), Dst: > RapidCit_06:15:90 (00:e0:16:06:15:90) > Internet Protocol, Src: 192.168.10.2 (192.168.10.2), Dst: 192.168.10.123 > (192.168.10.123) > Transmission Control Protocol, Src Port: http (80), Dst Port: danf-ak2 > (1041), Seq: 1, Ack: 471, Len: 6 > Source port: http (80) > Destination port: danf-ak2 (1041) > Sequence number: 1 (relative sequence number) > [Next sequence number: 7 (relative sequence number)] > Acknowledgement number: 471 (relative ack number) > Header length: 20 bytes > Flags: 0x18 (PSH, ACK) > Window size: 2048 > Checksum: 0xda82 [incorrect, should be 0x4328 (maybe caused by "TCP > checksum offload"?)] > Hypertext Transfer Protocol > Data (6 bytes) > 0000 00 e0 16 06 15 90 00 53 45 00 00 00 08 00 45 00 .......SE.....E. > 0010 00 54 00 02 00 00 ff 06 25 d4 c0 a8 0a 02 c0 a8 .T......%....... > 0020 0a 7b 00 50 04 11 00 00 19 6f f2 1e 1e e0 50 18 .{.P.....o....P. > 0030 08 00 da 82 00 00 a0 01 00 00 00 00 ............ > > /////////////////////////////////////////////////////// > //frame 9 > No. Time Source Destination Protocol > Info > 9 1250.620758 2e:31:20:32:30:30 48:54:54:50:2f:31 0x204f > Ethernet II > Frame 9 (60 bytes on wire, 60 bytes captured) > Ethernet II, Src: 2e:31:20:32:30:30 (2e:31:20:32:30:30), Dst: > 48:54:54:50:2f:31 (48:54:54:50:2f:31) > Data (46 bytes) > 0000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d HTTP/1.1 200 OK. > 0010 0a 43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 74 .Content-type: t > 0020 65 78 74 2f 68 74 6d 6c 0d 0a 0d 0a 00 00 00 00 ext/html........ > 0030 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e <html><head> > > > -- GMX Kostenlose Spiele: Einfach online spielen und Spaß haben mit Pastry Passion! http://games.entertainment.gmx.net/de/entertainment/games/free/puzzle/6169196 _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
