#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
 #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 */
     return;
   }
 #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 */
 }