No I don't have any of the higher layer interfaces enabled. I think it uses up a lot of memory that I need for other purposes. So it may work or may not work
My interface to LWIP is very basic as to keep overhead to an absolute minimum. Data packets of up to 4k can be sent either using udp or tcp. Using udp I do the fragmention on the application layer (IP fragmentation turned off in LWIP), optionally terminating a data packet with a zero-length datagram (yes, that's allowed and works). For tcp I send whatever amount of data can be sent immediately and the rest of the packet gets sent on a "data sent" notification, just as long as it takes to send the whole data packet. After that, the data packet is unlocked for re-use.
Reception of data likewise, data is collected in small enough chunks and when the end marker has been received, processed as a whole.
That way I don't need fragmentation, which is not really possible on devices low on memory. Strictly the process on tcp is not called fragmentation but segmentation, but it's almost the same and the same objections apply.
The good news is the socket api does not need to have any Espressif-specific code, so I guess it will just work.
BTW I think the socket api is great for desktops and servers, I've been using it since 1988 (...) but it's far too heavy for us.