| 364 | } |
| 365 | |
| 366 | void * |
| 367 | ff_mbuf_gethdr(void *pkt, uint16_t total, void *data, |
| 368 | uint16_t len, uint8_t rx_csum) |
| 369 | { |
| 370 | struct mbuf *m = m_gethdr(M_NOWAIT, MT_DATA); |
| 371 | if (m == NULL) { |
| 372 | return NULL; |
| 373 | } |
| 374 | |
| 375 | m_extadd(m, data, len, ff_mbuf_ext_free, pkt, NULL, 0, EXT_DISPOSABLE); |
| 376 | |
| 377 | m->m_pkthdr.len = total; |
| 378 | m->m_len = len; |
| 379 | m->m_next = NULL; |
| 380 | m->m_nextpkt = NULL; |
| 381 | |
| 382 | if (rx_csum) { |
| 383 | m->m_pkthdr.csum_flags = CSUM_IP_CHECKED | CSUM_IP_VALID | |
| 384 | CSUM_DATA_VALID | CSUM_PSEUDO_HDR; |
| 385 | m->m_pkthdr.csum_data = 0xffff; |
| 386 | } |
| 387 | return (void *)m; |
| 388 | } |
| 389 | |
| 390 | void * |
| 391 | ff_mbuf_get(void *p, void *m, void *data, uint16_t len) |
no test coverage detected