This is a repeat of: https://android-review.git.corp.google.com/c/platform/packages/modules/Connectivity/+/2266447 which was reverted in: https://android-review.git.corp.google.com/c/platform/packages/modules/Connectivity/+/2372509 This time with kver >= 4.14 protections of the bpf_skb_adjust_room() bpf helper which isn't present on 4.9 T devices. Original change comments: Tested manually on a flame device connected to an ipv6-only wifi network (GoogleGuest). On server: nc -4 -l -u -p 443 On client (phone): adb shell nc -4 -u my.server 443 On client (phone): adb shell tcpdump -l -ee -vv -s 1600 -i v4-wlan0 On client send something to server "Hi." On server send something to client "Hey!" You should see normal unfragmented IP packets. Then on server send something really long (I used 57 copies of the 26 letter English alphabet). This should be long enough that fragmentation is required. You should see tcpdump show 2 ipv4 fragments, and netcat show the packet being delivered correctly. (and previous versions of the code were buggy and were resulting in corrupt packets and things not working) Test: TreeHugger Signed-off-by: Maciej Żenczykowski <maze@google.com> Change-Id: I6758e63d8133215edd26b4cd2d73a5b5f261ffd1