On Sun, Feb 07, 2016 at 09:52:24PM +0100, Nikolay Aleksandrov wrote: > From: Nikolay Aleksandrov <niko...@cumulusnetworks.com> > > We should validate the port setting that we got from the user and check > if it's what we've set it to (PORT_OTHER), also add explanation that > ignoring advertising is good as long as we don't have autonegotiation. > > Signed-off-by: Nikolay Aleksandrov <niko...@cumulusnetworks.com>
Acked-by: Michael S. Tsirkin <m...@redhat.com> > --- > drivers/net/virtio_net.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index c9fd52a8e6ec..fb0eae42bf39 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -1386,11 +1386,13 @@ static bool virtnet_validate_ethtool_cmd(const struct > ethtool_cmd *cmd) > struct ethtool_cmd diff1 = *cmd; > struct ethtool_cmd diff2 = {}; > > - /* advertising and cmd are usually set, ignore port because we set it */ > + /* cmd is always set so we need to clear it, validate the port type > + * and also without autonegotiation we can ignore advertising > + */ > ethtool_cmd_speed_set(&diff1, 0); > + diff2.port = PORT_OTHER; > diff1.advertising = 0; > diff1.duplex = 0; > - diff1.port = 0; > diff1.cmd = 0; > > return !memcmp(&diff1, &diff2, sizeof(diff1)); > -- > 2.4.3