Re: [PATCH v9 0/8] thunderbolt: Introducing Thunderbolt(TM) Networking

From: Simon Guinot
Date: Tue Nov 22 2016 - 12:28:41 EST


On Fri, Nov 18, 2016 at 12:20:07PM +0100, Simon Guinot wrote:
> On Fri, Nov 18, 2016 at 08:48:36AM +0000, Levy, Amir (Jer) wrote:
> > On Tue, Nov 15 2016, 12:59 PM, Simon Guinot wrote:
> > > On Wed, Nov 09, 2016 at 03:42:53PM +0000, Levy, Amir (Jer) wrote:
> > > > On Wed, Nov 9 2016, 04:36 PM, Simon Guinot wrote:
> > > > > Hi Amir,
> > > > >
> > > > > I have an ASUS "All Series/Z87-DELUXE/QUAD" motherboard with a
> > > > > Thunderbolt 2 "Falcon Ridge" chipset (device ID 156d).
> > > > >
> > > > > Is the thunderbolt-icm driver supposed to work with this chipset ?
> > > > >
> > > >
> > > > Yes, the thunderbolt-icm supports Falcon Ridge, device ID 156c.
> > > > 156d is the bridge -
> > > > http://lxr.free-electrons.com/source/include/linux/pci_ids.h#L2619
> > > >
> > > > > I have installed both a 4.8.6 Linux kernel (patched with your v9
> > > > > series) and the thunderbolt-software-daemon (27 october release)
> > > > > inside a Debian system (Jessie).
> > > > >
> > > > > If I connect the ASUS motherboard with a MacBook Pro (Thunderbolt
> > > > > 2, device ID 156c), I can see that the thunderbolt-icm driver is
> > > > > loaded and that the thunderbolt-software-daemon is well started.
> > > > > But the Ethernet interface is not created.
> > > > >
> > > > > I have attached to this email the syslog file. There is the logs
> > > > > from both the kernel and the daemon inside. Note that the daemon
> > > > > logs are everything but clear about what could be the issue. Maybe
> > > > > I missed some kind of configuration ? But I failed to find any
> > > > > valuable information about configuring the driver and/or the
> > > > > daemon in
> > > the various documentation files.
> > > > >
> > > > > Please, can you provide some guidance ? I'd really like to test
> > > > > your patch series.
> > > >
> > > > First, thank you very much for willing to test it.
> > > > Thunderbolt Networking support was added during Falcon Ridge, in the
> > > latest FR images.
> > > > Do you know which Thunderbolt image version you have on your system?
> > > > Currently I submitted only Thunderbolt Networking feature in Linux,
> > > > and we plan to add more features like reading the image version and
> > > updating the image.
> > > > If you don't know the image version, the only thing I can suggest is
> > > > to load windows, install thunderbolt SW and check in the Thunderbolt
> > > application the image version.
> > > > To know if image update is needed, you can check -
> > > > https://thunderbolttechnology.net/updates
> > >
> > > Hi Amir,
> > >
> > > From the Windows Thunderbolt software, I can read 13.00 for the
> > > firmware version. And from https://thunderbolttechnology.net/updates,
> > > I can see that there is no update available for my ASUS motherboard.
> > >
> > > Am I good to go ?
> > >
> >
> > Thunderbolt Networking is supported on both Thunderbolt(tm) 2 and Thunderbolt(tm) 3 systems.
> > Thunderbolt 2 systems must have updated NVM (version 25 or later) in order for the functionality to work properly.
> > If the system does not have the update, please contact the OEM directly for an updated NVM.
> > For best functionality and support, Intel recommends using Thunderbolt 3 systems for all validation and testing.
>
> Maybe it is worth mentioning in the documentation and/or in the Kconfig
> help message that a minimal firmware version is needed for Thunderbolt 2
> controllers.
>
> It would have saved some time for me :)
>
> >
> > > BTW, it is quite a shame that the Thunderbolt firmware version can't
> > > be read from Linux.
> > >
> >
> > This is WIP, once this patch will be upstream, we will be able to focus more
> > on aligning Linux with the Thunderbolt features that we have for windows.
>
> Well, I rather see the firmware identification and update as basic
> features on the top of which ones you can build a driver. For example in
> this case this would allow the ICM driver and/or the userland daemon to
> exit with a useful error message rather than just not working without any
> explanation.
>
> Next week I'll try the driver with a Thunderbolt 3 controller.

Hi Amir,

I tested the thunderbolt-icm driver (v9 series) on an Gigabyte
motherboard (Z170X-UD5 TH-CF) with a Thunderbolt 3 controller (Alpine
Ridge 4C).

I can see that the network interface is well created when the
motherboard is connected to a MacBook Pro (Thunderbolt 2 or 3).

And here are the TCP bandwidths measured using the iperf3 benchmark:

- MacBook Pro Thunderbolt 2: 8.46Gbits/sec
- MacBook Pro Thunderbolt 3: 11.8Gbits/sec

Are this results consistent with your expectations ?

From the MacOS system interface on the MacBook Pro Thunderbolt 3,
I noticed that the interface appears as dual lane (2x 20Gb/sec). But
when two MacBook Pro are connected together, the interface appears as
single lane (1x 40Gb/sec). Is some lane bonding support missing in the
Linux implementation ?

Here are a couple of additional questions:

- When the network interface is created, there is no IP address
assigned (or negotiated ?) on the Linux side. But it is done on the
MacOS side. And in the Linux kernel logs I can also read the message:
"ready for ThunderboltIP negotiation". Is there something missing or
not working on the Linux side ? What is the correct way to configure
or negotiate the IP address. For my tests I did it manually...

- When the Linux machine is started with the Thunderbolt wire already
connected to a MacBook Pro, sometimes (but not every time) the
network interface is not created. The Thunderbolt wire needs to be
replugged.

FWIW you get my

Tested-by: Simon Guinot <simon.guinot@xxxxxxxxxxxx>

Simon

Attachment: signature.asc
Description: PGP signature