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

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
...@@ -1140,6 +1140,42 @@ static void xennet_uninit(struct net_device *dev) ...@@ -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 @@ static int talk_to_netback(struct xenbus_device *dev, ...@@ -1513,42 +1549,6 @@ static int talk_to_netback(struct xenbus_device *dev,
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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment