RE: ipoib hw multicast addresses

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>-----Original Message-----
>From: Hal Rosenstock [mailto:hal@xxxxxxxxxxxxxxxxxx]
>Sent: Tuesday, June 12, 2018 3:05 PM
>To: Ruhl, Michael J <michael.j.ruhl@xxxxxxxxx>; Jason Gunthorpe
><jgg@xxxxxxxx>
>Cc: RDMA mailing list <linux-rdma@xxxxxxxxxxxxxxx>
>Subject: Re: ipoib hw multicast addresses
>
>On 6/12/2018 12:06 PM, Ruhl, Michael J wrote:
>> When the netdev device is registered (netdev_register) from
>> ipoib_add_port(), the first (incorrect) "HW" address is added to the
>> device MC list:
>>
>> link  00:ff:ff:ff:ff:12:60:1b:80:00:00:00:00:00:00:00:00:00:00:01
>>                                                     ^^^^  (invalid PKEY)
>
>Per RFC 4391, format is:
>   |   8    |  4 |  4 |     16 bits     | 16 bits |      80 bits      |
>   +------ -+----+----+-----------------+---------+-------------------+
>   |11111111|0001|scop|<IPoIB signature>|< P_Key >|      group ID     |
>   +--------+----+----+-----------------+---------+-------------------+
>
>so this is PKey 0x8000 for IPv6 (0x601b) multicast group ID 1 which is
>the "all nodes address".
>
>> The PKEY has not been set, so this address always will be wrong.
>
>At init time, IBA requires that pkey index 0 has the full default pkey
>(0x8000) so it probably comes from there.

Hi Hal,

The IBTA spec (section 10.9.1.2) says that the default pkey is 0xFFFF.
The invalid pkey is "low-order 15 bits are all zero".

So I am confused by the usage of 0x8000 in RFC 4391.

During IPoIB module init, the value is queried from the PKEY table, but
this occurs before the PKEY table has been set.

Should this value be set to 0xFFFF rather than 0x8000 before the
netdev_registration() is called?

That still doesn't seem right.

The net_device_ops callback function ndo_open() is called sometime after
the registration. 

It looks at the given pkey (0x8000) and determines that it is invalid and give
the warning:

ib0: P_Key 0x8000 is Invalid

So the init path sets up the incorrect value.  The init call back exits without
doing any work.

Or am I misunderstanding your comment? :)

Thanks,

Mike

��.n��������+%������w��{.n�����{���fk��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux