Signed-off-by: Alexander Matushevsky <matua at amazon.com>
Signed-off-by: Jakub Palider <jpa at semihalf.com>
Signed-off-by: Jan Medala <jan at semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 12 +++++++++++-
 drivers/net/ena/ena_ethdev.h |  2 ++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 5fc37f6..9ad35b3 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -341,7 +341,8 @@ static void ena_config_host_info(struct ena_com_dev 
*ena_dev)
        host_info->driver_version =
                (DRV_MODULE_VER_MAJOR) |
                (DRV_MODULE_VER_MINOR << ENA_ADMIN_HOST_INFO_MINOR_SHIFT) |
-               (DRV_MODULE_VER_SUBMINOR << 
ENA_ADMIN_HOST_INFO_SUB_MINOR_SHIFT);
+               (DRV_MODULE_VER_SUBMINOR <<
+                       ENA_ADMIN_HOST_INFO_SUB_MINOR_SHIFT);

        rc = ena_com_set_host_attributes(ena_dev);
        if (rc) {
@@ -1148,6 +1149,7 @@ static int ena_device_init(struct ena_com_dev *ena_dev,
                           struct ena_com_dev_get_features_ctx *get_feat_ctx)
 {
        int rc;
+       bool readless_supported;

        /* Initialize mmio registers */
        rc = ena_com_mmio_reg_read_request_init(ena_dev);
@@ -1156,6 +1158,14 @@ static int ena_device_init(struct ena_com_dev *ena_dev,
                return rc;
        }

+       /* The PCIe configuration space revision id indicate if mmio reg
+        * read is disabled.
+        */
+       readless_supported =
+               !(((struct rte_pci_device *)ena_dev->dmadev)->id.class_id
+                              & ENA_MMIO_DISABLE_REG_READ);
+       ena_com_set_mmio_read_mode(ena_dev, readless_supported);
+
        /* reset device */
        rc = ena_com_dev_reset(ena_dev);
        if (rc) {
diff --git a/drivers/net/ena/ena_ethdev.h b/drivers/net/ena/ena_ethdev.h
index cfb3fb9..3ef669c 100644
--- a/drivers/net/ena/ena_ethdev.h
+++ b/drivers/net/ena/ena_ethdev.h
@@ -54,6 +54,8 @@

 #define ENA_PKT_MAX_BUFS     17

+#define ENA_MMIO_DISABLE_REG_READ      BIT(0)
+
 #define        ENA_CIRC_COUNT(head, tail, size)                                
\
        (((uint16_t)((uint16_t)(head) - (uint16_t)(tail))) & ((size) - 1))

-- 
2.8.2

Reply via email to