mbuf: replace data pointer by an offset
[dpdk.git] / lib / librte_pmd_i40e / i40e_rxtx.c
index c481976..25a5f6f 100644 (file)
@@ -78,9 +78,7 @@
        (uint64_t) ((mb)->buf_physaddr + RTE_PKTMBUF_HEADROOM)
 
 #define RTE_MBUF_DATA_DMA_ADDR(mb) \
-       ((uint64_t)((mb)->buf_physaddr + \
-       (uint64_t)((char *)((mb)->data) - \
-       (char *)(mb)->buf_addr)))
+       ((uint64_t)((mb)->buf_physaddr + (mb)->data_off))
 
 static const struct rte_memzone *
 i40e_ring_dma_zone_reserve(struct rte_eth_dev *dev,
@@ -613,7 +611,7 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
                                I40E_RXD_QW1_LENGTH_PBUF_SHIFT) - rxq->crc_len;
                        mb->data_len = pkt_len;
                        mb->pkt_len = pkt_len;
-                       mb->vlan_macip.f.vlan_tci = rx_status &
+                       mb->vlan_tci = rx_status &
                                (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT) ?
                        rte_le_to_cpu_16(\
                                rxdp[j].wb.qword0.lo_dword.l2tag1) : 0;
@@ -685,7 +683,7 @@ i40e_rx_alloc_bufs(struct i40e_rx_queue *rxq)
                mb = rxep[i].mbuf;
                rte_mbuf_refcnt_set(mb, 1);
                mb->next = NULL;
-               mb->data = (char *)mb->buf_addr + RTE_PKTMBUF_HEADROOM;
+               mb->data_off = RTE_PKTMBUF_HEADROOM;
                mb->nb_segs = 1;
                mb->port = rxq->port_id;
                dma_addr = rte_cpu_to_le_64(\
@@ -842,15 +840,15 @@ i40e_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
                rx_packet_len = ((qword1 & I40E_RXD_QW1_LENGTH_PBUF_MASK) >>
                                I40E_RXD_QW1_LENGTH_PBUF_SHIFT) - rxq->crc_len;
 
-               rxm->data = (char *)rxm->buf_addr + RTE_PKTMBUF_HEADROOM;
-               rte_prefetch0(rxm->data);
+               rxm->data_off = RTE_PKTMBUF_HEADROOM;
+               rte_prefetch0(RTE_PTR_ADD(rxm->buf_addr, RTE_PKTMBUF_HEADROOM));
                rxm->nb_segs = 1;
                rxm->next = NULL;
                rxm->pkt_len = rx_packet_len;
                rxm->data_len = rx_packet_len;
                rxm->port = rxq->port_id;
 
-               rxm->vlan_macip.f.vlan_tci = rx_status &
+               rxm->vlan_tci = rx_status &
                        (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT) ?
                        rte_le_to_cpu_16(rxd.wb.qword0.lo_dword.l2tag1) : 0;
                pkt_flags = i40e_rxd_status_to_pkt_flags(qword1);
@@ -946,7 +944,7 @@ i40e_recv_scattered_pkts(void *rx_queue,
                rx_packet_len = (qword1 & I40E_RXD_QW1_LENGTH_PBUF_MASK) >>
                                        I40E_RXD_QW1_LENGTH_PBUF_SHIFT;
                rxm->data_len = rx_packet_len;
-               rxm->data = (char *)rxm->buf_addr + RTE_PKTMBUF_HEADROOM;
+               rxm->data_off = RTE_PKTMBUF_HEADROOM;
 
                /**
                 * If this is the first buffer of the received packet, set the
@@ -1003,7 +1001,7 @@ i40e_recv_scattered_pkts(void *rx_queue,
                }
 
                first_seg->port = rxq->port_id;
-               first_seg->vlan_macip.f.vlan_tci = (rx_status &
+               first_seg->vlan_tci = (rx_status &
                        (1 << I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)) ?
                        rte_le_to_cpu_16(rxd.wb.qword0.lo_dword.l2tag1) : 0;
                pkt_flags = i40e_rxd_status_to_pkt_flags(qword1);
@@ -1015,7 +1013,8 @@ i40e_recv_scattered_pkts(void *rx_queue,
                                rte_le_to_cpu_32(rxd.wb.qword0.hi_dword.rss);
 
                /* Prefetch data of first segment, if configured to do so. */
-               rte_prefetch0(first_seg->data);
+               rte_prefetch0(RTE_PTR_ADD(first_seg->buf_addr,
+                       first_seg->data_off));
                rx_pkts[nb_rx++] = first_seg;
                first_seg = NULL;
        }
@@ -1105,8 +1104,8 @@ i40e_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
                RTE_MBUF_PREFETCH_TO_FREE(txe->mbuf);
 
                ol_flags = tx_pkt->ol_flags;
-               l2_len = tx_pkt->vlan_macip.f.l2_len;
-               l3_len = tx_pkt->vlan_macip.f.l3_len;
+               l2_len = tx_pkt->l2_len;
+               l3_len = tx_pkt->l3_len;
 
                /* Calculate the number of context descriptors needed. */
                nb_ctx = i40e_calc_context_desc(ol_flags);
@@ -1142,8 +1141,8 @@ i40e_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 
                /* Descriptor based VLAN insertion */
                if (ol_flags & PKT_TX_VLAN_PKT) {
-                       tx_flags |= tx_pkt->vlan_macip.f.vlan_tci <<
-                                               I40E_TX_FLAG_L2TAG1_SHIFT;
+                       tx_flags |= tx_pkt->vlan_tci <<
+                                       I40E_TX_FLAG_L2TAG1_SHIFT;
                        tx_flags |= I40E_TX_FLAG_INSERT_VLAN;
                        td_cmd |= I40E_TX_DESC_CMD_IL2TAG1;
                        td_tag = (tx_flags & I40E_TX_FLAG_L2TAG1_MASK) >>
@@ -2131,7 +2130,7 @@ i40e_alloc_rx_queue_mbufs(struct i40e_rx_queue *rxq)
 
                rte_mbuf_refcnt_set(mbuf, 1);
                mbuf->next = NULL;
-               mbuf->data = (char *)mbuf->buf_addr + RTE_PKTMBUF_HEADROOM;
+               mbuf->data_off = RTE_PKTMBUF_HEADROOM;
                mbuf->nb_segs = 1;
                mbuf->port = rxq->port_id;