1. 11 May, 2018 23 commits
    • Ganesh Goudar's avatar
      cxgb4: avoid schedule while atomic · 443e2dab
      Ganesh Goudar authored
      do not sleep while adding or deleting udp tunnel.
      
      Fixes: 846eac3f ("cxgb4: implement udp tunnel callbacks")
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      443e2dab
    • Ganesh Goudar's avatar
      cxgb4: enable inner header checksum calculation · c50ae55e
      Ganesh Goudar authored
      set cntrl bits to indicate whether inner header checksum
      needs to be calculated whenever the packet is an encapsulated
      packet and enable supported encap features.
      
      Fixes: d0a1299c ("cxgb4: add support for vxlan segmentation offload")
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c50ae55e
    • Arjun Vynipadath's avatar
      cxgb4: Fix {vxlan/geneve}_port initialization · 0e249898
      Arjun Vynipadath authored
      adapter->rawf_cnt was not initialized, thereby
      ndo_udp_tunnel_{add/del} was returning immediately
      without initializing {vxlan/geneve}_port.
      Also initializes mps_encap_entry refcnt.
      
      Fixes: 846eac3f ("cxgb4: implement udp tunnel callbacks")
      Signed-off-by: default avatarArjun Vynipadath <arjun@chelsio.com>
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0e249898
    • Ganesh Goudar's avatar
      cxgb4: Add new T5 device id · f4a313b9
      Ganesh Goudar authored
      Add 0x50ad device id for new T5 card.
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f4a313b9
    • Tonghao Zhang's avatar
    • Tonghao Zhang's avatar
      bonding: use the skb_get/set_queue_mapping · ae35c6f7
      Tonghao Zhang authored
      Use the skb_get_queue_mapping, skb_set_queue_mapping
      and skb_rx_queue_recorded for skb queue_mapping in bonding
      driver, but not use it directly.
      Signed-off-by: default avatarTonghao Zhang <xiangxia.m.yue@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ae35c6f7
    • Tonghao Zhang's avatar
      bonding: replace the return value type · dbdc8a21
      Tonghao Zhang authored
      The method ndo_start_xmit is defined as returning a
      netdev_tx_t, which is a typedef for an enum type,
      but the implementation in this driver returns an int.
      Signed-off-by: default avatarTonghao Zhang <xiangxia.m.yue@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dbdc8a21
    • William Tu's avatar
      erspan: auto detect truncated ipv6 packets. · d5db21a3
      William Tu authored
      Currently the truncated bit is set only when 1) the mirrored packet
      is larger than mtu and 2) the ipv4 packet tot_len is larger than
      the actual skb->len.  This patch adds another case for detecting
      whether ipv6 packet is truncated or not, by checking the ipv6 header
      payload_len and the skb->len.
      Reported-by: default avatarXiaoyan Jin <xiaoyanj@vmware.com>
      Signed-off-by: default avatarWilliam Tu <u9012063@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d5db21a3
    • David S. Miller's avatar
      Merge branch 'mlxsw-spectrum_span-Two-minor-adjustments' · 755bbc1c
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: spectrum_span: Two minor adjustments
      
      Petr says:
      
      This patch set fixes a couple of nits in mlxsw's SPAN implementation:
      two counts of inaccurate variable name and one count of unsuitable error
      code, fixed, respectively, in patches #1 and #2.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      755bbc1c
    • Petr Machata's avatar
      mlxsw: spectrum_span: Use a more fitting error code · c41c0dd7
      Petr Machata authored
      ENOENT is suitable when an item is looked for in a collection and can't
      be found. The failure here is actually a depletion of a resource, where
      ENOBUFS is the more fitting error code.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c41c0dd7
    • Petr Machata's avatar
      mlxsw: spectrum_span: Rename misnamed variable l3edev · fc74ecbc
      Petr Machata authored
      Calling the variable l3edev was relevant when neighbor lookup was the
      last stage in the simulated pipeline. Now that mlxsw handles bridges and
      vlan devices as well, calling it "L3" is a misnomer.
      
      Thus in mlxsw_sp_span_dmac(), rename to "dev", because that function is
      just a service routine where the distinction between tunnel and egress
      device isn't necessary.
      
      In mlxsw_sp_span_entry_tunnel_parms_common(), rename to "edev" to
      emphasize that the routine traces packet egress.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fc74ecbc
    • Eric Dumazet's avatar
      udp: avoid refcount_t saturation in __udp_gso_segment() · 575b65bc
      Eric Dumazet authored
      For some reason, Willem thought that the issue we fixed for TCP
      in commit 7ec318fe ("tcp: gso: avoid refcount_t warning from
      tcp_gso_segment()") was not relevant for UDP GSO.
      
      But syzbot found its way.
      
      refcount_t: saturated; leaking memory.
      WARNING: CPU: 0 PID: 10261 at lib/refcount.c:78 refcount_add_not_zero+0x2d4/0x320 lib/refcount.c:78
      Kernel panic - not syncing: panic_on_warn set ...
      
      CPU: 0 PID: 10261 Comm: syz-executor5 Not tainted 4.17.0-rc3+ #38
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x1b9/0x294 lib/dump_stack.c:113
       panic+0x22f/0x4de kernel/panic.c:184
       __warn.cold.8+0x163/0x1b3 kernel/panic.c:536
       report_bug+0x252/0x2d0 lib/bug.c:186
       fixup_bug arch/x86/kernel/traps.c:178 [inline]
       do_error_trap+0x1de/0x490 arch/x86/kernel/traps.c:296
       do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:315
       invalid_op+0x14/0x20 arch/x86/entry/entry_64.S:992
      RIP: 0010:refcount_add_not_zero+0x2d4/0x320 lib/refcount.c:78
      RSP: 0018:ffff880196db6b90 EFLAGS: 00010282
      RAX: 0000000000000026 RBX: 00000000ffffff01 RCX: ffffc900040d9000
      RDX: 0000000000004a29 RSI: ffffffff8160f6f1 RDI: ffff880196db66f0
      RBP: ffff880196db6c78 R08: ffff8801b33d6740 R09: 0000000000000002
      R10: ffff8801b33d6740 R11: 0000000000000000 R12: 0000000000000000
      R13: 00000000ffffffff R14: ffff880196db6c50 R15: 0000000000020101
       refcount_add+0x1b/0x70 lib/refcount.c:102
       __udp_gso_segment+0xaa5/0xee0 net/ipv4/udp_offload.c:272
       udp4_ufo_fragment+0x592/0x7a0 net/ipv4/udp_offload.c:301
       inet_gso_segment+0x639/0x12b0 net/ipv4/af_inet.c:1342
       skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
       __skb_gso_segment+0x3bb/0x870 net/core/dev.c:2865
       skb_gso_segment include/linux/netdevice.h:4050 [inline]
       validate_xmit_skb+0x54d/0xd90 net/core/dev.c:3122
       __dev_queue_xmit+0xbf8/0x34c0 net/core/dev.c:3579
       dev_queue_xmit+0x17/0x20 net/core/dev.c:3620
       neigh_direct_output+0x15/0x20 net/core/neighbour.c:1401
       neigh_output include/net/neighbour.h:483 [inline]
       ip_finish_output2+0xa5f/0x1840 net/ipv4/ip_output.c:229
       ip_finish_output+0x828/0xf80 net/ipv4/ip_output.c:317
       NF_HOOK_COND include/linux/netfilter.h:277 [inline]
       ip_output+0x21b/0x850 net/ipv4/ip_output.c:405
       dst_output include/net/dst.h:444 [inline]
       ip_local_out+0xc5/0x1b0 net/ipv4/ip_output.c:124
       ip_send_skb+0x40/0xe0 net/ipv4/ip_output.c:1434
       udp_send_skb.isra.37+0x5eb/0x1000 net/ipv4/udp.c:825
       udp_push_pending_frames+0x5c/0xf0 net/ipv4/udp.c:853
       udp_v6_push_pending_frames+0x380/0x3e0 net/ipv6/udp.c:1105
       udp_lib_setsockopt+0x59a/0x600 net/ipv4/udp.c:2403
       udpv6_setsockopt+0x95/0xa0 net/ipv6/udp.c:1447
       sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:3046
       __sys_setsockopt+0x1bd/0x390 net/socket.c:1903
       __do_sys_setsockopt net/socket.c:1914 [inline]
       __se_sys_setsockopt net/socket.c:1911 [inline]
       __x64_sys_setsockopt+0xbe/0x150 net/socket.c:1911
       do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      
      Fixes: ad405857 ("udp: better wmem accounting on gso")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Willem de Bruijn <willemb@google.com>
      Cc: Alexander Duyck <alexander.h.duyck@intel.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      575b65bc
    • Eric Dumazet's avatar
      tcp: switch pacing timer to softirq based hrtimer · 73a6bab5
      Eric Dumazet authored
      linux-4.16 got support for softirq based hrtimers.
      TCP can switch its pacing hrtimer to this variant, since this
      avoids going through a tasklet and some atomic operations.
      
      pacing timer logic looks like other (jiffies based) tcp timers.
      
      v2: use hrtimer_try_to_cancel() in tcp_clear_xmit_timers()
          to correctly release reference on socket if needed.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      73a6bab5
    • David S. Miller's avatar
      Merge branch 'dsa-Plug-in-PHYLINK-support' · 4cbd7a7d
      David S. Miller authored
      Florian Fainelli says:
      
      ====================
      net: dsa: Plug in PHYLINK support
      
      This patch series adds PHYLINK support to DSA which is necessary to support more
      complex PHY and pluggable modules setups.
      
      Patch series can be found here:
      
      https://github.com/ffainelli/linux/commits/dsa-phylink-v2
      
      This was tested on:
      
      - dsa-loop
      - bcm_sf2
      - mv88e6xxx
      - b53
      
      With a variety of test cases:
      - internal & external MDIO PHYs
      - MoCA with link notification through interrupt/MMIO register
      - built-in PHYs
      - ifconfig up/down for several cycles works
      - bind/unbind of the drivers
      
      Changes in v2:
      
      - fixed link configuration for mv88e6xxx (Andrew) after introducing polling
      
      This is technically v2 of what was posted back in March 2018, changes from last
      time:
      
      - fixed probe/remove of drivers
      - fixed missing gpiod_put() for link GPIOs
      - fixed polling of link GPIOs (Russell I would need your SoB on the patch you
        provided offline initially, added some modifications to it)
      - tested across a wider set of platforms
      
      And everything should still work as expected. Please be aware of the following:
      
      - switch drivers (like bcm_sf2) which may have user-facing network ports using
        fixed links would need to implement phylink_mac_ops to remain functional.
        PHYLINK does not create a phy_device for fixed links, therefore our
        call to adjust_link() from phylink_mac_link_{up,down} would not be calling
        into the driver. This *should not* affect CPU/DSA ports which are configured
        through adjust_link() but have no network devices
      
      - support for SFP/SFF is now possible, but switch drivers will still need some
        modifications to properly support those, including, but not limited to using
        the correct binding information. This will be submitted on top of this series
      
      Please do test on your respective platforms/switches and let me know if you
      find any issues, hopefully everything still works like before.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4cbd7a7d
    • Florian Fainelli's avatar
      net: dsa: bcm_sf2: Get rid of PHYLIB functions · 58d56fcc
      Florian Fainelli authored
      Now that we have converted the bcm_sf2 driver to implement PHYLINK MAC
      operations, we can remove the PHYLIB callbacks: adjust_link() and
      fixed_link_update() which are no longer called by DSA.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      58d56fcc
    • Florian Fainelli's avatar
      net: dsa: Plug in PHYLINK support · aab9c406
      Florian Fainelli authored
      Add support for PHYLINK within the DSA subsystem in order to support more
      complex devices such as pluggable (SFP) and non-pluggable (SFF) modules, 10G
      PHYs, and traditional PHYs. Using PHYLINK allows us to drop some amount of
      complexity we had while probing fixed and non-fixed PHYs using Device Tree.
      
      Because PHYLINK separates the Ethernet MAC/port configuration into different
      stages, we let switch drivers implement those, and for now, we maintain
      functionality by calling dsa_slave_adjust_link() during
      phylink_mac_link_{up,down} which provides semantically equivalent steps.
      
      Drivers willing to take advantage of PHYLINK should implement the phylink_mac_*
      operations that DSA wraps.
      
      We cannot quite remove the adjust_link() callback just yet, because a number of
      drivers rely on that for configuring their "CPU" and "DSA" ports, this is done
      dsa_port_setup_phy_of() and dsa_port_fixed_link_register_of() still.
      
      Drivers that utilize fixed links for user-facing ports (e.g: bcm_sf2) will need
      to implement phylink_mac_ops from now on to preserve functionality, since PHYLINK
      *does not* create a phy_device instance for fixed links.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      aab9c406
    • Russell King's avatar
      net: dsa: mv88e6xxx: add PHYLINK support · c9a2356f
      Russell King authored
      Add rudimentary phylink support to mv88e6xxx. This allows the driver
      using user ports with fixed links to keep operating normally. User ports
      with normal PHYs are not affected since the switch automatically manages
      their link parameters. User facing ports which use a SFP/SFF with a
      non-fixed link mode might require a call to phylink_mac_change() to
      operate properly.
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      [Andrew: fixed link setting after adding link polling]
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      [florian: expand commit message]
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c9a2356f
    • Florian Fainelli's avatar
      net: dsa: Eliminate dsa_slave_get_link() · c4aef9fc
      Florian Fainelli authored
      Since we use PHYLIB to manage the per-port link indication, this will
      also be reflected correctly in the network device's carrier state, so we
      can use ethtool_op_get_link() instead.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c4aef9fc
    • Florian Fainelli's avatar
      net: dsa: bcm_sf2: Implement phylink_mac_ops · bc0cb653
      Florian Fainelli authored
      Make the bcm_sf2 driver implement phylink_mac_ops since it needs to
      support a wide variety of network interfaces: internal & external MDIO
      PHYs, fixed PHYs, MoCA with MMIO link status.
      
      A large amount of what needs to be done already exists under
      bcm_sf2_sw_adjust_link() so we are essentially breaking this down into
      the necessary operation for PHYLINK to work: mac_config, mac_link_up,
      mac_link_down and validate. We can now entirely get rid of most of what
      fixed_link_update() provided because only the link information is actually
      necessary. We still have to force DUPLEX_FULL for legacy Device Tree bindings
      that did not specify that before.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bc0cb653
    • Florian Fainelli's avatar
      net: dsa: Add PHYLINK switch operations · 11d8f3dd
      Florian Fainelli authored
      In preparation for adding support for PHYLINK within DSA, define a number of
      operations that we will need and that switch drivers can start implementing.
      Proper integration with PHYLINK will follow in subsequent patches.
      
      We start selecting PHYLINK (which implies PHYLIB) in net/dsa/Kconfig
      such that drivers can be guaranteed that this dependency is properly
      taken care of and can start referencing PHYLINK helper functions without
      requiring stubs or anything.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      11d8f3dd
    • Russell King's avatar
      net: phy: phylink: Poll link GPIOs · 9cd00a8a
      Russell King authored
      When using a fixed link with a link GPIO, we need to poll that GPIO to
      determine link state changes. This is consistent with what fixed_phy.c does.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9cd00a8a
    • Florian Fainelli's avatar
      net: phy: phylink: Release link GPIO · daab3349
      Florian Fainelli authored
      We are not releasing the link GPIO descriptor with gpiod_put() which results in
      subsequent probing to get -EBUSY when calling fwnode_get_named_gpiod(). Fix this
      by doing the release in phylink_destroy().
      
      Fixes: 9525ae83 ("phylink: add phylink infrastructure")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      daab3349
    • Florian Fainelli's avatar
      net: phy: phylink: Use gpiod_get_value_cansleep() · bb322a90
      Florian Fainelli authored
      The GPIO provider for the link GPIO line might require the use of the
      _cansleep() API, utilize that. This is safe to do since we run in workqueue
      context.
      
      Fixes: 9525ae83 ("phylink: add phylink infrastructure")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bb322a90
  2. 10 May, 2018 17 commits
    • Petr Machata's avatar
      rocker: Postpone filtering of !added_by_user FDB · ec9efb52
      Petr Machata authored
      Breaking out of the switch in rocker_switchdev_event() still ends up
      scheduling work, except an ill-defined one. This leads to an OOPS cited
      below. Fix by postponing the check until rocker_switchdev_event_work().
      
      [   23.148476] BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
      [   23.148810] PGD 0 P4D 0
      [   23.148982] Oops: 0000 [#1] PREEMPT SMP PTI
      [   23.149190] Modules linked in: bridge stp llc iptable_nat nf_nat_ipv4 nf_nat e1000 rocker
      [   23.149768] CPU: 0 PID: 239 Comm: kworker/u2:4 Not tainted 4.17.0-rc3-net_next_queue-custom #6
      [   23.150298] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-2.fc27 04/01/2014
      [   23.150868] Workqueue: rocker rocker_switchdev_event_work [rocker]
      [   23.151258] RIP: 0010:ofdpa_port_fdb+0x7b/0x230 [rocker]
      [   23.151597] RSP: 0018:ffffc900004b3e18 EFLAGS: 00010246
      [   23.151952] RAX: 00000000fffbc68c RBX: 0000000000000000 RCX: 0000000000000000
      [   23.152363] RDX: 0000000000000010 RSI: ffff88003b4471e0 RDI: 00000000ffffffff
      [   23.152768] RBP: ffff88003b4471c0 R08: ffff88003b4471e0 R09: ffff88003b4471c0
      [   23.153141] R10: 0000000000000000 R11: 0000000000000000 R12: ffff880036caf000
      [   23.153515] R13: 0000000000000000 R14: 0000000000000000 R15: ffff88003bc00000
      [   23.153919] FS:  0000000000000000(0000) GS:ffff88003fc00000(0000) knlGS:0000000000000000
      [   23.154444] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   23.154806] CR2: 0000000000000000 CR3: 0000000036eb6000 CR4: 00000000000006f0
      [   23.155194] Call Trace:
      [   23.155472]  rocker_switchdev_event_work+0x9b/0xd0 [rocker]
      [   23.155850]  ? __schedule+0x231/0x700
      [   23.156175]  process_one_work+0x1cf/0x3e0
      [   23.156490]  worker_thread+0x26/0x3d0
      [   23.156795]  ? trace_event_raw_event_workqueue_execute_start+0x80/0x80
      [   23.157181]  kthread+0x10e/0x130
      [   23.157485]  ? kthread_create_worker_on_cpu+0x40/0x40
      [   23.157824]  ret_from_fork+0x35/0x40
      [   23.158174] Code: 00 00 c1 e8 02 4c 8d 45 20 bf ff ff ff ff 83 e0 01 4c 89 65 20 88 45 14 48 8b 05 21 da 1f e2 4c 89 c6 4c 89 44 24 10 48 89 45 18 <41> 8b 45 00 89 45 28 41 0f b7 45 04 66 89 45 2c 0f b7 44 24 04
      [   23.159346] RIP: ofdpa_port_fdb+0x7b/0x230 [rocker] RSP: ffffc900004b3e18
      [   23.159742] CR2: 0000000000000000
      [   23.160088] ---[ end trace f9b16d4cb6df0629 ]---
      
      Fixes: 816a3bed ("switchdev: Add fdb.added_by_user to switchdev notifications")
      Suggested-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Reviewed-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ec9efb52
    • Boris Pismenny's avatar
      tls: Fix tls_device initialization · 895262d8
      Boris Pismenny authored
      Add sg table initialization to fix a BUG_ON encountered when enabling
      CONFIG_DEBUG_SG.
      Signed-off-by: default avatarBoris Pismenny <borisp@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      895262d8
    • Ganesh Goudar's avatar
      cxgb4: fix the wrong conversion of Mbps to Kbps · b3c594ab
      Ganesh Goudar authored
      fix the wrong conversion where 1 Mbps was converted to
      1024 Kbps.
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b3c594ab
    • David S. Miller's avatar
      Merge branch 'mlxsw-Support-VLAN-devices-in-mirroring-offloads' · ccb02638
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Support VLAN devices in mirroring offloads
      
      Petr says:
      
      When offloading "tc action mirred mirror", there are several scenarios
      where VLAN devices can show up, that mlxsw can offload on Spectrum
      machines.
      
      I) A direct mirror to a VLAN device on top of a front-panel port device
         (commonly referred to as "RSPAN")
      
      II) VLAN device in egress path of a packet when resolving a mirror to
          gretap or ip6gretap netdevice.
      
      Specifically in the latter case, the following are the cases that can be
      offloaded:
      
      IIa) VLAN device directly above a physical device.
      IIb) A VLAN-unaware bridge where the egress device is as in IIa.
      IIc) VLAN device on top of a VLAN-aware bridge where the egress device
           is a physical device.
      
      This patch set implements all the above cases.
      
      First, in patch #1, br_vlan_get_info() is extended to allow bridge
      master argument.
      
      Case I is then implemented in patches #2 and #3, case II in patch #4.
      
      Note that handling of VLAN protocol is not included. In case I, mirrored
      packets may end up being double-tagged, and it might be reasonable for
      the outer tag to be an 802.1ad. However, the protocol type configuration
      would have to be put on the same VLAN netdevice that represents normal
      VLAN traffic, and mlxsw currently ignores this setting in that case. Thus
      this support was left out and the encapsulation always uses 802.1q
      protocol.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ccb02638
    • Petr Machata's avatar
      mlxsw: spectrum_span: Support VLAN under mirror-to-gretap · 03c44132
      Petr Machata authored
      When mirroring to a gretap or ip6gretap device, allow the underlay
      packet path to include VLAN devices. The following configurations are
      supported in underlay:
      
      - vlan over phys
      - vlan-unaware bridge where the egress device is vlan over phys
      - vlan over vlan-aware bridge where the egress device is phys
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      03c44132
    • Petr Machata's avatar
      mlxsw: spectrum_span: Support mirror-to-VLAN · e00698d1
      Petr Machata authored
      Offload "tc action mirred mirror" to a device that is a vlan device on
      top of a front-panel port device. The hardware encapsulates the mirrored
      packets in a VLAN tag. That includes the case that the mirrored traffic
      is already VLAN-tagged--in that case the monitor traffic will be
      double-tagged, just like in the software path.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e00698d1
    • Petr Machata's avatar
      mlxsw: reg: Add MLXSW_REG_MPAT_SPAN_TYPE_REMOTE_ETH · 41947662
      Petr Machata authored
      Add MLXSW_REG_MPAT_SPAN_TYPE_REMOTE_ETH to support VLAN-encapsulated
      port mirroring.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      41947662
    • Petr Machata's avatar
      net: bridge: Allow bridge master in br_vlan_get_info() · 2b18d79e
      Petr Machata authored
      Mirroring offload in mlxsw needs to check that a given VLAN is allowed
      to ingress the bridge device. br_vlan_get_info() is the function that is
      used for this, however currently it only supports bridge port devices.
      Extend it to support bridge masters as well.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2b18d79e
    • Jon Maxwell's avatar
      tcp: Add mark for TIMEWAIT sockets · 00483690
      Jon Maxwell authored
      This version has some suggestions by Eric Dumazet:
      
      - Use a local variable for the mark in IPv6 instead of ctl_sk to avoid SMP
      races.
      - Use the more elegant "IP4_REPLY_MARK(net, skb->mark) ?: sk->sk_mark"
      statement.
      - Factorize code as sk_fullsock() check is not necessary.
      
      Aidan McGurn from Openwave Mobility systems reported the following bug:
      
      "Marked routing is broken on customer deployment. Its effects are large
      increase in Uplink retransmissions caused by the client never receiving
      the final ACK to their FINACK - this ACK misses the mark and routes out
      of the incorrect route."
      
      Currently marks are added to sk_buffs for replies when the "fwmark_reflect"
      sysctl is enabled. But not for TW sockets that had sk->sk_mark set via
      setsockopt(SO_MARK..).
      
      Fix this in IPv4/v6 by adding tw->tw_mark for TIME_WAIT sockets. Copy the the
      original sk->sk_mark in __inet_twsk_hashdance() to the new tw->tw_mark location.
      Then progate this so that the skb gets sent with the correct mark. Do the same
      for resets. Give the "fwmark_reflect" sysctl precedence over sk->sk_mark so that
      netfilter rules are still honored.
      Signed-off-by: default avatarJon Maxwell <jmaxwell37@gmail.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      00483690
    • Joe Perches's avatar
      net: ipv4: remove define INET_CSK_DEBUG and unnecessary EXPORT_SYMBOL · 03bdfc00
      Joe Perches authored
      INET_CSK_DEBUG is always set and only is used for 2 pr_debug calls.
      
      EXPORT_SYMBOL(inet_csk_timer_bug_msg) is only used by these 2
      pr_debug calls and is also unnecessary as the exported string can
      be used directly by these calls.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      03bdfc00
    • Felix Manlunas's avatar
    • Felix Manlunas's avatar
      liquidio: monitor all of Octeon's cores in watchdog thread · f6047576
      Felix Manlunas authored
      The liquidio_watchdog kernel thread is watching over only 12 cores of the
      Octeon CN23XX; it's neglecting the other 4 cores that are present in the
      CN2360.  Fix it by defining LIO_MAX_CORES as 16.
      Signed-off-by: default avatarFelix Manlunas <felix.manlunas@cavium.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f6047576
    • David S. Miller's avatar
      Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · e72a7dd7
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      100GbE Intel Wired LAN Driver Updates 2018-05-09
      
      This series contains updates to fm10k only.
      
      Jake provides all the changes in the series, starting with adding
      support for accelerated MACVLAN devices.  Reduced code duplication by
      implementing a macro to be used when setting up the type specific
      macros.  Avoided potential bugs with stats by using a macro to calculate
      the array size when passing to ensure that the size is correct.
      
      v2: changed macro reference '#' with __stringify() as suggested by
          Joe Perches to patch 2 of the series.  Also made sure the updated
          series of patches is actually pushed to my kernel.org tree
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e72a7dd7
    • Eric Dumazet's avatar
      net/ipv6: fix lock imbalance in ip6_route_del() · 9e575010
      Eric Dumazet authored
      WARNING: lock held when returning to user space!
      4.17.0-rc3+ #37 Not tainted
      
      syz-executor1/27662 is leaving the kernel with locks still held!
      1 lock held by syz-executor1/27662:
       #0: 00000000f661aee7 (rcu_read_lock){....}, at: ip6_route_del+0xea/0x13f0 net/ipv6/route.c:3206
      BUG: scheduling while atomic: syz-executor1/27662/0x00000002
      INFO: lockdep is turned off.
      Modules linked in:
      Kernel panic - not syncing: scheduling while atomic
      
      CPU: 1 PID: 27662 Comm: syz-executor1 Not tainted 4.17.0-rc3+ #37
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x1b9/0x294 lib/dump_stack.c:113
       panic+0x22f/0x4de kernel/panic.c:184
       __schedule_bug.cold.85+0xdf/0xdf kernel/sched/core.c:3290
       schedule_debug kernel/sched/core.c:3307 [inline]
       __schedule+0x139e/0x1e30 kernel/sched/core.c:3412
       schedule+0xef/0x430 kernel/sched/core.c:3549
       exit_to_usermode_loop+0x220/0x310 arch/x86/entry/common.c:152
       prepare_exit_to_usermode arch/x86/entry/common.c:196 [inline]
       syscall_return_slowpath arch/x86/entry/common.c:265 [inline]
       do_syscall_64+0x6ac/0x800 arch/x86/entry/common.c:290
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x455979
      RSP: 002b:00007fbf4051dc68 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: 0000000000000000 RBX: 00007fbf4051e6d4 RCX: 0000000000455979
      RDX: 00000000200001c0 RSI: 000000000000890c RDI: 0000000000000013
      RBP: 000000000072bea0 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
      R13: 00000000000003c8 R14: 00000000006f9b60 R15: 0000000000000000
      Dumping ftrace buffer:
         (ftrace buffer empty)
      Kernel Offset: disabled
      Rebooting in 86400 seconds..
      
      Fixes: 23fb93a4 ("net/ipv6: Cleanup exception and cache route handling")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: David Ahern <dsahern@gmail.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Acked-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9e575010
    • David S. Miller's avatar
      Merge branch 'hns3-misc-fixes' · c320e49d
      David S. Miller authored
      Salil Mehta says:
      
      ====================
      Misc bug fixes for HNS3 Ethernet Driver
      
      Fixes to some of the bugs found during system test, internal review
      and clean-up
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c320e49d
    • Yunsheng Lin's avatar
      net: hns3: refactor the loopback related function · e4d68dae
      Yunsheng Lin authored
      This patch refactors the loopback related function in order
      to support the serdes loopback.
      Signed-off-by: default avatarYunsheng Lin <linyunsheng@huawei.com>
      Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e4d68dae
    • Yunsheng Lin's avatar
      net: hns3: fix for cleaning ring problem · beebca3a
      Yunsheng Lin authored
      The head or tail in hardware is not longer valid when resetting,
      current hns3_clear_all_ring use them to clean the ring, which
      will cause problem during resetting.
      
      This patch fixes it by using next_to_use and next_to_clean in
      the ring struct.
      
      Fixes: 76ad4f0e ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC")
      Signed-off-by: default avatarYunsheng Lin <linyunsheng@huawei.com>
      Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      beebca3a