]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
ip link set vf: Added "query_rss" command
authorVlad Zolotarov <vladz@cloudius-systems.com>
Thu, 30 Apr 2015 10:46:43 +0000 (13:46 +0300)
committerStephen Hemminger <shemming@brocade.com>
Mon, 4 May 2015 16:08:26 +0000 (09:08 -0700)
Add a new option to toggle the ability of querying the RSS configuration of a specific VF.

VF RSS information like RSS hash key may be considered sensitive on some devices where
this information is shared between VF and PF and thus its querying may be prohibited by default.

This new option allows a system administrator with privileges to modify a PF state
to control if the above VF querying is allowed or not.

For example:
 To enable RSS querying of VF[0] of ethX:
 >> ip link set dev ethX vf 0 query_rss on

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
ip/iplink.c

index 023f53b7abb73a02a1d0f645e96dc6e4771053ba..bb437b96239a76bc6a30b7e652b84ebf5123040a 100644 (file)
@@ -80,6 +80,7 @@ void iplink_usage(void)
        fprintf(stderr, "                                  [ rate TXRATE ] ] \n");
 
        fprintf(stderr, "                                  [ spoofchk { on | off} ] ] \n");
+       fprintf(stderr, "                                  [ query_rss { on | off} ] ] \n");
        fprintf(stderr, "                                  [ state { auto | enable | disable} ] ]\n");
        fprintf(stderr, "                         [ master DEVICE ]\n");
        fprintf(stderr, "                         [ nomaster ]\n");
@@ -331,6 +332,18 @@ static int iplink_parse_vf(int vf, int *argcp, char ***argvp,
                        ivs.vf = vf;
                        addattr_l(&req->n, sizeof(*req), IFLA_VF_SPOOFCHK, &ivs, sizeof(ivs));
 
+               } else if (matches(*argv, "query_rss") == 0) {
+                       struct ifla_vf_rss_query_en ivs;
+                       NEXT_ARG();
+                       if (matches(*argv, "on") == 0)
+                               ivs.setting = 1;
+                       else if (matches(*argv, "off") == 0)
+                               ivs.setting = 0;
+                       else
+                               invarg("Invalid \"query_rss\" value\n", *argv);
+                       ivs.vf = vf;
+                       addattr_l(&req->n, sizeof(*req), IFLA_VF_RSS_QUERY_EN, &ivs, sizeof(ivs));
+
                } else if (matches(*argv, "state") == 0) {
                        struct ifla_vf_link_state ivl;
                        NEXT_ARG();