mbuf: replace data pointer by an offset
[dpdk.git] / lib / librte_pmd_ixgbe / ixgbe_rxtx.c
index c95e117..c661335 100644 (file)
@@ -540,6 +540,7 @@ ixgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
        volatile union ixgbe_adv_tx_desc *txd;
        struct rte_mbuf     *tx_pkt;
        struct rte_mbuf     *m_seg;
+       union ixgbe_vlan_macip vlan_macip_lens;
        uint64_t buf_dma_addr;
        uint32_t olinfo_status;
        uint32_t cmd_type_len;
@@ -551,7 +552,6 @@ ixgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
        uint16_t nb_tx;
        uint16_t nb_used;
        uint16_t tx_ol_req;
-       uint32_t vlan_macip_lens;
        uint32_t ctx = 0;
        uint32_t new_ctx;
 
@@ -579,14 +579,15 @@ ixgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
                 * are needed for offload functionality.
                 */
                ol_flags = tx_pkt->ol_flags;
-               vlan_macip_lens = tx_pkt->vlan_macip.data;
+               vlan_macip_lens.f.vlan_tci = tx_pkt->vlan_tci;
+               vlan_macip_lens.f.l2_l3_len = tx_pkt->l2_l3_len;
 
                /* If hardware offload required */
                tx_ol_req = (uint16_t)(ol_flags & PKT_TX_OFFLOAD_MASK);
                if (tx_ol_req) {
                        /* If new context need be built or reuse the exist ctx. */
                        ctx = what_advctx_update(txq, tx_ol_req,
-                               vlan_macip_lens);
+                               vlan_macip_lens.data);
                        /* Only allocate context descriptor if required*/
                        new_ctx = (ctx == IXGBE_CTX_NUM);
                        ctx = txq->ctx_curr;
@@ -728,7 +729,7 @@ ixgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
                                }
 
                                ixgbe_set_xmit_ctx(txq, ctx_txd, tx_ol_req,
-                                   vlan_macip_lens);
+                                   vlan_macip_lens.data);
 
                                txe->last_id = tx_last;
                                tx_id = txe->next_id;
@@ -939,7 +940,7 @@ ixgbe_rx_scan_hw_ring(struct igb_rx_queue *rxq)
                                                        rxq->crc_len);
                        mb->data_len = pkt_len;
                        mb->pkt_len = pkt_len;
-                       mb->vlan_macip.f.vlan_tci = rxdp[j].wb.upper.vlan;
+                       mb->vlan_tci = rxdp[j].wb.upper.vlan;
                        mb->hash.rss = rxdp[j].wb.lower.hi_dword.rss;
 
                        /* convert descriptor fields to rte mbuf flags */
@@ -996,9 +997,9 @@ ixgbe_rx_alloc_bufs(struct igb_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->in_port = rxq->port_id;
+               mb->port = rxq->port_id;
 
                /* populate the descriptors */
                dma_addr = (uint64_t)mb->buf_physaddr + RTE_PKTMBUF_HEADROOM;
@@ -1247,18 +1248,17 @@ ixgbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
                 */
                pkt_len = (uint16_t) (rte_le_to_cpu_16(rxd.wb.upper.length) -
                                      rxq->crc_len);
-               rxm->data = (char*) rxm->buf_addr + RTE_PKTMBUF_HEADROOM;
-               rte_packet_prefetch(rxm->data);
+               rxm->data_off = RTE_PKTMBUF_HEADROOM;
+               rte_packet_prefetch((char *)rxm->buf_addr + rxm->data_off);
                rxm->nb_segs = 1;
                rxm->next = NULL;
                rxm->pkt_len = pkt_len;
                rxm->data_len = pkt_len;
-               rxm->in_port = rxq->port_id;
+               rxm->port = rxq->port_id;
 
                hlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);
                /* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */
-               rxm->vlan_macip.f.vlan_tci =
-                       rte_le_to_cpu_16(rxd.wb.upper.vlan);
+               rxm->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);
 
                pkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);
                pkt_flags = (uint16_t)(pkt_flags |
@@ -1431,7 +1431,7 @@ ixgbe_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
                 */
                data_len = rte_le_to_cpu_16(rxd.wb.upper.length);
                rxm->data_len = data_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,
@@ -1496,14 +1496,13 @@ ixgbe_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
                 *      - VLAN TCI, if any,
                 *      - error flags.
                 */
-               first_seg->in_port = rxq->port_id;
+               first_seg->port = rxq->port_id;
 
                /*
                 * The vlan_tci field is only valid when PKT_RX_VLAN_PKT is
                 * set in the pkt_flags field.
                 */
-               first_seg->vlan_macip.f.vlan_tci =
-                               rte_le_to_cpu_16(rxd.wb.upper.vlan);
+               first_seg->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan);
                hlen_type_rss = rte_le_to_cpu_32(rxd.wb.lower.lo_dword.data);
                pkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(hlen_type_rss);
                pkt_flags = (uint16_t)(pkt_flags |
@@ -1523,7 +1522,8 @@ ixgbe_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
                }
 
                /* Prefetch data of first segment, if configured to do so. */
-               rte_packet_prefetch(first_seg->data);
+               rte_packet_prefetch((char *)first_seg->buf_addr +
+                       first_seg->data_off);
 
                /*
                 * Store the mbuf address into the next entry of the array
@@ -3213,9 +3213,9 @@ ixgbe_alloc_rx_queue_mbufs(struct igb_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->in_port = rxq->port_id;
+               mbuf->port = rxq->port_id;
 
                dma_addr =
                        rte_cpu_to_le_64(RTE_MBUF_DATA_DMA_ADDR_DEFAULT(mbuf));