mbuf: remove packet type from offload flags
[dpdk.git] / drivers / net / fm10k / fm10k_rxtx.c
index f5d1ad0..d3f7b89 100644 (file)
@@ -68,13 +68,29 @@ static inline void dump_rxd(union fm10k_rx_desc *rxd)
 static inline void
 rx_desc_to_ol_flags(struct rte_mbuf *m, const union fm10k_rx_desc *d)
 {
-       uint16_t ptype;
-       static const uint16_t pt_lut[] = { 0,
-               PKT_RX_IPV4_HDR, PKT_RX_IPV4_HDR_EXT,
-               PKT_RX_IPV6_HDR, PKT_RX_IPV6_HDR_EXT,
-               0, 0, 0
+       static const uint32_t
+               ptype_table[FM10K_RXD_PKTTYPE_MASK >> FM10K_RXD_PKTTYPE_SHIFT]
+                       __rte_cache_aligned = {
+               [FM10K_PKTTYPE_OTHER] = RTE_PTYPE_L2_ETHER,
+               [FM10K_PKTTYPE_IPV4] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4,
+               [FM10K_PKTTYPE_IPV4_EX] = RTE_PTYPE_L2_ETHER |
+                       RTE_PTYPE_L3_IPV4_EXT,
+               [FM10K_PKTTYPE_IPV6] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6,
+               [FM10K_PKTTYPE_IPV6_EX] = RTE_PTYPE_L2_ETHER |
+                       RTE_PTYPE_L3_IPV6_EXT,
+               [FM10K_PKTTYPE_IPV4 | FM10K_PKTTYPE_TCP] = RTE_PTYPE_L2_ETHER |
+                       RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP,
+               [FM10K_PKTTYPE_IPV6 | FM10K_PKTTYPE_TCP] = RTE_PTYPE_L2_ETHER |
+                       RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP,
+               [FM10K_PKTTYPE_IPV4 | FM10K_PKTTYPE_UDP] = RTE_PTYPE_L2_ETHER |
+                       RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP,
+               [FM10K_PKTTYPE_IPV6 | FM10K_PKTTYPE_UDP] = RTE_PTYPE_L2_ETHER |
+                       RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP,
        };
 
+       m->packet_type = ptype_table[(d->w.pkt_info & FM10K_RXD_PKTTYPE_MASK)
+                                               >> FM10K_RXD_PKTTYPE_SHIFT];
+
        if (d->w.pkt_info & FM10K_RXD_RSSTYPE_MASK)
                m->ol_flags |= PKT_RX_RSS_HASH;
 
@@ -96,10 +112,6 @@ rx_desc_to_ol_flags(struct rte_mbuf *m, const union fm10k_rx_desc *d)
 
        if (unlikely(d->d.staterr & FM10K_RXD_STATUS_RXE))
                m->ol_flags |= PKT_RX_RECIP_ERR;
-
-       ptype = (d->d.data & FM10K_RXD_PKTTYPE_MASK_L3) >>
-                                               FM10K_RXD_PKTTYPE_SHIFT;
-       m->ol_flags |= pt_lut[(uint8_t)ptype];
 }
 
 uint16_t
@@ -450,7 +462,7 @@ fm10k_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
                mb = tx_pkts[count];
 
                /* running low on descriptors? try to free some... */
-               if (q->nb_free < q->free_trigger)
+               if (q->nb_free < q->free_thresh)
                        tx_free_descriptors(q);
 
                /* make sure there are enough free descriptors to transmit the