1. 01 Nov, 2018 1 commit
    • Serge Semin's avatar
      ntb: idt: Set PCIe bus address to BARLIMITx · 37a3e969
      Serge Semin authored
      IDT NTB driver sets the upper limit of actual translation address
      being written to the corresponding memory window setup. It is achieved
      by BARLIMITx register initialization. Needless to say, that the register
      works within PCIe bus address space.
      
      In general CPU and PCIe address spaces are different. It means,
      that addresses used for Memory TLPs routine can be different from
      CPU addresses. While in most of cases they are the same, there are
      exceptions when the proper mapping must be performed to have the
      portable driver code. There used to be a virt_to_bus()/bus_to_virt()
      interface for this purpose. But it's deprecated now. It was also a
      mistake to use pci_resource_start() since the return address of the
      method is at the CPU address space. In order to achieve the desired
      purpose we need to use pci_bus_address() helper. This method shall
      return a PCIe bus base address of the corresponding BAR resource.
      Signed-off-by: default avatarSerge Semin <fancer.lancer@gmail.com>
      Acked-by: default avatarAllen Hubbe <allenbh@gmail.com>
      Signed-off-by: default avatarJon Mason <jdmason@kudzu.us>
      37a3e969
  2. 31 Oct, 2018 3 commits
  3. 22 Oct, 2018 8 commits
  4. 21 Oct, 2018 3 commits
  5. 20 Oct, 2018 11 commits
  6. 19 Oct, 2018 13 commits
  7. 18 Oct, 2018 1 commit
    • Stefano Brivio's avatar
      ip6_tunnel: Fix encapsulation layout · d4d576f5
      Stefano Brivio authored
      Commit 058214a4 ("ip6_tun: Add infrastructure for doing
      encapsulation") added the ip6_tnl_encap() call in ip6_tnl_xmit(), before
      the call to ipv6_push_frag_opts() to append the IPv6 Tunnel Encapsulation
      Limit option (option 4, RFC 2473, par. 5.1) to the outer IPv6 header.
      
      As long as the option didn't actually end up in generated packets, this
      wasn't an issue. Then commit 89a23c8b ("ip6_tunnel: Fix missing tunnel
      encapsulation limit option") fixed sending of this option, and the
      resulting layout, e.g. for FoU, is:
      
      .-------------------.------------.----------.-------------------.----- - -
      | Outer IPv6 Header | UDP header | Option 4 | Inner IPv6 Header | Payload
      '-------------------'------------'----------'-------------------'----- - -
      
      Needless to say, FoU and GUE (at least) won't work over IPv6. The option
      is appended by default, and I couldn't find a way to disable it with the
      current iproute2.
      
      Turn this into a more reasonable:
      
      .-------------------.----------.------------.-------------------.----- - -
      | Outer IPv6 Header | Option 4 | UDP header | Inner IPv6 Header | Payload
      '-------------------'----------'------------'-------------------'----- - -
      
      With this, and with 84dad559 ("udp6: fix encap return code for
      resubmitting"), FoU and GUE work again over IPv6.
      
      Fixes: 058214a4 ("ip6_tun: Add infrastructure for doing encapsulation")
      Signed-off-by: default avatarStefano Brivio <sbrivio@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d4d576f5