net/sfc: extend logging in MAE backend of flow API
[dpdk.git] / drivers / net / virtio / virtio_user_ethdev.c
index 9314ca5..90fcd6e 100644 (file)
@@ -60,12 +60,15 @@ virtio_user_write_dev_config(struct virtio_hw *hw, size_t offset,
        struct virtio_user_dev *dev = virtio_user_get_dev(hw);
 
        if ((offset == offsetof(struct virtio_net_config, mac)) &&
-           (length == RTE_ETHER_ADDR_LEN))
+           (length == RTE_ETHER_ADDR_LEN)) {
                for (i = 0; i < RTE_ETHER_ADDR_LEN; ++i)
                        dev->mac_addr[i] = ((const uint8_t *)src)[i];
-       else
+               virtio_user_dev_set_mac(dev);
+               virtio_user_dev_get_mac(dev);
+       } else {
                PMD_DRV_LOG(ERR, "not supported offset=%zu, len=%d",
                            offset, length);
+       }
 }
 
 static void
@@ -110,7 +113,8 @@ virtio_user_get_features(struct virtio_hw *hw)
        struct virtio_user_dev *dev = virtio_user_get_dev(hw);
 
        /* unmask feature bits defined in vhost user protocol */
-       return dev->device_features & VIRTIO_PMD_SUPPORTED_GUEST_FEATURES;
+       return (dev->device_features | dev->frontend_features) &
+               VIRTIO_PMD_SUPPORTED_GUEST_FEATURES;
 }
 
 static void
@@ -118,7 +122,7 @@ virtio_user_set_features(struct virtio_hw *hw, uint64_t features)
 {
        struct virtio_user_dev *dev = virtio_user_get_dev(hw);
 
-       dev->features = features & dev->device_features;
+       dev->features = features & (dev->device_features | dev->frontend_features);
 }
 
 static int
@@ -360,7 +364,7 @@ vdpa_dynamic_major_num(void)
 {
        FILE *fp;
        char *line = NULL;
-       size_t size;
+       size_t size = 0;
        char name[11];
        bool found = false;
        uint32_t num;
@@ -380,6 +384,7 @@ vdpa_dynamic_major_num(void)
                        break;
                }
        }
+       free(line);
        fclose(fp);
        return found ? num : UNNAMED_MAJOR;
 }
@@ -428,7 +433,6 @@ virtio_user_eth_dev_alloc(struct rte_vdev_device *vdev)
        hw = &dev->hw;
 
        hw->port_id = data->port_id;
-       dev->port_id = data->port_id;
        VIRTIO_OPS(hw) = &virtio_user_ops;
 
        hw->intr_lsc = 1;