Make sure packets generated by raw IP code is let through by mlx5en(4).
Allow the TCP header to reside in the mbuf following the IP header. Else such packets will get dropped. Backtrace: mlx5e_sq_xmit() mlx5e_xmit() ether_output_frame() ether_output() ip_output_send() ip_output() rip_output() sosend_generic() sosend() kern_sendit() sendit() sys_sendto() amd64_syscall() fast_syscall_common() MFC after: 1 week Sponsored by: Mellanox Technologies
This commit is contained in:
parent
b63b61cc75
commit
6fe9e470bb
@ -307,9 +307,15 @@ mlx5e_get_full_header_size(const struct mbuf *mb, const struct tcphdr **ppth)
|
||||
goto failure;
|
||||
}
|
||||
tcp_packet:
|
||||
if (unlikely(mb->m_len < eth_hdr_len + sizeof(*th)))
|
||||
goto failure;
|
||||
th = (const struct tcphdr *)(mb->m_data + eth_hdr_len);
|
||||
if (unlikely(mb->m_len < eth_hdr_len + sizeof(*th))) {
|
||||
const struct mbuf *m_th = mb->m_next;
|
||||
if (unlikely(mb->m_len != eth_hdr_len ||
|
||||
m_th == NULL || m_th->m_len < sizeof(*th)))
|
||||
goto failure;
|
||||
th = (const struct tcphdr *)(m_th->m_data);
|
||||
} else {
|
||||
th = (const struct tcphdr *)(mb->m_data + eth_hdr_len);
|
||||
}
|
||||
tcp_hlen = th->th_off << 2;
|
||||
eth_hdr_len += tcp_hlen;
|
||||
udp_packet:
|
||||
|
Loading…
Reference in New Issue
Block a user