From: Alexander Duyck <alexander.h.duyck@intel.com>
To: David Miller <davem@davemloft.net>
Cc: stephen@networkplumber.org, mitch.a.williams@intel.com,
ogerlitz@mellanox.com, gregory.v.rose@intel.com,
e1000-devel@lists.sourceforge.net, netdev@vger.kernel.org,
ronye@mellanox.com, shemminger@vyatta.com
Subject: Re: getting VF link info seems to be broken in 3.9-rc8
Date: Thu, 25 Apr 2013 14:10:14 -0700 [thread overview]
Message-ID: <51799BB6.5010807@intel.com> (raw)
In-Reply-To: <20130425.164911.746187123714054816.davem@davemloft.net>
On 04/25/2013 01:49 PM, David Miller wrote:
> From: Stephen Hemminger <stephen@networkplumber.org>
> Date: Thu, 25 Apr 2013 13:45:13 -0700
>
>> On Thu, 25 Apr 2013 13:36:06 -0700
>> Alexander Duyck <alexander.h.duyck@intel.com> wrote:
>>
>>> On 04/25/2013 01:25 PM, David Miller wrote:
>>>> From: Alexander Duyck <alexander.h.duyck@intel.com>
>>>> Date: Thu, 25 Apr 2013 13:20:24 -0700
>>>>
>>>>> On 04/25/2013 12:24 PM, David Miller wrote:
>>>>>> From: Alexander Duyck <alexander.h.duyck@intel.com>
>>>>>> Date: Thu, 25 Apr 2013 11:29:04 -0700
>>>>>>
>>>>>> diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
>>>>>> index b65441d..23854b5 100644
>>>>>> --- a/net/core/rtnetlink.c
>>>>>> +++ b/net/core/rtnetlink.c
>>>>>> @@ -1072,7 +1072,7 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
>>>>>> rcu_read_lock();
>>>>>> cb->seq = net->dev_base_seq;
>>>>>>
>>>>>> - if (nlmsg_parse(cb->nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX,
>>>>>> + if (nlmsg_parse(cb->nlh, sizeof(struct ifinfomsg), tb, IFLA_MAX,
>>>>>> ifla_policy) >= 0) {
>>>>>>
>>>>>> if (tb[IFLA_EXT_MASK])
>>>>>> @@ -1922,7 +1922,7 @@ static u16 rtnl_calcit(struct sk_buff *skb, struct nlmsghdr *nlh)
>>>>>> u32 ext_filter_mask = 0;
>>>>>> u16 min_ifinfo_dump_size = 0;
>>>>>>
>>>>>> - if (nlmsg_parse(nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX,
>>>>>> + if (nlmsg_parse(nlh, sizeof(struct ifinfomsg), tb, IFLA_MAX,
>>>>>> ifla_policy) >= 0) {
>>>>>> if (tb[IFLA_EXT_MASK])
>>>>>> ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]);
>>>>> I thought that as well. I tried reverting it and the issue is still there.
>>>>>
>>>>> However, I do think this may be part of the issue since I added a printk
>>>>> to dump nlmsg_attrlen before going into the nlmsg_parse and with
>>>>> ifinfomsg the attrlen is -12, with rtgenmsg it is 0.
>>>> I wonder if we are seeing two ways tools are making these calls, some are
>>>> passing rtgenmsg and some are passing ifinfomsg. The latter, I am mostly
>>>> convinced, is what we must see here from properly written applications.
>>>>
>>>> That would be really unfortunate, but seeing a nlmsg_attrlen() of -12 would
>>>> seem to confirm that a rtgenmsg was used.
>>>>
>>>> I guess you're using iproute2?
>>> Yes. All I am doing is ip link show and previously this would display
>>> VF info as well as PF. Now the VF info is not there.
>>>
>>> From what I can tell the problem call is rtnl_wilddump_req_filter since
>>> it is only passing a rtgenmsg and asking us to dump the link with the
>>> RTEXT_FILTER_VF filter mask.
>> It looks like a bug in the initial code for filter. in this case, it calls:
>> ip_list_flush_or_save
>> rtnl_wilddump_req_filter
>> which sends 'struct rtgenmsg'
>>
>> This was probably a mistake in the original flags addition, not sure if we can
>> fix it now that ABI is set. Probably have to revert the kernel change.
> But we know there are tools, just as widely deployed, passing in ifinfomsg.
> That's what trigged inclusion of the patch above in the first place.
>
> Let's just declare this an iproute2 bug, fix iproute2 to pass
> ifinfomsg too, and keep an eye out for when other folks run into this
> problem.
With the earlier patch reverted and the latest version iproute the
problem is resolved. I'm suspecting the other issue may have been a
64/32 bit alignment issue since it seems like that was addressed
recently. Odds are the message format for updated iproute will be
incompatible with legacy API anyway.
I will undo the revert and try tweaking the iproute2 call so that it
makes use of the ifinfomsg. If that works okay I can send a patch.
Thanks,
Alex
next prev parent reply other threads:[~2013-04-25 21:10 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-24 13:08 getting VF link info seems to be broken in 3.9-rc8 Or Gerlitz
2013-04-24 15:05 ` Williams, Mitch A
2013-04-25 18:29 ` Alexander Duyck
2013-04-25 19:24 ` David Miller
2013-04-25 20:20 ` Alexander Duyck
2013-04-25 20:25 ` David Miller
2013-04-25 20:36 ` Alexander Duyck
2013-04-25 20:45 ` Stephen Hemminger
2013-04-25 20:49 ` David Miller
2013-04-25 21:10 ` Alexander Duyck [this message]
2013-04-24 15:38 ` Greg Rose
2013-04-24 16:01 ` Greg Rose
2013-04-24 16:07 ` Or Gerlitz
2013-04-24 16:12 ` Li, Sibai
2013-04-24 16:08 ` Li, Sibai
2013-04-24 16:34 ` Or Gerlitz
2013-04-24 16:44 ` Li, Sibai
2013-04-24 16:45 ` Or Gerlitz
2013-04-24 16:48 ` Rose, Gregory V
2013-04-24 16:56 ` Li, Sibai
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=51799BB6.5010807@intel.com \
--to=alexander.h.duyck@intel.com \
--cc=davem@davemloft.net \
--cc=e1000-devel@lists.sourceforge.net \
--cc=gregory.v.rose@intel.com \
--cc=mitch.a.williams@intel.com \
--cc=netdev@vger.kernel.org \
--cc=ogerlitz@mellanox.com \
--cc=ronye@mellanox.com \
--cc=shemminger@vyatta.com \
--cc=stephen@networkplumber.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.