헤더 룸을 256 바이트로 설정 했으므로 이것을 개인 데이터 보유에 사용하고 싶지만 bnx2x_recv_pkts
메쏘드에서 mbuf data_off를 dpdk에 cqe_fp->placement_offset
으로 설정 했습니까? 왜? 이 문제가 해결되지 않지만왜 bnx2x_recv_pkts가 mbuf data_off를 dpdk의 cqe_fp-> placement_offset으로 설정 했습니까?
len = cqe_fp->pkt_len_or_gro_seg_len;
**pad = cqe_fp->placement_offset;**
new_mb = rte_mbuf_raw_alloc(rxq->mb_pool);
if (unlikely(!new_mb)) {
PMD_RX_LOG(ERR, "mbuf alloc fail fp[%02d]", fp->index);
rte_eth_devices[rxq->port_id].data->
rx_mbuf_alloc_failed++;
goto next_rx;
}
rx_mb = rxq->sw_ring[bd_cons];
rxq->sw_ring[bd_cons] = new_mb;
rxq->rx_ring[bd_prod] = new_mb->buf_physaddr;
rx_pref = NEXT_RX_BD(bd_cons) & MAX_RX_BD(rxq);
rte_prefetch0(rxq->sw_ring[rx_pref]);
if ((rx_pref & 0x3) == 0) {
rte_prefetch0(&rxq->rx_ring[rx_pref]);
rte_prefetch0(&rxq->sw_ring[rx_pref]);
}
**rx_mb->data_off = pad;**
rx_mb->nb_segs = 1;
rx_mb->next = NULL;
rx_mb->pkt_len = rx_mb->data_len = len;
rx_mb->port = rxq->port_id;
rte_prefetch1(rte_pktmbuf_mtod(rx_mb, void *));
나는 새로운 LIB을, rx_mb-> data_off = 패드의 라인을 언급하지만,하지 작업 할 때 실행됩니다. 지금 나는 cqe_fp-> placement_offset의이 값이 2로 어떻게 설정되는지 알고 싶습니까? 나는 dpdk-stable-17.11의 근원을 보았지만 발견되지 않았다. – eason