Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f7b01a1 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

xen: netfront: fix declaration order



Must declare xennet_fix_features() and xennet_set_features() before
using them.

Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8a0427bb
Loading
Loading
Loading
Loading
+36 −36
Original line number Original line Diff line number Diff line
@@ -1140,6 +1140,42 @@ static void xennet_uninit(struct net_device *dev)
	gnttab_free_grant_references(np->gref_rx_head);
	gnttab_free_grant_references(np->gref_rx_head);
}
}


static u32 xennet_fix_features(struct net_device *dev, u32 features)
{
	struct netfront_info *np = netdev_priv(dev);
	int val;

	if (features & NETIF_F_SG) {
		if (xenbus_scanf(XBT_NIL, np->xbdev->otherend, "feature-sg",
				 "%d", &val) < 0)
			val = 0;

		if (!val)
			features &= ~NETIF_F_SG;
	}

	if (features & NETIF_F_TSO) {
		if (xenbus_scanf(XBT_NIL, np->xbdev->otherend,
				 "feature-gso-tcpv4", "%d", &val) < 0)
			val = 0;

		if (!val)
			features &= ~NETIF_F_TSO;
	}

	return features;
}

static int xennet_set_features(struct net_device *dev, u32 features)
{
	if (!(features & NETIF_F_SG) && dev->mtu > ETH_DATA_LEN) {
		netdev_info(dev, "Reducing MTU because no SG offload");
		dev->mtu = ETH_DATA_LEN;
	}

	return 0;
}

static const struct net_device_ops xennet_netdev_ops = {
static const struct net_device_ops xennet_netdev_ops = {
	.ndo_open            = xennet_open,
	.ndo_open            = xennet_open,
	.ndo_uninit          = xennet_uninit,
	.ndo_uninit          = xennet_uninit,
@@ -1513,42 +1549,6 @@ again:
	return err;
	return err;
}
}


static u32 xennet_fix_features(struct net_device *dev, u32 features)
{
	struct netfront_info *np = netdev_priv(dev);
	int val;

	if (features & NETIF_F_SG) {
		if (xenbus_scanf(XBT_NIL, np->xbdev->otherend, "feature-sg",
				 "%d", &val) < 0)
			val = 0;

		if (!val)
			features &= ~NETIF_F_SG;
	}

	if (features & NETIF_F_TSO) {
		if (xenbus_scanf(XBT_NIL, np->xbdev->otherend,
				 "feature-gso-tcpv4", "%d", &val) < 0)
			val = 0;

		if (!val)
			features &= ~NETIF_F_TSO;
	}

	return features;
}

static int xennet_set_features(struct net_device *dev, u32 features)
{
	if (!(features & NETIF_F_SG) && dev->mtu > ETH_DATA_LEN) {
		netdev_info(dev, "Reducing MTU because no SG offload");
		dev->mtu = ETH_DATA_LEN;
	}

	return 0;
}

static int xennet_connect(struct net_device *dev)
static int xennet_connect(struct net_device *dev)
{
{
	struct netfront_info *np = netdev_priv(dev);
	struct netfront_info *np = netdev_priv(dev);