From 2845035b5deeae16cd6ea30bd733d153838f5f27 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sun, 14 Feb 2021 15:30:26 +0800 Subject: [PATCH] msg/async/dpdk: be compatible with DPDK 19.11 since SPDK 21.01 has picked up DPDK 20.11, would be ideal if we can be compatible with DPDK 19.11 at least * s/ ETHER_/ RTE_ETHER_/ * s/struct ether_addr/struct rte_ether_addr/ * s/struct ether_hdr/struct rte_ether_hdr/ Signed-off-by: Kefu Chai --- src/msg/async/dpdk/DPDK.cc | 5 +++-- src/msg/async/dpdk/DPDK.h | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/msg/async/dpdk/DPDK.cc b/src/msg/async/dpdk/DPDK.cc index 0c1f0b2af8a..a17e1788e54 100644 --- a/src/msg/async/dpdk/DPDK.cc +++ b/src/msg/async/dpdk/DPDK.cc @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -1023,14 +1024,14 @@ void DPDKQueuePair::tx_buf::set_cluster_offload_info(const Packet& p, const DPDK if (oi.needs_ip_csum) { head->ol_flags |= PKT_TX_IP_CKSUM; // TODO: Take a VLAN header into an account here - head->l2_len = sizeof(struct ether_hdr); + head->l2_len = sizeof(struct rte_ether_hdr); head->l3_len = oi.ip_hdr_len; } if (qp.port().get_hw_features().tx_csum_l4_offload) { if (oi.protocol == ip_protocol_num::tcp) { head->ol_flags |= PKT_TX_TCP_CKSUM; // TODO: Take a VLAN header into an account here - head->l2_len = sizeof(struct ether_hdr); + head->l2_len = sizeof(struct rte_ether_hdr); head->l3_len = oi.ip_hdr_len; if (oi.tso_seg_size) { diff --git a/src/msg/async/dpdk/DPDK.h b/src/msg/async/dpdk/DPDK.h index ca9a124f2f7..eadba40fb49 100644 --- a/src/msg/async/dpdk/DPDK.h +++ b/src/msg/async/dpdk/DPDK.h @@ -353,7 +353,7 @@ class DPDKQueuePair { public: tx_buf(tx_buf_factory& fc) : _fc(fc) { - _buf_physaddr = _mbuf.buf_physaddr; + _buf_physaddr = _mbuf.buf_iova; _data_off = _mbuf.data_off; } @@ -366,7 +366,7 @@ class DPDKQueuePair { // Set the mbuf to point to our data _mbuf.buf_addr = va; - _mbuf.buf_physaddr = pa; + _mbuf.buf_iova = pa; _mbuf.data_off = 0; _is_zc = true; } @@ -384,14 +384,14 @@ class DPDKQueuePair { // to call the "packet"'s destructor and reset the // "optional" state to "nonengaged". // - _p.destroy(); + _p.reset(); } else if (!_is_zc) { return; } // Restore the rte_mbuf fields we trashed in set_zc_info() - _mbuf.buf_physaddr = _buf_physaddr; + _mbuf.buf_iova = _buf_physaddr; _mbuf.buf_addr = rte_mbuf_to_baddr(&_mbuf); _mbuf.data_off = _data_off; @@ -618,7 +618,7 @@ class DPDKQueuePair { // actual data buffer. // m->buf_addr = (char*)data - RTE_PKTMBUF_HEADROOM; - m->buf_physaddr = rte_mem_virt2phy(data) - RTE_PKTMBUF_HEADROOM; + m->buf_iova = rte_mem_virt2iova(data) - RTE_PKTMBUF_HEADROOM; return true; } @@ -845,7 +845,7 @@ class DPDKDevice { return sub; } ethernet_address hw_address() { - struct ether_addr mac; + struct rte_ether_addr mac; rte_eth_macaddr_get(_port_idx, &mac); return mac.addr_bytes; -- 2.39.5