From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
To: davem@davemloft.net, shemminger@vyatta.com
Cc: netdev@vger.kernel.org, gospo@redhat.com,
Mitch Williams <mitch.a.williams@intel.com>,
Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Subject: [iproute2 PATCH 3/4] ip: Add support for SR-IOV function link parameters
Date: Sat, 30 Jan 2010 02:43:07 -0800 [thread overview]
Message-ID: <20100130104307.26719.64855.stgit@localhost.localdomain> (raw)
In-Reply-To: <20100130104226.26719.21774.stgit@localhost.localdomain>
From: Williams, Mitch A <mitch.a.williams@intel.com>
Add support to 'ip' for setting and showing SR-IOV virtual function link
parameters.
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
ip/ipaddress.c | 23 +++++++++++++++++++++++
ip/iplink.c | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+), 0 deletions(-)
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 91c7b1b..d39a675 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -331,6 +331,29 @@ int print_linkinfo(const struct sockaddr_nl *who,
);
}
}
+ if (do_link && tb[IFLA_VFINFO] && tb[IFLA_NUM_VF]) {
+ SPRINT_BUF(b1);
+ struct rtattr *rta = tb[IFLA_VFINFO];
+ struct ifla_vf_info *ivi;
+ int i;
+ for (i = 0; i < *(int *)RTA_DATA(tb[IFLA_NUM_VF]); i++) {
+ if (rta->rta_type != IFLA_VFINFO) {
+ fprintf(stderr, "BUG: rta type is %d\n", rta->rta_type);
+ break;
+ }
+ ivi = RTA_DATA(rta);
+ fprintf(fp, "\n vf %d: MAC %s",
+ ivi->vf,
+ ll_addr_n2a((unsigned char *)&ivi->mac,
+ ETH_ALEN, 0, b1, sizeof(b1)));
+ if (ivi->vlan)
+ fprintf(fp, ", vlan %d", ivi->vlan);
+ if (ivi->tx_rate)
+ fprintf(fp, ", tx rate %d (Mbps_",
+ ivi->tx_rate);
+ rta = (struct rtattr *)((char *)rta + RTA_ALIGN(rta->rta_len));
+ }
+ }
fprintf(fp, "\n");
fflush(fp);
return 0;
diff --git a/ip/iplink.c b/ip/iplink.c
index 32cce24..88a5606 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
@@ -68,6 +68,9 @@ void iplink_usage(void)
fprintf(stderr, " [ mtu MTU ]\n");
fprintf(stderr, " [ netns PID ]\n");
fprintf(stderr, " [ alias NAME ]\n");
+ fprintf(stderr, " [ vf NUM [ mac LLADDR ]\n");
+ fprintf(stderr, " [ vlan VLANID ] ] \n");
+ fprintf(stderr, " [ rate TXRATE ] ] \n");
fprintf(stderr, " ip link show [ DEVICE ]\n");
if (iplink_have_newlink()) {
@@ -181,6 +184,7 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
int qlen = -1;
int mtu = -1;
int netns = -1;
+ int vf = -1;
ret = argc;
@@ -278,6 +282,41 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
req->i.ifi_flags |= IFF_NOARP;
} else
return on_off("noarp");
+ } else if (strcmp(*argv, "vf") == 0) {
+ NEXT_ARG();
+ if (get_integer(&vf, *argv, 0)) {
+ invarg("Invalid \"vf\" value\n", *argv);
+ }
+ } else if (matches(*argv, "mac") == 0) {
+ struct ifla_vf_mac ivm;
+ NEXT_ARG();
+ if (vf < 0)
+ missarg("vf");
+ ivm.vf = vf;
+ len = ll_addr_a2n((char *)ivm.mac, 32, *argv);
+ if (len < 0)
+ return -1;
+ addattr_l(&req->n, sizeof(*req), IFLA_VF_MAC, &ivm, sizeof(ivm));
+ } else if (matches(*argv, "vlan") == 0) {
+ struct ifla_vf_vlan ivv;
+ NEXT_ARG();
+ if (vf < 0)
+ missarg("vf");
+ if (get_integer(&ivv.vlan, *argv, 0)) {
+ invarg("Invalid \"vlan\" value\n", *argv);
+ }
+ ivv.vf = vf;
+ addattr_l(&req->n, sizeof(*req), IFLA_VF_VLAN, &ivv, sizeof(ivv));
+ } else if (matches(*argv, "rate") == 0) {
+ struct ifla_vf_tx_rate ivt;
+ NEXT_ARG();
+ if (vf < 0)
+ missarg("vf");
+ if (get_unsigned(&ivt.rate, *argv, 0)) {
+ invarg("Invalid \"rate\" value\n", *argv);
+ }
+ ivt.vf = vf;
+ addattr_l(&req->n, sizeof(*req), IFLA_VF_TX_RATE, &ivt, sizeof(ivt));
#ifdef IFF_DYNAMIC
} else if (matches(*argv, "dynamic") == 0) {
NEXT_ARG();
next prev parent reply other threads:[~2010-01-30 10:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-30 10:42 [iproute2 PATCH 1/4] if_link: Sync header with kernel to get new VF configuration defines Jeff Kirsher
2010-01-30 10:42 ` [iproute2 PATCH 2/4] libnetlink: Modify parser to track the first duplicated attributes Jeff Kirsher
2010-01-30 10:43 ` Jeff Kirsher [this message]
2010-01-30 10:43 ` [iproute2 PATCH 4/4] ip: Update man page to indicate current options Jeff Kirsher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100130104307.26719.64855.stgit@localhost.localdomain \
--to=jeffrey.t.kirsher@intel.com \
--cc=davem@davemloft.net \
--cc=gospo@redhat.com \
--cc=mitch.a.williams@intel.com \
--cc=netdev@vger.kernel.org \
--cc=shemminger@vyatta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).