mbuf: rename deprecated VLAN flags
[dpdk.git] / drivers / net / enic / enic_rxtx.c
index 343dabc..1d43bde 100644 (file)
@@ -243,7 +243,7 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
 
        /* VLAN STRIPPED flag. The L2 packet type updated here also */
        if (bwflags & CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED) {
-               pkt_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
+               pkt_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED;
                mbuf->packet_type |= RTE_PTYPE_L2_ETHER;
        } else {
                if (vlan_tci != 0)
@@ -253,8 +253,20 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
        }
        mbuf->vlan_tci = vlan_tci;
 
-       /* RSS flag */
-       if (enic_cq_rx_desc_rss_type(cqrd)) {
+       if ((cqd->type_color & CQ_DESC_TYPE_MASK) == CQ_DESC_TYPE_CLASSIFIER) {
+               struct cq_enet_rq_clsf_desc *clsf_cqd;
+               uint16_t filter_id;
+               clsf_cqd = (struct cq_enet_rq_clsf_desc *)cqd;
+               filter_id = clsf_cqd->filter_id;
+               if (filter_id) {
+                       pkt_flags |= PKT_RX_FDIR;
+                       if (filter_id != ENIC_MAGIC_FILTER_ID) {
+                               mbuf->hash.fdir.hi = clsf_cqd->filter_id;
+                               pkt_flags |= PKT_RX_FDIR_ID;
+                       }
+               }
+       } else if (enic_cq_rx_desc_rss_type(cqrd)) {
+               /* RSS flag */
                pkt_flags |= PKT_RX_RSS_HASH;
                mbuf->hash.rss = enic_cq_rx_desc_rss_hash(cqrd);
        }
@@ -386,7 +398,6 @@ enic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 
                if (rq->is_sop) {
                        first_seg = rxmb;
-                       first_seg->nb_segs = 1;
                        first_seg->pkt_len = seg_length;
                } else {
                        first_seg->pkt_len = (uint16_t)(first_seg->pkt_len
@@ -395,7 +406,6 @@ enic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
                        last_seg->next = rxmb;
                }
 
-               rxmb->next = NULL;
                rxmb->port = enic->port_id;
                rxmb->data_len = seg_length;
 
@@ -473,7 +483,7 @@ static inline void enic_free_wq_bufs(struct vnic_wq *wq, u16 completed_index)
        pool = ((struct rte_mbuf *)buf->mb)->pool;
        for (i = 0; i < nb_to_free; i++) {
                buf = &wq->bufs[tail_idx];
-               m = __rte_pktmbuf_prefree_seg((struct rte_mbuf *)(buf->mb));
+               m = rte_pktmbuf_prefree_seg((struct rte_mbuf *)(buf->mb));
                buf->mb = NULL;
 
                if (unlikely(m == NULL)) {
@@ -493,7 +503,8 @@ static inline void enic_free_wq_bufs(struct vnic_wq *wq, u16 completed_index)
                tail_idx = enic_ring_incr(desc_count, tail_idx);
        }
 
-       rte_mempool_put_bulk(pool, (void **)free, nb_free);
+       if (nb_free > 0)
+               rte_mempool_put_bulk(pool, (void **)free, nb_free);
 
        wq->tail_idx = tail_idx;
        wq->ring.desc_avail += nb_to_free;