genet: fix output packet corruption in uncommon case
The code for the "shift" block in the COPY macro set the pointer for the next copy block to the wrong value. In this case, the link-layer header would be overwritten by the network-layer header. This case is difficult or impossible to exercise in the current driver without changing the value of the hw.genet.tx_hdr_min sysctl. Correct the pointer. While here, remove a line in the macro that was marked "unneeded", which was actually wrong. PR: 263824 Submitted by: jiahali@blackberry.com MFC after: 2 weeks
This commit is contained in:
parent
dc484aed0a
commit
1de9aa4d4f
@ -1254,11 +1254,10 @@ gen_parse_tx(struct mbuf *m, int csum_flags)
|
||||
m0->m_data = m0->m_pktdat; \
|
||||
bcopy(p0, mtodo(m0, sizeof(struct statusblock)),\
|
||||
m0->m_len - sizeof(struct statusblock)); \
|
||||
copy_p = mtodo(m0, sizeof(struct statusblock)); \
|
||||
copy_p = mtodo(m0, m0->m_len); \
|
||||
} \
|
||||
bcopy(p, copy_p, hsize); \
|
||||
m0->m_len += hsize; \
|
||||
m0->m_pkthdr.len += hsize; /* unneeded */ \
|
||||
m->m_len -= hsize; \
|
||||
m->m_data += hsize; \
|
||||
} \
|
||||
|
Loading…
Reference in New Issue
Block a user