| 6873 | |
| 6874 | #ifndef __NO_STRICT_ALIGNMENT |
| 6875 | static struct mbuf * |
| 6876 | iflib_fixup_rx(struct mbuf *m) |
| 6877 | { |
| 6878 | struct mbuf *n; |
| 6879 | |
| 6880 | if (m->m_len <= (MCLBYTES - ETHER_HDR_LEN)) { |
| 6881 | bcopy(m->m_data, m->m_data + ETHER_HDR_LEN, m->m_len); |
| 6882 | m->m_data += ETHER_HDR_LEN; |
| 6883 | n = m; |
| 6884 | } else { |
| 6885 | MGETHDR(n, M_NOWAIT, MT_DATA); |
| 6886 | if (n == NULL) { |
| 6887 | m_freem(m); |
| 6888 | return (NULL); |
| 6889 | } |
| 6890 | bcopy(m->m_data, n->m_data, ETHER_HDR_LEN); |
| 6891 | m->m_data += ETHER_HDR_LEN; |
| 6892 | m->m_len -= ETHER_HDR_LEN; |
| 6893 | n->m_len = ETHER_HDR_LEN; |
| 6894 | M_MOVE_PKTHDR(n, m); |
| 6895 | n->m_next = m; |
| 6896 | } |
| 6897 | return (n); |
| 6898 | } |
| 6899 | #endif |
| 6900 | |
| 6901 | #ifdef DEBUGNET |
no test coverage detected