06 Aug, 2020

1 commit

  • Pull networking updates from David Miller:

    1) Support 6Ghz band in ath11k driver, from Rajkumar Manoharan.

    2) Support UDP segmentation in code TSO code, from Eric Dumazet.

    3) Allow flashing different flash images in cxgb4 driver, from Vishal
    Kulkarni.

    4) Add drop frames counter and flow status to tc flower offloading,
    from Po Liu.

    5) Support n-tuple filters in cxgb4, from Vishal Kulkarni.

    6) Various new indirect call avoidance, from Eric Dumazet and Brian
    Vazquez.

    7) Fix BPF verifier failures on 32-bit pointer arithmetic, from
    Yonghong Song.

    8) Support querying and setting hardware address of a port function via
    devlink, use this in mlx5, from Parav Pandit.

    9) Support hw ipsec offload on bonding slaves, from Jarod Wilson.

    10) Switch qca8k driver over to phylink, from Jonathan McDowell.

    11) In bpftool, show list of processes holding BPF FD references to
    maps, programs, links, and btf objects. From Andrii Nakryiko.

    12) Several conversions over to generic power management, from Vaibhav
    Gupta.

    13) Add support for SO_KEEPALIVE et al. to bpf_setsockopt(), from Dmitry
    Yakunin.

    14) Various https url conversions, from Alexander A. Klimov.

    15) Timestamping and PHC support for mscc PHY driver, from Antoine
    Tenart.

    16) Support bpf iterating over tcp and udp sockets, from Yonghong Song.

    17) Support 5GBASE-T i40e NICs, from Aleksandr Loktionov.

    18) Add kTLS RX HW offload support to mlx5e, from Tariq Toukan.

    19) Fix the ->ndo_start_xmit() return type to be netdev_tx_t in several
    drivers. From Luc Van Oostenryck.

    20) XDP support for xen-netfront, from Denis Kirjanov.

    21) Support receive buffer autotuning in MPTCP, from Florian Westphal.

    22) Support EF100 chip in sfc driver, from Edward Cree.

    23) Add XDP support to mvpp2 driver, from Matteo Croce.

    24) Support MPTCP in sock_diag, from Paolo Abeni.

    25) Commonize UDP tunnel offloading code by creating udp_tunnel_nic
    infrastructure, from Jakub Kicinski.

    26) Several pci_ --> dma_ API conversions, from Christophe JAILLET.

    27) Add FLOW_ACTION_POLICE support to mlxsw, from Ido Schimmel.

    28) Add SK_LOOKUP bpf program type, from Jakub Sitnicki.

    29) Refactor a lot of networking socket option handling code in order to
    avoid set_fs() calls, from Christoph Hellwig.

    30) Add rfc4884 support to icmp code, from Willem de Bruijn.

    31) Support TBF offload in dpaa2-eth driver, from Ioana Ciornei.

    32) Support XDP_REDIRECT in qede driver, from Alexander Lobakin.

    33) Support PCI relaxed ordering in mlx5 driver, from Aya Levin.

    34) Support TCP syncookies in MPTCP, from Flowian Westphal.

    35) Fix several tricky cases of PMTU handling wrt. briding, from Stefano
    Brivio.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2056 commits)
    net: thunderx: initialize VF's mailbox mutex before first usage
    usb: hso: remove bogus check for EINPROGRESS
    usb: hso: no complaint about kmalloc failure
    hso: fix bailout in error case of probe
    ip_tunnel_core: Fix build for archs without _HAVE_ARCH_IPV6_CSUM
    selftests/net: relax cpu affinity requirement in msg_zerocopy test
    mptcp: be careful on subflow creation
    selftests: rtnetlink: make kci_test_encap() return sub-test result
    selftests: rtnetlink: correct the final return value for the test
    net: dsa: sja1105: use detected device id instead of DT one on mismatch
    tipc: set ub->ifindex for local ipv6 address
    ipv6: add ipv6_dev_find()
    net: openvswitch: silence suspicious RCU usage warning
    Revert "vxlan: fix tos value before xmit"
    ptp: only allow phase values lower than 1 period
    farsync: switch from 'pci_' to 'dma_' API
    wan: wanxl: switch from 'pci_' to 'dma_' API
    hv_netvsc: do not use VF device if link is down
    dpaa2-eth: Fix passing zero to 'PTR_ERR' warning
    net: macb: Properly handle phylink on at91sam9x
    ...

    Linus Torvalds
     

24 Jun, 2020

1 commit


23 Jun, 2020

1 commit

  • The end-to-end (E2E) workaround is needed for Falcon Ridge (TBT 2)
    controller when E2E is enabled for both ends of the host-to-host
    connection. However, we never supported full E2E in the first place so
    this code is not necessary at the moment. Further this allows us to use
    all available rings for data except ring 0 which is reserved for the
    control path.

    The complete E2E flow control is explained in the USB4 spec so we may
    add it back later if needed but at least the networking driver seems to
    work fine without, and the higher level stack, like TCP will retransmit
    lost packets anyway.

    Signed-off-by: Mika Westerberg

    Mika Westerberg
     

31 Jul, 2019

1 commit


18 Apr, 2019

1 commit

  • The XDomain protocol messages may start as soon as Thunderbolt control
    channel is started. This means that if the other host starts sending
    ThunderboltIP packets early enough they will be passed to the network
    driver which then gets confused because its resume hook is not called
    yet.

    Fix this by unregistering the ThunderboltIP protocol handler when
    suspending and registering it back on resume.

    Signed-off-by: Mika Westerberg
    Acked-by: David S. Miller

    Mika Westerberg
     

30 Aug, 2018

1 commit


13 Feb, 2018

2 commits

  • The control channel calls registered callbacks when control messages
    such as XDomain protocol messages are received. The control channel
    handling is done in a worker running on system workqueue which means the
    networking driver can't run tear down flow which includes sending
    disconnect request and waiting for a reply in the same worker. Otherwise
    reply is never received (as the work is already running) and the
    operation times out.

    To fix this run disconnect ThunderboltIP flow asynchronously once
    ThunderboltIP logout message is received.

    Fixes: e69b6c02b4c3 ("net: Add support for networking over Thunderbolt cable")
    Signed-off-by: Mika Westerberg
    Cc: stable@vger.kernel.org
    Signed-off-by: David S. Miller

    Mika Westerberg
     
  • When suspending to mem or disk the Thunderbolt controller typically goes
    down as well tearing down the connection automatically. However, when
    suspend to idle is used this does not happen so we need to make sure the
    connection is properly disconnected before it can be re-established
    during resume.

    Fixes: e69b6c02b4c3 ("net: Add support for networking over Thunderbolt cable")
    Signed-off-by: Mika Westerberg
    Cc: stable@vger.kernel.org
    Signed-off-by: David S. Miller

    Mika Westerberg
     

25 Nov, 2017

1 commit

  • Commit 86dabda426ac ("net: thunderbolt: Clear finished Tx frame bus
    address in tbnet_tx_callback()") fixed a DMA-API violation where the
    driver called dma_unmap_page() in tbnet_free_buffers() for a bus address
    that might already be unmapped. The fix was to zero out the bus address
    of a frame in tbnet_tx_callback().

    However, as pointed out by David Miller, zero might well be valid
    mapping (at least in theory) so it is not good idea to use it here.

    It turns out that we don't need the whole map/unmap dance for Tx buffers
    at all. Instead we can map the buffers when they are initially allocated
    and unmap them when the interface is brought down. In between we just
    DMA sync the buffers for the CPU or device as needed.

    Signed-off-by: Mika Westerberg
    Signed-off-by: David S. Miller

    Mika Westerberg
     

11 Nov, 2017

1 commit

  • When Thunderbolt network interface is disabled or when the cable is
    unplugged the driver releases all allocated buffers by calling
    tbnet_free_buffers() for each ring. This function then calls
    dma_unmap_page() for each buffer it finds where bus address is non-zero.
    Now, we only clear this bus address when the Tx buffer is sent to the
    hardware so it is possible that the function finds an entry that has
    already been unmapped.

    Enabling DMA-API debugging catches this as well:

    thunderbolt 0000:06:00.0: DMA-API: device driver tries to free DMA
    memory it has not allocated [device address=0x0000000068321000] [size=4096 bytes]

    Fix this by clearing the bus address of a Tx frame right after we have
    unmapped the buffer.

    Signed-off-by: Mika Westerberg
    Signed-off-by: David S. Miller

    Mika Westerberg
     

19 Oct, 2017

1 commit

  • There is a problem when we do:

    sequence = pkg->hdr.length_sn & TBIP_HDR_SN_MASK;
    sequence >>= TBIP_HDR_SN_SHIFT;

    TBIP_HDR_SN_SHIFT is 27, and right shifting a u8 27 bits is always
    going to result in zero. The fix is to declare these variables as u32.

    Fixes: e69b6c02b4c3 ("net: Add support for networking over Thunderbolt cable")
    Signed-off-by: Dan Carpenter
    Acked-by: Yehezkel Bernat
    Signed-off-by: David S. Miller

    Dan Carpenter
     

03 Oct, 2017

1 commit

  • ThunderboltIP is a protocol created by Apple to tunnel IP/ethernet
    traffic over a Thunderbolt cable. The protocol consists of configuration
    phase where each side sends ThunderboltIP login packets (the protocol is
    determined by UUID in the XDomain packet header) over the configuration
    channel. Once both sides get positive acknowledgment to their login
    packet, they configure high-speed DMA path accordingly. This DMA path is
    then used to transmit and receive networking traffic.

    This patch creates a virtual ethernet interface the host software can
    use in the same way as any other networking interface. Once the
    interface is brought up successfully network packets get tunneled over
    the Thunderbolt cable to the remote host and back.

    The connection is terminated by sending a ThunderboltIP logout packet
    over the configuration channel. We do this when the network interface is
    brought down by user or the driver is unloaded.

    Signed-off-by: Amir Levy
    Signed-off-by: Michael Jamet
    Signed-off-by: Mika Westerberg
    Reviewed-by: Yehezkel Bernat
    Reviewed-by: Andy Shevchenko
    Signed-off-by: David S. Miller

    Amir Levy