As mentioned, upstream commit 248de22e638f10bd5bfc7624a357f940f66ba137 ("i40e/i40evf: Account for frags split over multiple descriptors in check linearize") appears to finally fix this. This commit is already included in bionic, but is required in artful and earlier.
In xenial, the commit 5c4654daf2e2f25dfbd7fa572c59937ea6d4198b ("i40e/i40evf: Allow up to 12K bytes of data per Tx descriptor instead of 8K") is also required.
As mentioned, upstream commit 248de22e638f10b d5bfc7624a357f9 40f66ba137 ("i40e/i40evf: Account for frags split over multiple descriptors in check linearize") appears to finally fix this. This commit is already included in bionic, but is required in artful and earlier.
In xenial, the commit 5c4654daf2e2f25 dfbd7fa572c5993 7ea6d4198b ("i40e/i40evf: Allow up to 12K bytes of data per Tx descriptor instead of 8K") is also required.