X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/3b6987bca3ef746fd9a5d4baec6d40b65c9b4101..77a9df36a77d2523dd2bc24fa17f9f04c6c175c5:/Projects/Webserver/Lib/uip/uip-split.c?ds=inline diff --git a/Projects/Webserver/Lib/uip/uip-split.c b/Projects/Webserver/Lib/uip/uip-split.c index 9ad6b484c..5222a05b6 100644 --- a/Projects/Webserver/Lib/uip/uip-split.c +++ b/Projects/Webserver/Lib/uip/uip-split.c @@ -47,7 +47,7 @@ uip_split_output(void) /* We only try to split maximum sized TCP segments. */ if(BUF->proto == UIP_PROTO_TCP && uip_len == UIP_BUFSIZE) { - + tcplen = uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN; /* Split the segment in two. If the original packet length was odd, we make the second packet one byte larger. */ @@ -68,7 +68,7 @@ uip_split_output(void) BUF->len[0] = (uip_len - UIP_LLH_LEN) >> 8; BUF->len[1] = (uip_len - UIP_LLH_LEN) & 0xff; #endif /* UIP_CONF_IPV6 */ - + /* Recalculate the TCP checksum. */ BUF->tcpchksum = 0; BUF->tcpchksum = ~(uip_tcpchksum()); @@ -78,19 +78,21 @@ uip_split_output(void) BUF->ipchksum = 0; BUF->ipchksum = ~(uip_ipchksum()); #endif /* UIP_CONF_IPV6 */ - + /* Transmit the first packet. */ - /* uip_fw_output();*/ #if UIP_CONF_IPV6 tcpip_ipv6_output(); #else - RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); + if (USB_CurrentMode == USB_MODE_Device) + RNDIS_Device_SendPacket(&Ethernet_RNDIS_Interface_Device, uip_buf, uip_len); + else + RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface_Host, uip_buf, uip_len); #endif /* UIP_CONF_IPV6 */ - + /* Now, create the second packet. To do this, it is not enough to just alter the length field, but we must also update the TCP sequence number and point the uip_appdata to a new place in - memory. This place is detemined by the length of the first + memory. This place is determined by the length of the first packet (len1). */ uip_len = len2 + UIP_TCPIP_HLEN + UIP_LLH_LEN; #if UIP_CONF_IPV6 @@ -102,8 +104,7 @@ uip_split_output(void) BUF->len[0] = (uip_len - UIP_LLH_LEN) >> 8; BUF->len[1] = (uip_len - UIP_LLH_LEN) & 0xff; #endif /* UIP_CONF_IPV6 */ - - /* uip_appdata += len1;*/ + memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2); uip_add32(BUF->seqno, len1); @@ -111,7 +112,7 @@ uip_split_output(void) BUF->seqno[1] = uip_acc32[1]; BUF->seqno[2] = uip_acc32[2]; BUF->seqno[3] = uip_acc32[3]; - + /* Recalculate the TCP checksum. */ BUF->tcpchksum = 0; BUF->tcpchksum = ~(uip_tcpchksum()); @@ -123,12 +124,13 @@ uip_split_output(void) #endif /* UIP_CONF_IPV6 */ /* Transmit the second packet. */ - /* uip_fw_output();*/ #if UIP_CONF_IPV6 tcpip_ipv6_output(); #else - RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); - //tcpip_output(); + if (USB_CurrentMode == USB_MODE_Device) + RNDIS_Device_SendPacket(&Ethernet_RNDIS_Interface_Device, uip_buf, uip_len); + else + RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface_Host, uip_buf, uip_len); #endif /* UIP_CONF_IPV6 */ return; } @@ -138,8 +140,12 @@ uip_split_output(void) #if UIP_CONF_IPV6 tcpip_ipv6_output(); #else - RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); + if (USB_CurrentMode == USB_MODE_Device) + RNDIS_Device_SendPacket(&Ethernet_RNDIS_Interface_Device, uip_buf, uip_len); + else + RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface_Host, uip_buf, uip_len); #endif /* UIP_CONF_IPV6 */ } /*-----------------------------------------------------------------------------*/ +