From: Eric Lemoine <eric.lemoine@gmail.com>
To: hadi@cyberus.ca
Cc: netdev@oss.sgi.com
Subject: Re: [PATCH] Allow setting dev->weight using ip(8)
Date: Mon, 30 Aug 2004 16:35:57 +0200 [thread overview]
Message-ID: <5cac192f0408300735f05aa2d@mail.gmail.com> (raw)
In-Reply-To: <1093869740.1076.587.camel@jzny.localdomain>
[-- Attachment #1: Type: text/plain, Size: 224 bytes --]
> As Dave pointed out any new attributes go to the end of the enumeration.
> It may not matter in this case if Dave hasnt applied Thomas' patch.
> Otherwise IFLA_WEIGHT should be last.
Right.
New patch attached.
--
Eric
[-- Attachment #2: patch-qlen_mtu_weight_setget-2-6-5-rc3-ben0 --]
[-- Type: application/octet-stream, Size: 3646 bytes --]
===== include/linux/rtnetlink.h 1.32 vs edited =====
--- 1.32/include/linux/rtnetlink.h 2004-01-16 11:05:24 +01:00
+++ edited/include/linux/rtnetlink.h 2004-08-26 12:41:37 +02:00
@@ -544,6 +544,9 @@
#define IFLA_WIRELESS IFLA_WIRELESS
IFLA_PROTINFO, /* Protocol specific information for a link */
#define IFLA_PROTINFO IFLA_PROTINFO
+ IFLA_TXQLEN,
+ IFLA_MAP,
+ IFLA_WEIGHT,
};
===== net/core/rtnetlink.c 1.18 vs edited =====
--- 1.18/net/core/rtnetlink.c 2003-09-28 18:51:50 +02:00
+++ edited/net/core/rtnetlink.c 2004-08-26 12:42:52 +02:00
@@ -166,31 +166,58 @@
r->ifi_family = AF_UNSPEC;
r->ifi_type = dev->type;
r->ifi_index = dev->ifindex;
- r->ifi_flags = dev->flags;
+ r->ifi_flags = dev_get_flags(dev);
r->ifi_change = change;
- if (!netif_running(dev) || !netif_carrier_ok(dev))
- r->ifi_flags &= ~IFF_RUNNING;
- else
- r->ifi_flags |= IFF_RUNNING;
-
RTA_PUT(skb, IFLA_IFNAME, strlen(dev->name)+1, dev->name);
+
+ if (1) {
+ u32 txqlen = dev->tx_queue_len;
+ RTA_PUT(skb, IFLA_TXQLEN, sizeof(txqlen), &txqlen);
+ }
+
+ if (1) {
+ u32 weight = dev->weight;
+ RTA_PUT(skb, IFLA_WEIGHT, sizeof(weight), &weight);
+ }
+
+ if (1) {
+ struct ifmap map = {
+ .mem_start = dev->mem_start,
+ .mem_end = dev->mem_end,
+ .base_addr = dev->base_addr,
+ .irq = dev->irq,
+ .dma = dev->dma,
+ .port = dev->if_port,
+ };
+ RTA_PUT(skb, IFLA_MAP, sizeof(map), &map);
+ }
+
if (dev->addr_len) {
RTA_PUT(skb, IFLA_ADDRESS, dev->addr_len, dev->dev_addr);
RTA_PUT(skb, IFLA_BROADCAST, dev->addr_len, dev->broadcast);
}
+
if (1) {
- unsigned mtu = dev->mtu;
+ u32 mtu = dev->mtu;
RTA_PUT(skb, IFLA_MTU, sizeof(mtu), &mtu);
}
- if (dev->ifindex != dev->iflink)
- RTA_PUT(skb, IFLA_LINK, sizeof(int), &dev->iflink);
+
+ if (dev->ifindex != dev->iflink) {
+ u32 iflink = dev->iflink;
+ RTA_PUT(skb, IFLA_LINK, sizeof(iflink), &iflink);
+ }
+
if (dev->qdisc_sleeping)
RTA_PUT(skb, IFLA_QDISC,
strlen(dev->qdisc_sleeping->ops->id) + 1,
dev->qdisc_sleeping->ops->id);
- if (dev->master)
- RTA_PUT(skb, IFLA_MASTER, sizeof(int), &dev->master->ifindex);
+
+ if (dev->master) {
+ u32 master = dev->master->ifindex;
+ RTA_PUT(skb, IFLA_MASTER, sizeof(master), &master);
+ }
+
if (dev->get_stats) {
unsigned long *stats = (unsigned long*)dev->get_stats(dev);
if (stats) {
@@ -246,6 +273,30 @@
err = -EINVAL;
+ if (ifm->ifi_flags)
+ dev_change_flags(dev, ifm->ifi_flags);
+
+ if (ida[IFLA_MAP - 1]) {
+ if (!dev->set_config) {
+ err = -EOPNOTSUPP;
+ goto out;
+ }
+
+ if (!netif_device_present(dev)) {
+ err = -ENODEV;
+ goto out;
+ }
+
+ if (ida[IFLA_MAP - 1]->rta_len != RTA_LENGTH(sizeof(struct ifmap)))
+ goto out;
+
+ err = dev->set_config(dev, (struct ifmap *)
+ RTA_DATA(ida[IFLA_MAP - 1]));
+
+ if (err)
+ goto out;
+ }
+
if (ida[IFLA_ADDRESS - 1]) {
if (!dev->set_mac_address) {
err = -EOPNOTSUPP;
@@ -268,6 +319,30 @@
goto out;
memcpy(dev->broadcast, RTA_DATA(ida[IFLA_BROADCAST - 1]),
dev->addr_len);
+ }
+
+ if (ida[IFLA_MTU - 1]) {
+ if (ida[IFLA_MTU - 1]->rta_len != RTA_LENGTH(sizeof(u32)))
+ goto out;
+ err = dev_set_mtu(dev, *((u32 *) RTA_DATA(ida[IFLA_MTU - 1])));
+
+ if (err)
+ goto out;
+
+ }
+
+ if (ida[IFLA_TXQLEN - 1]) {
+ if (ida[IFLA_TXQLEN - 1]->rta_len != RTA_LENGTH(sizeof(u32)))
+ goto out;
+
+ dev->tx_queue_len = *((u32 *) RTA_DATA(ida[IFLA_TXQLEN - 1]));
+ }
+
+ if (ida[IFLA_WEIGHT -1 ]) {
+ if (ida[IFLA_WEIGHT - 1]->rta_len != RTA_LENGTH(sizeof(u32)))
+ goto out;
+
+ dev->weight = *((u32 *) RTA_DATA(ida[IFLA_WEIGHT - 1]));
}
err = 0;
next prev parent reply other threads:[~2004-08-30 14:35 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-30 10:56 [PATCH] Allow setting dev->weight using ip(8) Eric Lemoine
2004-08-30 12:27 ` jamal
2004-08-30 12:42 ` jamal
2004-08-30 14:35 ` Eric Lemoine [this message]
2004-08-30 23:58 ` David S. Miller
2004-08-31 9:58 ` Eric Lemoine
2004-08-30 14:33 ` Eric Lemoine
2004-09-08 13:45 ` Thomas Graf
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=5cac192f0408300735f05aa2d@mail.gmail.com \
--to=eric.lemoine@gmail.com \
--cc=hadi@cyberus.ca \
--cc=netdev@oss.sgi.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).