zephyriot / zep-jira14

0 stars 0 forks source link

BSD Sockets API: Offloading support #2106

Open nashif opened 7 years ago

nashif commented 7 years ago

Reported by Paul Sokolovsky:

Users of devices which provide socket and TCP/IP offload engines would benefit in memory and power efficiency by enabling full offload of the Zephyr BSD socket APIs to a dedicated co-processor.

The TI CC3220SF SoC, part of the CC32XX SimpleLink SoC family of WiFi enabled devices, will be used as the initial socket offload implementation.

(Imported from Jira ZEP-2271)

nashif commented 7 years ago

by Paul Sokolovsky:

Gil: We missed to have this explicitly captured, d'oh. This is yours otherwise, please edit as needed and set priority/fix version. Thanks.

nashif commented 7 years ago

by Gilbert Pitney:

The Zephyr IP stack designers placed a CONFIG_NET_OFFLOAD option in Zephyr, with the intention of supporting IP offload devices.

See slide 7 in this slideset: https://www.slideshare.net/linaroorg/bud17112-porting-the-ti-simplelink-cc32xx-wifi-stack-to-the-zephyr-iot-os

However, since then, there has been progress on adding a BSD socket layer to Zephyr. See: GH-1769

The "plan of record" was to offload via the CONFIG_NET_OFFLOAD option, but that would incur overhead mapping BSD socket APIs to Zephyr net_context APIs and then to the engine's offload socket APIs.

To enable full offload, code space and energy savings entitlement to the network co-processor, the best solution would be to offload directly from the BSD API socket layer, similar to what is done in MyNewt. See: https://github.com/apache/incubator-mynewt-core/blob/develop/net/ip/mn_socket/include/mn_socket/mn_socket_ops.h

The disadvantage is that would bypass any future IP routing logic in Zephyr (but not a big issue for IoT client nodes only connected via WiFi). The advantage will be in code and network data buffer savings (those will be offloaded to the co-processor) and power savings (the MCU can be powered down while the co-processor is maintaining open TCP sessions).

nashif commented 7 years ago

by Mark Linkmeyer:

Hi Gilbert Pitney , what's the status of this? Is it to be done in time for 1.9? Thx.

nashif commented 7 years ago

by Gilbert Pitney:

I think this will need to be pushed to 1.10, for a few reasons:

So, I think it's logical to move to 1.10.

nashif commented 7 years ago

by Gilbert Pitney:

updated to 1.10, and placed In Progress.