Commit 0cf3ace9 authored by Nikolay Aleksandrov's avatar Nikolay Aleksandrov Committed by David S. Miller

virtio_net: validate ethtool port setting and explain the user validation

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: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e02564ee
...@@ -1386,11 +1386,13 @@ static bool virtnet_validate_ethtool_cmd(const struct ethtool_cmd *cmd) ...@@ -1386,11 +1386,13 @@ static bool virtnet_validate_ethtool_cmd(const struct ethtool_cmd *cmd)
struct ethtool_cmd diff1 = *cmd; struct ethtool_cmd diff1 = *cmd;
struct ethtool_cmd diff2 = {}; 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); ethtool_cmd_speed_set(&diff1, 0);
diff2.port = PORT_OTHER;
diff1.advertising = 0; diff1.advertising = 0;
diff1.duplex = 0; diff1.duplex = 0;
diff1.port = 0;
diff1.cmd = 0; diff1.cmd = 0;
return !memcmp(&diff1, &diff2, sizeof(diff1)); return !memcmp(&diff1, &diff2, sizeof(diff1));
......
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