Padding more bytes than necessary one broke another variants of
PCIe RealTek chips. Only pad IP packets if the payload is less than 28 bytes. Obtained from: NetBSD PR: kern/122221
This commit is contained in:
parent
5ab512bb8e
commit
a4148af5f0
@ -2171,7 +2171,7 @@ re_encap(sc, m_head)
|
||||
* offload is enabled, we always manually pad short frames out
|
||||
* to the minimum ethernet frame size.
|
||||
*/
|
||||
if ((*m_head)->m_pkthdr.len < RL_MIN_FRAMELEN &&
|
||||
if ((*m_head)->m_pkthdr.len < RL_IP4CSUMTX_PADLEN &&
|
||||
((*m_head)->m_pkthdr.csum_flags & CSUM_IP) != 0) {
|
||||
padlen = RL_MIN_FRAMELEN - (*m_head)->m_pkthdr.len;
|
||||
if (M_WRITABLE(*m_head) == 0) {
|
||||
|
@ -497,6 +497,12 @@
|
||||
|
||||
#define RL_ETHER_ALIGN 2
|
||||
|
||||
/*
|
||||
* re(4) hardware ip4csum-tx could be mangled with 28 bytes or less IP packets.
|
||||
*/
|
||||
#define RL_IP4CSUMTX_MINLEN 28
|
||||
#define RL_IP4CSUMTX_PADLEN (ETHER_HDR_LEN + RL_IP4CSUMTX_MINLEN)
|
||||
|
||||
struct rl_chain_data {
|
||||
uint16_t cur_rx;
|
||||
uint8_t *rl_rx_buf;
|
||||
|
Loading…
Reference in New Issue
Block a user