mlxbf-tmfifo: sparse tags for config access
authorMichael S. Tsirkin <mst@redhat.com>
Sun, 12 Jul 2020 14:56:34 +0000 (10:56 -0400)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 5 Aug 2020 15:08:40 +0000 (11:08 -0400)
mlxbf-tmfifo accesses config space using native types -
which works for it since the legacy virtio native types.

This will break if it ever needs to support modern virtio,
so with new tags previously introduced for virtio net config,
sparse now warns for this in drivers.

Since this is a legacy only device, fix it up using
virtio_legacy_is_little_endian for now.

No functional changes.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Acked-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Andy Shevchenko <andy.shevchenko@gmail.com>
drivers/platform/mellanox/mlxbf-tmfifo.c

index 5739a9669b29139319738c8775731f89074929df..bbc4e71a16ff8372f69977a74e5dd7899beabba7 100644 (file)
@@ -625,7 +625,10 @@ static void mlxbf_tmfifo_rxtx_header(struct mlxbf_tmfifo_vring *vring,
                        vdev_id = VIRTIO_ID_NET;
                        hdr_len = sizeof(struct virtio_net_hdr);
                        config = &fifo->vdev[vdev_id]->config.net;
-                       if (ntohs(hdr.len) > config->mtu +
+                       /* A legacy-only interface for now. */
+                       if (ntohs(hdr.len) >
+                           __virtio16_to_cpu(virtio_legacy_is_little_endian(),
+                                             config->mtu) +
                            MLXBF_TMFIFO_NET_L2_OVERHEAD)
                                return;
                } else {
@@ -1231,8 +1234,12 @@ static int mlxbf_tmfifo_probe(struct platform_device *pdev)
 
        /* Create the network vdev. */
        memset(&net_config, 0, sizeof(net_config));
-       net_config.mtu = ETH_DATA_LEN;
-       net_config.status = VIRTIO_NET_S_LINK_UP;
+
+       /* A legacy-only interface for now. */
+       net_config.mtu = __cpu_to_virtio16(virtio_legacy_is_little_endian(),
+                                          ETH_DATA_LEN);
+       net_config.status = __cpu_to_virtio16(virtio_legacy_is_little_endian(),
+                                             VIRTIO_NET_S_LINK_UP);
        mlxbf_tmfifo_get_cfg_mac(net_config.mac);
        rc = mlxbf_tmfifo_create_vdev(dev, fifo, VIRTIO_ID_NET,
                                      MLXBF_TMFIFO_NET_FEATURES, &net_config,