Another colleague has pointed out
if_fxp in FreeBSD 7/8 adds hardware checksum support for the 82559, but not on the pseudo header. This triggers a bug in ipfilter (where it incorrectly calculates the pseudo header checksum by itself), so the patch from the PR should actually work.
The reason why it worked in 6.4 is because 6.4 didn't support hardware checksumming on 82559 at all.
With the patch applied from the PR, it now works as expected (freebsd 8.2 with ipfilter 1.4.34)
Can this patch be added to ipfilter upstream please ?
Thanks
Andrew