/* 0 : reserved
         * 1 : rx_offset
         * 2 : interrupt_moderation
-        * 31:3 : reserved
+        * 3 : rx_buf_mirroring
+        * 31:4 : reserved
         */
        u32 driver_supported_features;
 };
 #define ENA_ADMIN_HOST_INFO_RX_OFFSET_MASK                  BIT(1)
 #define ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_SHIFT      2
 #define ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK       BIT(2)
+#define ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_SHIFT          3
+#define ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_MASK           BIT(3)
 
 /* aenq_common_desc */
 #define ENA_ADMIN_AENQ_COMMON_DESC_PHASE_MASK               BIT(0)
 
                return -ENOMEM;
        }
 
+       /* To enable NIC-side port-mirroring, AKA SPAN port,
+        * we make the buffer readable from the nic as well
+        */
        dma = dma_map_page(rx_ring->dev, page, 0, ENA_PAGE_SIZE,
-                          DMA_FROM_DEVICE);
+                          DMA_BIDIRECTIONAL);
        if (unlikely(dma_mapping_error(rx_ring->dev, dma))) {
                u64_stats_update_begin(&rx_ring->syncp);
                rx_ring->rx_stats.dma_mapping_err++;
                return;
        }
 
-       dma_unmap_page(rx_ring->dev,
-                      ena_buf->paddr - rx_ring->rx_headroom,
+       dma_unmap_page(rx_ring->dev, ena_buf->paddr - rx_ring->rx_headroom,
                       ENA_PAGE_SIZE,
-                      DMA_FROM_DEVICE);
+                      DMA_BIDIRECTIONAL);
 
        __free_page(page);
        rx_info->page = NULL;
        do {
                dma_unmap_page(rx_ring->dev,
                               dma_unmap_addr(&rx_info->ena_buf, paddr),
-                              ENA_PAGE_SIZE, DMA_FROM_DEVICE);
+                              ENA_PAGE_SIZE, DMA_BIDIRECTIONAL);
 
                skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_info->page,
                                rx_info->page_offset, len, ENA_PAGE_SIZE);
 
        host_info->driver_supported_features =
                ENA_ADMIN_HOST_INFO_RX_OFFSET_MASK |
-               ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK;
+               ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK |
+               ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_MASK;
 
        rc = ena_com_set_host_attributes(ena_dev);
        if (rc) {