diff options
author | jfv <jfv@FreeBSD.org> | 2010-12-04 01:43:38 +0000 |
---|---|---|
committer | jfv <jfv@FreeBSD.org> | 2010-12-04 01:43:38 +0000 |
commit | 0aa625fd3eabc94d04a6f62212d07b95cbbb1fc4 (patch) | |
tree | 71cc74995f6d17f57c1007f91d66eec297b7a620 | |
parent | c042df181c1d57a6c9892c4f6724b9cd21518aac (diff) | |
download | FreeBSD-src-0aa625fd3eabc94d04a6f62212d07b95cbbb1fc4.zip FreeBSD-src-0aa625fd3eabc94d04a6f62212d07b95cbbb1fc4.tar.gz |
This small little change is a bug that drove me nuts
finding. The test to compare the mbuf m_len against
a fixed value and then returning needs to be removed.
When using VLANS and doing HW_TAGGING, and IPV6, the
ICMP6 packets actually fail this condition, the constant
assumes that the tag is IN the frame, and its not, so
the length is actually tiny. Furthermore, I'm not sure
what the point was to just return??
MFC after: 3 days
-rw-r--r-- | sys/dev/ixgbe/ixgbe.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/sys/dev/ixgbe/ixgbe.c b/sys/dev/ixgbe/ixgbe.c index 338172a..e246bf3 100644 --- a/sys/dev/ixgbe/ixgbe.c +++ b/sys/dev/ixgbe/ixgbe.c @@ -46,7 +46,7 @@ int ixgbe_display_debug_stats = 0; /********************************************************************* * Driver version *********************************************************************/ -char ixgbe_driver_version[] = "2.3.6"; +char ixgbe_driver_version[] = "2.3.7"; /********************************************************************* * PCI Device ID Table @@ -3023,16 +3023,12 @@ ixgbe_tx_ctx_setup(struct tx_ring *txr, struct mbuf *mp) case ETHERTYPE_IP: ip = (struct ip *)(mp->m_data + ehdrlen); ip_hlen = ip->ip_hl << 2; - if (mp->m_len < ehdrlen + ip_hlen) - return (FALSE); ipproto = ip->ip_p; type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_IPV4; break; case ETHERTYPE_IPV6: ip6 = (struct ip6_hdr *)(mp->m_data + ehdrlen); ip_hlen = sizeof(struct ip6_hdr); - if (mp->m_len < ehdrlen + ip_hlen) - return (FALSE); ipproto = ip6->ip6_nxt; type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_IPV6; break; |