+ u64 features = (u64) ~ (0ULL);
+ u64 disabled_features = (u64) (0ULL);
+ mac_address_t mac;
+ u8 *mac_p = NULL;
+
+ if (mp->disable_mrg_rxbuf)
+ disabled_features = (1ULL << FEAT_VIRTIO_NET_F_MRG_RXBUF);
+
+ if (mp->disable_indirect_desc)
+ disabled_features |= (1ULL << FEAT_VIRTIO_F_INDIRECT_DESC);
+
+ /*
+ * feature mask is not supported via binary API. We disable GSO feature in the
+ * feature mask. It may be enabled via enable_gso argument.
+ */
+ disabled_features |= FEATURE_VIRTIO_NET_F_HOST_GUEST_TSO_FEATURE_BITS;
+ features &= ~disabled_features;
+
+ if (mp->use_custom_mac)
+ {
+ mac_address_decode (mp->mac_address, &mac);
+ mac_p = (u8 *) & mac;
+ }