e1000: Fix off by one ipcse

This has been off by one in the FreeBSD drivers as far back as I've
looked.  Emperically HW and SW emulations I have available don't seem to
mind.  Noticed while debugging other issues.

MFC after:	3 days
This commit is contained in:
Kevin Bowling 2023-08-15 14:37:43 -07:00
parent 43b41bee90
commit eac761e967

View File

@ -290,7 +290,7 @@ em_transmit_checksum_setup(struct e1000_softc *sc, if_pkt_info_t pi,
offsetof(struct ip, ip_sum);
if (csum_flags & CSUM_IP) {
*txd_upper |= E1000_TXD_POPTS_IXSM << 8;
TXD->lower_setup.ip_fields.ipcse = htole16(hdr_len);
TXD->lower_setup.ip_fields.ipcse = htole16(hdr_len - 1);
cmd |= E1000_TXD_CMD_IP;
} else if (csum_flags & (CSUM_IP6_TCP | CSUM_IP6_UDP))
TXD->lower_setup.ip_fields.ipcse = htole16(0);