Hi,
with a custom hardware, I'm using a NRF9160 with a ESP8266 chip over uart with following prj.conf and board overlay:
# Network CONFIG_NETWORKING=y CONFIG_NET_SOCKETS=y CONFIG_NET_SOCKETS_POSIX_NAMES=y CONFIG_NET_DHCPV4=y CONFIG_NET_TX_STACK_SIZE=2048 CONFIG_NET_RX_STACK_SIZE=2048 CONFIG_NET_IF_MAX_IPV4_COUNT=2 CONFIG_NET_IPV4=y CONFIG_NET_IPV6=n CONFIG_NET_UDP=n CONFIG_NET_TCP=y CONFIG_NET_LOG=y CONFIG_NET_SHELL=y CONFIG_TEST_RANDOM_GENERATOR=y # WIFI CONFIG_WIFI=y CONFIG_WIFI_ESP_AT=y CONFIG_WIFI_OFFLOAD=y CONFIG_INIT_STACKS=y CONFIG_HEAP_MEM_POOL_SIZE=16384 CONFIG_NET_SOCKETS_OFFLOAD=y CONFIG_NET_SOCKETS_NET_MGMT=y CONFIG_NET_SOCKETPAIR=y CONFIG_NET_IPV4=y CONFIG_NET_DEFAULT_IF_OFFLOAD=n CONFIG_NET_OFFLOAD=y
&uart1 {
status = "ok";
current-speed = <115200>;
tx-pin = <23>;
rx-pin = <22>;
rts-pin = <0xFFFFFFFF>;
cts-pin = <0xFFFFFFFF>;
/* disable by setting them to 0xffffffff */
esp8266 {
status = "ok";
compatible = "espressif,esp-at";
label = "esp8266";
};
};
I was trying to open a socket (that uses the Wifi chip) and connect to it:
int sock = 0;
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock < 0) {
printk("Failed to create socket %d\n", errno);
return -1;
}
ret = connect(sock, (struct sockaddr *) &addr, addr_len);
if (ret < 0) {
printk("Cannot connect to %s remote (%d)",
family == AF_INET ? "IPv4" : "IPv6",
-errno);
ret = -errno;
}
I tried to debug it, and I noticed that the wrong network interface is chosen, with the consequence that the offload functions are not called. I guess that it's a configuration issue, but until now no luck to find it...