net/ngbe: support MAC filters
[dpdk.git] / drivers / net / virtio / virtio_rxtx_packed.h
index 8f5198a..d5c259a 100644 (file)
@@ -15,7 +15,7 @@
 
 #include "virtio_logs.h"
 #include "virtio_ethdev.h"
-#include "virtio_pci.h"
+#include "virtio.h"
 #include "virtqueue.h"
 
 #define BYTE_SIZE 8
@@ -28,6 +28,8 @@
 /* flag bits offset in packed ring desc from ID */
 #define FLAGS_BITS_OFFSET ((offsetof(struct vring_packed_desc, flags) - \
        offsetof(struct vring_packed_desc, id)) * BYTE_SIZE)
+#define FLAGS_LEN_BITS_OFFSET ((offsetof(struct vring_packed_desc, flags) - \
+       offsetof(struct vring_packed_desc, len)) * BYTE_SIZE)
 #endif
 
 #define PACKED_FLAGS_MASK ((0ULL | VRING_PACKED_DESC_F_AVAIL_USED) << \
 /* reference count offset in mbuf rearm data */
 #define REFCNT_BITS_OFFSET ((offsetof(struct rte_mbuf, refcnt) - \
        offsetof(struct rte_mbuf, rearm_data)) * BYTE_SIZE)
+
+#ifdef CC_AVX512_SUPPORT
 /* segment number offset in mbuf rearm data */
 #define SEG_NUM_BITS_OFFSET ((offsetof(struct rte_mbuf, nb_segs) - \
        offsetof(struct rte_mbuf, rearm_data)) * BYTE_SIZE)
-
 /* default rearm data */
 #define DEFAULT_REARM_DATA (1ULL << SEG_NUM_BITS_OFFSET | \
        1ULL << REFCNT_BITS_OFFSET)
+#endif
 
 /* id bits offset in packed ring desc higher 64bits */
 #define ID_BITS_OFFSET ((offsetof(struct vring_packed_desc, id) - \
@@ -100,19 +104,19 @@ static inline int
 virtqueue_enqueue_single_packed_vec(struct virtnet_tx *txvq,
                                    struct rte_mbuf *txm)
 {
-       struct virtqueue *vq = txvq->vq;
+       struct virtqueue *vq = virtnet_txq_to_vq(txvq);
        struct virtio_hw *hw = vq->hw;
        uint16_t hdr_size = hw->vtnet_hdr_size;
        uint16_t slots, can_push = 0, use_indirect = 0;
        int16_t need;
 
        /* optimize ring usage */
-       if ((vtpci_with_feature(hw, VIRTIO_F_ANY_LAYOUT) ||
-            vtpci_with_feature(hw, VIRTIO_F_VERSION_1)) &&
+       if ((virtio_with_feature(hw, VIRTIO_F_ANY_LAYOUT) ||
+            virtio_with_feature(hw, VIRTIO_F_VERSION_1)) &&
             rte_mbuf_refcnt_read(txm) == 1 && RTE_MBUF_DIRECT(txm) &&
             txm->nb_segs == 1 && rte_pktmbuf_headroom(txm) >= hdr_size)
                can_push = 1;
-       else if (vtpci_with_feature(hw, VIRTIO_RING_F_INDIRECT_DESC) &&
+       else if (virtio_with_feature(hw, VIRTIO_RING_F_INDIRECT_DESC) &&
                 txm->nb_segs < VIRTIO_MAX_TX_INDIRECT)
                use_indirect = 1;
 
@@ -162,7 +166,7 @@ virtio_vec_rx_offload(struct rte_mbuf *m, struct virtio_net_hdr *hdr)
                return 0;
 
        /* GSO not support in vec path, skip check */
-       m->ol_flags |= PKT_RX_IP_CKSUM_UNKNOWN;
+       m->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_UNKNOWN;
 
        ptype = rte_net_get_ptype(m, &hdr_lens, RTE_PTYPE_ALL_MASK);
        m->packet_type = ptype;
@@ -174,7 +178,7 @@ virtio_vec_rx_offload(struct rte_mbuf *m, struct virtio_net_hdr *hdr)
        if (hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) {
                hdrlen = hdr_lens.l2_len + hdr_lens.l3_len + hdr_lens.l4_len;
                if (hdr->csum_start <= hdrlen && l4_supported) {
-                       m->ol_flags |= PKT_RX_L4_CKSUM_NONE;
+                       m->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_NONE;
                } else {
                        /* Unknown proto or tunnel, do sw cksum. We can assume
                         * the cksum field is in the first segment since the
@@ -196,7 +200,7 @@ virtio_vec_rx_offload(struct rte_mbuf *m, struct virtio_net_hdr *hdr)
                                        off) = csum;
                }
        } else if (hdr->flags & VIRTIO_NET_HDR_F_DATA_VALID && l4_supported) {
-               m->ol_flags |= PKT_RX_L4_CKSUM_GOOD;
+               m->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
        }
 
        return 0;
@@ -208,7 +212,7 @@ virtqueue_dequeue_single_packed_vec(struct virtnet_rx *rxvq,
 {
        uint16_t used_idx, id;
        uint32_t len;
-       struct virtqueue *vq = rxvq->vq;
+       struct virtqueue *vq = virtnet_rxq_to_vq(rxvq);
        struct virtio_hw *hw = vq->hw;
        uint32_t hdr_size = hw->vtnet_hdr_size;
        struct virtio_net_hdr *hdr;
@@ -260,7 +264,7 @@ virtio_recv_refill_packed_vec(struct virtnet_rx *rxvq,
                              struct rte_mbuf **cookie,
                              uint16_t num)
 {
-       struct virtqueue *vq = rxvq->vq;
+       struct virtqueue *vq = virtnet_rxq_to_vq(rxvq);
        struct vring_packed_desc *start_dp = vq->vq_packed.ring.desc;
        uint16_t flags = vq->vq_packed.cached_flags;
        struct virtio_hw *hw = vq->hw;