public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* ipv6 not bringing up due to qdisc_tx_is_noop failing
@ 2016-03-16 15:29 Nikolay Borisov
  2016-03-16 17:07 ` Hannes Frederic Sowa
  0 siblings, 1 reply; 4+ messages in thread
From: Nikolay Borisov @ 2016-03-16 15:29 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, SiteGround Operations

Hello Dave,

I've been chasing a rather strange problem and I saw you were the person
that authored most of the code involved so I'm addresing you, but will
be happy to receive assistance from any one feeling knowledgeable enough
on the issue.

Basically I have an infiniband card on which I want to run ipv6 to this
effect I load modules ib_qib (the infiniband card is qlogic QLE7342) and
then I load module ib_ipoib and I get :
IPv6: ADDRCONF(NETDEV_UP): ib0: link is not ready

even though for example ibping and all that works. This happens because
the check if (!addrconf_qdisc_ok(dev)) in addrconf_notify fails, since
the dev's txq ->qdisc points to noop_qdisc.

Now, here is what happens :

1. When the ib_ipoib module is loaded
register_netdevice->dev_init_scheduler is called which sets the device's
qdisc to noop_qdisc

2. Then via a netlink message the device is being activate, which calls
into dev_activate->attach_one_default_qdisc which attaches the newly
created default qdisc to the dev->sleeping_qdisc member

3. The addrconf_notify is invoked which fails the check since the
netdev_queue's qdisk member was never updated (just the sleeping_qdisc)
to anything different than the initial state (which is noop_qdisc).

I have stack traces which do show this sequence of events, so my
questions now are:

1. What's the difference between netdev_queue->qdisc and
netdev_queue->qdisc_sleeping. Git blaming indicates those member haves
existed even before the git history was started.

2. Shouldn't the netdev_queue->qdisc also be updated during
attach_one_default_qdisc?


Regards,
Nikolay

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: ipv6 not bringing up due to qdisc_tx_is_noop failing
  2016-03-16 15:29 ipv6 not bringing up due to qdisc_tx_is_noop failing Nikolay Borisov
@ 2016-03-16 17:07 ` Hannes Frederic Sowa
  2016-03-16 17:14   ` Nikolay Borisov
  0 siblings, 1 reply; 4+ messages in thread
From: Hannes Frederic Sowa @ 2016-03-16 17:07 UTC (permalink / raw)
  To: Nikolay Borisov, David Miller; +Cc: netdev, SiteGround Operations

Hello,

On 16.03.2016 16:29, Nikolay Borisov wrote:
> I have stack traces which do show this sequence of events, so my
> questions now are:
>
> 1. What's the difference between netdev_queue->qdisc and
> netdev_queue->qdisc_sleeping. Git blaming indicates those member haves
> existed even before the git history was started.

qdisc_sleeping is the qdisc you configure before the device is brought 
up. It should transition during carrier up to the normal qdisc.

> 2. Shouldn't the netdev_queue->qdisc also be updated during
> attach_one_default_qdisc?

Yes, do you have carrier up on your card?

Is this a regression, did this work for you and stopped working with a 
specific kernel version?

Thanks and bye,
Hannes

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: ipv6 not bringing up due to qdisc_tx_is_noop failing
  2016-03-16 17:07 ` Hannes Frederic Sowa
@ 2016-03-16 17:14   ` Nikolay Borisov
  2016-03-16 17:18     ` Hannes Frederic Sowa
  0 siblings, 1 reply; 4+ messages in thread
From: Nikolay Borisov @ 2016-03-16 17:14 UTC (permalink / raw)
  To: Hannes Frederic Sowa
  Cc: Nikolay Borisov, David Miller, netdev, SiteGround Operations

On Wed, Mar 16, 2016 at 7:07 PM, Hannes Frederic Sowa
<hannes@stressinduktion.org> wrote:
> Hello,

Hi,

>
> On 16.03.2016 16:29, Nikolay Borisov wrote:
>>
>> I have stack traces which do show this sequence of events, so my
>> questions now are:
>>
>> 1. What's the difference between netdev_queue->qdisc and
>> netdev_queue->qdisc_sleeping. Git blaming indicates those member haves
>> existed even before the git history was started.
>
> qdisc_sleeping is the qdisc you configure before the device is brought up.
> It should transition during carrier up to the normal qdisc.
>
>> 2. Shouldn't the netdev_queue->qdisc also be updated during
>> attach_one_default_qdisc?
>
> Yes, do you have carrier up on your card?

Actually no, the interface indeed shows no carrier yet ibping to other
hosts on the infiniband network works and ibstats shows the link as
being in up state. Do you have any ideas how to debug this further?

>
> Is this a regression, did this work for you and stopped working with a
> specific kernel version?

I don't think this is a regression.

>
> Thanks and bye,
> Hannes
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: ipv6 not bringing up due to qdisc_tx_is_noop failing
  2016-03-16 17:14   ` Nikolay Borisov
@ 2016-03-16 17:18     ` Hannes Frederic Sowa
  0 siblings, 0 replies; 4+ messages in thread
From: Hannes Frederic Sowa @ 2016-03-16 17:18 UTC (permalink / raw)
  To: Nikolay Borisov; +Cc: David Miller, netdev, SiteGround Operations

On 16.03.2016 18:14, Nikolay Borisov wrote:
> On Wed, Mar 16, 2016 at 7:07 PM, Hannes Frederic Sowa
> <hannes@stressinduktion.org> wrote:
>> On 16.03.2016 16:29, Nikolay Borisov wrote:
>>>
>>> I have stack traces which do show this sequence of events, so my
>>> questions now are:
>>>
>>> 1. What's the difference between netdev_queue->qdisc and
>>> netdev_queue->qdisc_sleeping. Git blaming indicates those member haves
>>> existed even before the git history was started.
>>
>> qdisc_sleeping is the qdisc you configure before the device is brought up.
>> It should transition during carrier up to the normal qdisc.
>>
>>> 2. Shouldn't the netdev_queue->qdisc also be updated during
>>> attach_one_default_qdisc?
>>
>> Yes, do you have carrier up on your card?
>
> Actually no, the interface indeed shows no carrier yet ibping to other
> hosts on the infiniband network works and ibstats shows the link as
> being in up state. Do you have any ideas how to debug this further?

Probably something in the driver should call netif_carrier_on if carrier 
is connectivity is available. I don't have enough knowledge about IB how 
carrier detection is done there.

>> Is this a regression, did this work for you and stopped working with a
>> specific kernel version?
>
> I don't think this is a regression.

Okay, thanks.

Bye,
Hannes

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-03-16 17:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-16 15:29 ipv6 not bringing up due to qdisc_tx_is_noop failing Nikolay Borisov
2016-03-16 17:07 ` Hannes Frederic Sowa
2016-03-16 17:14   ` Nikolay Borisov
2016-03-16 17:18     ` Hannes Frederic Sowa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox