1. 27 Jun, 2019 40 commits
    • Vladimir Oltean's avatar
      net: dsa: sja1105: Back up static FDB entries in kernel memory · 60f6053f
      Vladimir Oltean authored
      After commit 8456721d ("net: dsa: sja1105: Add support for
      configuring address ageing time"), we started to reset the switch rather
      often (each time the bridge core changes the ageing time on a switch
      port).
      
      The unfortunate reality is that SJA1105 doesn't have any {cold, warm,
      whatever} reset mode in which it accepts a new configuration stream
      without flushing the FDB.  Instead, in its world, the FDB *is* an
      optional part of the static configuration.
      
      So we play its game, and do what we also do for VLANs: for each 'bridge
      fdb' command, we add the FDB entry through the dynamic interface, and we
      append the in-kernel static config memory with info that we're going to
      use later, when the next reset command is going to be issued.
      
      The result is that 'bridge fdb' commands are now persistent (dynamically
      learned entries are lost, but that's ok).
      Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      60f6053f
    • Vladimir Oltean's avatar
      net: dsa: sja1105: Make P/Q/R/S learn MAC addresses · 6c56e167
      Vladimir Oltean authored
      At the end of the commit 1da73821 ("net: dsa: sja1105: Add FDB
      operations for P/Q/R/S series") message, I said that:
      
          At the moment only FDB entries installed statically through 'bridge fdb'
          are visible in the dump callback - the dynamically learned ones are
          still under investigation.
      
      It looks like the reason why they were not visible in 'bridge fdb' was
      that they were never learned - always flooded.
      
      SJA1105 P/Q/R/S manual says about the MAXADDRP[port] field:
      
          Specify the maximum number of MAC address dynamically learned from
          the respective port. It is used to limit the number of learned MAC
          addresses per port.
      
      It looks like not providing a value in the static config (aka providing
      zeroes) is enough for it to not store the learned addresses in the FDB.
      
      For now we divide the 1024 entry FDB "equally" amongst the 5 ports. This
      may be revisited if the situation calls for that - for now I'm happy
      that learning works.
      Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6c56e167
    • Vladimir Oltean's avatar
      net: dsa: sja1105: Actually implement the P/Q/R/S FDB bits · 0803948e
      Vladimir Oltean authored
      In commit 1da73821 ("net: dsa: sja1105: Add FDB operations for
      P/Q/R/S series"), these bits were set in the static config, but
      apparently they did not do anything.  The reason is that the packing
      accessors for them were part of a patch I forgot to send.
      Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0803948e
    • Vladimir Oltean's avatar
      net: dsa: sja1105: Make vid 1 the default pvid · e3502b82
      Vladimir Oltean authored
      In SJA1105 there is no concept of 'default values' per se, everything
      needs to be driver-supplied through the static configuration tables.
      
      The issue is that the hardware manual says that 'at least the default
      untagging VLAN' is mandatory to be provided through the static config.
      But VLAN 0 isn't a very good initial pvid - its use is reserved for
      priority-tagged frames, and the layers of the stack that care about
      those already make sure that this VLAN is installed, as can be seen in
      the message below:
      
        8021q: adding VLAN 0 to HW filter on device swp2
      
      So change the pvid provided through the static configuration to 1, which
      matches the bridge core's defaults.
      Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e3502b82
    • Vladimir Oltean's avatar
      net: dsa: sja1105: Cancel PTP delayed work on unregister · 29dd908d
      Vladimir Oltean authored
      Currently when the driver unloads and PTP is enabled, the delayed work
      that prevents the timecounter from expiring becomes a ticking time bomb.
      The kernel will schedule the work thread within 60 seconds of driver
      removal, but the work handler is no longer there, leading to this
      strange and inconclusive stack trace:
      
      [   64.473112] Unable to handle kernel paging request at virtual address 79746970
      [   64.480340] pgd = 008c4af9
      [   64.483042] [79746970] *pgd=00000000
      [   64.486620] Internal error: Oops: 80000005 [#1] SMP ARM
      [   64.491820] Modules linked in:
      [   64.494871] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.2.0-rc5-01634-ge3a2773ba9e5 #1246
      [   64.503007] Hardware name: Freescale LS1021A
      [   64.507259] PC is at 0x79746970
      [   64.510393] LR is at call_timer_fn+0x3c/0x18c
      [   64.514729] pc : [<79746970>]    lr : [<c03bd734>]    psr: 60010113
      [   64.520965] sp : c1901de0  ip : 00000000  fp : c1903080
      [   64.526163] r10: c1901e38  r9 : ffffe000  r8 : c19064ac
      [   64.531363] r7 : 79746972  r6 : e98dd260  r5 : 00000100  r4 : c1a9e4a0
      [   64.537859] r3 : c1900000  r2 : ffffa400  r1 : 79746972  r0 : e98dd260
      [   64.544359] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
      [   64.551460] Control: 10c5387d  Table: a8a2806a  DAC: 00000051
      [   64.557176] Process swapper/0 (pid: 0, stack limit = 0x1ddb27f0)
      [   64.563147] Stack: (0xc1901de0 to 0xc1902000)
      [   64.567481] 1de0: eb6a4918 3d60d7c3 c1a9e554 e98dd260 eb6a34c0 c1a9e4a0 ffffa400 c19064ac
      [   64.575616] 1e00: ffffe000 c03bd95c c1901e34 c1901e34 eb6a34c0 c1901e30 c1903d00 c186f4c0
      [   64.583751] 1e20: c1906488 29e34000 c1903080 c03bdca4 00000000 eaa6f218 00000000 eb6a45c0
      [   64.591886] 1e40: eb6a45c0 20010193 00000003 c03c0a68 20010193 3f7231be c1903084 00000002
      [   64.600022] 1e60: 00000082 00000001 ffffe000 c1a9e0a4 00000100 c0302298 02b64722 0000000f
      [   64.608157] 1e80: c186b3c8 c1877540 c19064ac 0000000a c186b350 ffffa401 c1903d00 c1107348
      [   64.616292] 1ea0: 00200102 c0d87a14 ea823c00 ffffe000 00000012 00000000 00000000 ea810800
      [   64.624427] 1ec0: f0803000 c1876ba8 00000000 c034c784 c18774b8 c039fb50 c1906c90 c1978aac
      [   64.632562] 1ee0: f080200c f0802000 c1901f10 c0709ca8 c03091a0 60010013 ffffffff c1901f44
      [   64.640697] 1f00: 00000000 c1900000 c1876ba8 c0301a8c 00000000 000070a0 eb6ac1a0 c031da60
      [   64.648832] 1f20: ffffe000 c19064ac c19064f0 00000001 00000000 c1906488 c1876ba8 00000000
      [   64.656967] 1f40: ffffffff c1901f60 c030919c c03091a0 60010013 ffffffff 00000051 00000000
      [   64.665102] 1f60: ffffe000 c0376aa4 c1a9da37 ffffffff 00000037 3f7231be c1ab20c0 000000cc
      [   64.673238] 1f80: c1906488 c1906480 ffffffff 00000037 c1ab20c0 c1ab20c0 00000001 c0376e1c
      [   64.681373] 1fa0: c1ab2118 c1700ea8 ffffffff ffffffff 00000000 c1700754 c17dfa40 ebfffd80
      [   64.689509] 1fc0: 00000000 c17dfa40 3f7733be 00000000 00000000 c1700330 00000051 10c0387d
      [   64.697644] 1fe0: 00000000 8f000000 410fc075 10c5387d 00000000 00000000 00000000 00000000
      [   64.705788] [<c03bd734>] (call_timer_fn) from [<c03bd95c>] (expire_timers+0xd8/0x144)
      [   64.713579] [<c03bd95c>] (expire_timers) from [<c03bdca4>] (run_timer_softirq+0xe4/0x1dc)
      [   64.721716] [<c03bdca4>] (run_timer_softirq) from [<c0302298>] (__do_softirq+0x130/0x3c8)
      [   64.729854] [<c0302298>] (__do_softirq) from [<c034c784>] (irq_exit+0xbc/0xd8)
      [   64.737040] [<c034c784>] (irq_exit) from [<c039fb50>] (__handle_domain_irq+0x60/0xb4)
      [   64.744833] [<c039fb50>] (__handle_domain_irq) from [<c0709ca8>] (gic_handle_irq+0x58/0x9c)
      [   64.753143] [<c0709ca8>] (gic_handle_irq) from [<c0301a8c>] (__irq_svc+0x6c/0x90)
      [   64.760583] Exception stack(0xc1901f10 to 0xc1901f58)
      [   64.765605] 1f00:                                     00000000 000070a0 eb6ac1a0 c031da60
      [   64.773740] 1f20: ffffe000 c19064ac c19064f0 00000001 00000000 c1906488 c1876ba8 00000000
      [   64.781873] 1f40: ffffffff c1901f60 c030919c c03091a0 60010013 ffffffff
      [   64.788456] [<c0301a8c>] (__irq_svc) from [<c03091a0>] (arch_cpu_idle+0x38/0x3c)
      [   64.795816] [<c03091a0>] (arch_cpu_idle) from [<c0376aa4>] (do_idle+0x1bc/0x298)
      [   64.803175] [<c0376aa4>] (do_idle) from [<c0376e1c>] (cpu_startup_entry+0x18/0x1c)
      [   64.810707] [<c0376e1c>] (cpu_startup_entry) from [<c1700ea8>] (start_kernel+0x480/0x4ac)
      [   64.818839] Code: bad PC value
      [   64.821890] ---[ end trace e226ed97b1c584cd ]---
      [   64.826482] Kernel panic - not syncing: Fatal exception in interrupt
      [   64.832807] CPU1: stopping
      [   64.835501] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D           5.2.0-rc5-01634-ge3a2773ba9e5 #1246
      [   64.845013] Hardware name: Freescale LS1021A
      [   64.849266] [<c0312394>] (unwind_backtrace) from [<c030cc74>] (show_stack+0x10/0x14)
      [   64.856972] [<c030cc74>] (show_stack) from [<c0ff4138>] (dump_stack+0xb4/0xc8)
      [   64.864159] [<c0ff4138>] (dump_stack) from [<c0310854>] (handle_IPI+0x3bc/0x3dc)
      [   64.871519] [<c0310854>] (handle_IPI) from [<c0709ce8>] (gic_handle_irq+0x98/0x9c)
      [   64.879050] [<c0709ce8>] (gic_handle_irq) from [<c0301a8c>] (__irq_svc+0x6c/0x90)
      [   64.886489] Exception stack(0xea8cbf60 to 0xea8cbfa8)
      [   64.891514] bf60: 00000000 0000307c eb6c11a0 c031da60 ffffe000 c19064ac c19064f0 00000002
      [   64.899649] bf80: 00000000 c1906488 c1876ba8 00000000 00000000 ea8cbfb0 c030919c c03091a0
      [   64.907780] bfa0: 600d0013 ffffffff
      [   64.911250] [<c0301a8c>] (__irq_svc) from [<c03091a0>] (arch_cpu_idle+0x38/0x3c)
      [   64.918609] [<c03091a0>] (arch_cpu_idle) from [<c0376aa4>] (do_idle+0x1bc/0x298)
      [   64.925967] [<c0376aa4>] (do_idle) from [<c0376e1c>] (cpu_startup_entry+0x18/0x1c)
      [   64.933496] [<c0376e1c>] (cpu_startup_entry) from [<803025cc>] (0x803025cc)
      [   64.940422] Rebooting in 3 seconds..
      
      In this case, what happened is that the DSA driver failed to probe at
      boot time due to a PHY issue during phylink_connect_phy:
      
      [    2.245607] fsl-gianfar soc:ethernet@2d90000 eth2: error -19 setting up slave phy
      [    2.258051] sja1105 spi0.1: failed to create slave for port 0.0
      
      Fixes: bb77f36a ("net: dsa: sja1105: Add support for the PTP clock")
      Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      29dd908d
    • Vladimir Oltean's avatar
      net: dsa: sja1105: Build PTP support in main DSA driver · 3d64ea38
      Vladimir Oltean authored
      As Arnd Bergmann pointed out in commit 78fe8a28 ("net: dsa: sja1105:
      fix ptp link error"), there is no point in having PTP support as a
      separate loadable kernel module.
      
      So remove the exported symbols and make sja1105.ko contain PTP support
      or not based on CONFIG_NET_DSA_SJA1105_PTP.
      Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3d64ea38
    • David S. Miller's avatar
      Merge branch 'net-dsa-microchip-Convert-to-regmap' · c881e10e
      David S. Miller authored
      Marek Vasut says:
      
      ====================
      net: dsa: microchip: Convert to regmap
      
      This patchset converts KSZ9477 switch driver to regmap.
      
      This was tested with extra patches on KSZ8795. This was also tested
      on KSZ9477 on Microchip KSZ9477EVB board, which I now have.
      ====================
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      c881e10e
    • Marek Vasut's avatar
      net: dsa: microchip: Replace ad-hoc bit manipulation with regmap · d4bcd99c
      Marek Vasut authored
      Regmap provides bit manipulation functions to set/clear bits, use those
      insted of reimplementing them.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d4bcd99c
    • Marek Vasut's avatar
      net: dsa: microchip: Factor out regmap config generation into common header · 255b59ad
      Marek Vasut authored
      The regmap config tables are rather similar for various generations of
      the KSZ8xxx/KSZ9xxx switches. Introduce a macro which allows generating
      those tables without duplication. Note that $regalign parameter is not
      used right now, but will be used in KSZ87xx series switches.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      255b59ad
    • Marek Vasut's avatar
      net: dsa: microchip: Dispose of ksz_io_ops · ee394fea
      Marek Vasut authored
      Since the driver now uses regmap , get rid of ad-hoc ksz_io_ops
      abstraction, which no longer has any meaning. Moreover, since regmap
      has it's own locking, get rid of the register access mutex.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ee394fea
    • Marek Vasut's avatar
      net: dsa: microchip: Initial SPI regmap support · 46558d60
      Marek Vasut authored
      Add basic SPI regmap support into the driver.
      
      Previous patches unconver that ksz_spi_write() is always ever called
      with len = 1, 2 or 4. We can thus drop the if (len > SPI_TX_BUF_LEN)
      check and we can also drop the allocation of the txbuf which is part
      of the driver data and wastes 256 bytes for no reason. Regmap covers
      the whole thing now.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      46558d60
    • Marek Vasut's avatar
      net: dsa: microchip: Factor out register access opcode generation · ff509dab
      Marek Vasut authored
      Factor out the code which sends out the register read/write opcodes
      to the switch, since the code differs in single bit between read and
      write.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ff509dab
    • Marek Vasut's avatar
      net: dsa: microchip: Use PORT_CTRL_ADDR() instead of indirect function call · 5ce9676e
      Marek Vasut authored
      The indirect function call to dev->dev_ops->get_port_addr() is expensive
      especially if called for every single register access, and only returns
      the value of PORT_CTRL_ADDR() macro. Use PORT_CTRL_ADDR() macro directly
      instead.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5ce9676e
    • Marek Vasut's avatar
      net: dsa: microchip: Move ksz_cfg and ksz_port_cfg to ksz9477.c · bafea01f
      Marek Vasut authored
      These functions are only used by the KSZ9477 code, move them from
      the header into that code. Note that these functions will be soon
      replaced by regmap equivalents.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bafea01f
    • Marek Vasut's avatar
      net: dsa: microchip: Inline ksz_spi.h · 860cbe92
      Marek Vasut authored
      The functions in the header file are static, and the header file is
      included from single C file, just inline the code into the C file.
      The bonus is that it's easier to spot further content to clean up.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      860cbe92
    • Marek Vasut's avatar
      net: dsa: microchip: Remove ksz_{get,set}() · 78e4e32f
      Marek Vasut authored
      These functions and callbacks are never used, remove them.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      78e4e32f
    • Marek Vasut's avatar
      net: dsa: microchip: Remove ksz_{read,write}24() · 77972783
      Marek Vasut authored
      These functions and callbacks are never used, remove them.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Tristram Ha <Tristram.Ha@microchip.com>
      Cc: Woojung Huh <Woojung.Huh@microchip.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      77972783
    • David S. Miller's avatar
      Merge branch 'net-aquantia-implement-vlan-offloads' · 1c57de69
      David S. Miller authored
      Igor Russkikh says:
      
      ====================
      net: aquantia: implement vlan offloads
      
      This patchset introduces hardware VLAN offload support and also does some
      maintenance: we replace driver version with uts version string, add
      documentation file for atlantic driver, and update maintainers
      adding Igor as a maintainer.
      
      v3: shuffle doc sections, per Andrew's comments
      
      v2: updates in doc, gpl spdx tag cleanup
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1c57de69
    • Igor Russkikh's avatar
      net: aquantia: implement vlan offload configuration · 04f207fb
      Igor Russkikh authored
      set_features should update flags and reinit hardware if
      vlan offload settings were changed.
      Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
      Tested-by: default avatarNikita Danilov <ndanilov@aquantia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      04f207fb
    • Igor Russkikh's avatar
      net: aquantia: vlan offloads logic in datapath · 880b3ca5
      Igor Russkikh authored
      Update datapath by adding logic related to hardware assisted
      vlan strip/insert behaviour.
      Tested-by: default avatarNikita Danilov <ndanilov@aquantia.com>
      Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      880b3ca5
    • Igor Russkikh's avatar
      net: aquantia: adding fields and device features for vlan offload · d3ed7c5c
      Igor Russkikh authored
      Updating features and vlan_features with vlan HW offload.
      Added vlan_tag fields to rx/tx ring_buff to track vlan related data.
      Tested-by: default avatarNikita Danilov <ndanilov@aquantia.com>
      Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d3ed7c5c
    • Igor Russkikh's avatar
      net: aquantia: added vlan offload related macros and functions · 161dea83
      Igor Russkikh authored
      Register declaration macros required to work with vlan offload mode.
      Tested-by: default avatarNikita Danilov <ndanilov@aquantia.com>
      Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      161dea83
    • Igor Russkikh's avatar
      net: aquantia: make all files GPL-2.0-only · 17f54a3b
      Igor Russkikh authored
      It was noticed some files had -or-later, however overall driver has
      -only license. Clean this up.
      Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      17f54a3b
    • Igor Russkikh's avatar
      maintainers: declare aquantia atlantic driver maintenance · f94551c8
      Igor Russkikh authored
      Aquantia is resposible now for all new features and bugfixes.
      Reflect that in MAINTAINERS.
      Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f94551c8
    • Igor Russkikh's avatar
      net: aquantia: add documentation for the atlantic driver · 5a5d7a4d
      Igor Russkikh authored
      Document contains configuration options description,
      details and examples of driver various settings.
      Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a5d7a4d
    • Igor Russkikh's avatar
      net: aquantia: replace internal driver version code with uts · 2d3910c4
      Igor Russkikh authored
      As it was discussed some time previously, driver is better to
      report kernel version string, as it in a best way identifies
      the codebase.
      Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2d3910c4
    • David S. Miller's avatar
      Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 0b58f648
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      Intel Wired LAN Driver Updates 2019-06-26
      
      This series contains updates to ixgbe and i40e only.
      
      Mauro S. M. Rodrigues update the ixgbe driver to handle transceivers who
      comply with SFF-8472 but do not implement the Digital Diagnostic
      Monitoring (DOM) interface.  Update the driver to check the necessary
      bits to see if DOM is implemented before trying to read the additional
      256 bytes in the EEPROM for DOM data.
      
      Young Xiao fixes a potential divide by zero issue in ixgbe driver.
      
      Aleksandr fixes i40e to recognize 2.5 and 5.0 GbE link speeds so that it
      is not reported as "Unknown bps".  Fixes the driver to read the firmware
      LLDP agent status during DCB initialization, and to properly log the
      LLDP agent status to help with debugging when DCB fails to initialize.
      
      Martyna fixes i40e for the missing supported and advertised link modes
      information in ethtool.
      
      Jake fixes a function header comment that was incorrect for a PTP
      function in i40e.
      
      Maciej fixes an issue for i40e when a XDP program is loaded the
      descriptor count gets reset to the default value, resolve the issue by
      making the current descriptor count persistent across resets.
      
      Alice corrects a copyright date which she found to be incorrect.
      
      Piotr adds a log entry when the traffic class 0 is added or deleted, which
      was not being logged previously.
      
      Gustavo A. R. Silva updates i40e to use struct_size() where possible.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0b58f648
    • David S. Miller's avatar
      Merge branch 's390-qeth-next' · 096cc49c
      David S. Miller authored
      Julian Wiedmann says:
      
      ====================
      s390/qeth: updates 2019-06-27
      
      please apply another round of qeth updates for net-next.
      This completes the conversion of the control path to use dynamically
      allocated cmd buffers, along with some fine-tuning for the route
      validation fix that recently went into -net.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      096cc49c
    • Julian Wiedmann's avatar
      s390/qeth: move cast type selection into fill_header() · eca1d5c2
      Julian Wiedmann authored
      The cast type currently gets selected in .ndo_start_xmit, and is then
      piped through several layers until it's stored into the HW header.
      Push the selection down into qeth_l?_fill_header() to (1) reduce the
      number of xmit-wide parameters, and (2) merge the two route validation
      checks into just one.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      eca1d5c2
    • Julian Wiedmann's avatar
      s390/qeth: extract helper for route validation · 980f4568
      Julian Wiedmann authored
      As follow-up to commit 0cd6783d ("s390/qeth: check dst entry before use"),
      consolidate the dst_check() logic into a single helper and add a wrapper
      around the cast type selection.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      980f4568
    • Julian Wiedmann's avatar
      s390/qeth: consolidate skb RX processing in L3 driver · c097cc92
      Julian Wiedmann authored
      Use napi_gro_receive() to pass up all types of packets that a L3 device
      may receive.
      1) For proper L2 packets received by the IQD sniffer, this is the
         obvious thing to do.
      2) For af_iucv (which doesn't provide a GRO assist), the GRO code will
         transparently fall back to netif_receive_skb(). So there's no need to
         special-case this traffic in our code.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c097cc92
    • Julian Wiedmann's avatar
      s390/qeth: consolidate pm code · c4733c32
      Julian Wiedmann authored
      De-duplicate the pm callback implementations from the two sub-drivers,
      replacing them with core helpers that delegate to the .set_online and
      .set_offline callbacks.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c4733c32
    • Julian Wiedmann's avatar
      s390/qeth: streamline SNMP cmd code · d4c08afa
      Julian Wiedmann authored
      Apply some cleanups to qeth_snmp_command() and its callback:
      1. when accessing the user data, use the proper struct instead of
         hard-coded offsets. Also copy the request data straight into the
         allocated cmd, skipping the extra memdup_user() to a tmp buffer.
      2. capping the request length is no longer needed, the same check gets
         applied at a base level in qeth_alloc_cmd().
      3. clean up some duplicated (and misindented) trace statements.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d4c08afa
    • Julian Wiedmann's avatar
      s390/qeth: remove static cmd buffer infrastructure · c3b2218d
      Julian Wiedmann authored
      Now that all cmds are dynamically allocated, the code for static cmd
      buffers can go away entirely. Resulting in a nice reduction of
      code/data size & complexity, while removing the risk that
      qeth_clear_cmd_buffers() releases cmds that are still in-flight.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c3b2218d
    • Julian Wiedmann's avatar
      s390/qeth: dynamically allocate MPC cmds · f19f8fd2
      Julian Wiedmann authored
      The base MPC cmds are the last remaining user of the static cmd buffers.
      Port them over to use dynamic allocation, and stop backing the write
      channel's cmd buffers with pages.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f19f8fd2
    • Julian Wiedmann's avatar
      s390/qeth: dynamically allocate vnicc cmds · 2cfb4810
      Julian Wiedmann authored
      The VNICC code is somewhat quirky in that it defers the whole cmd setup
      to a common helper qeth_l2_vnicc_request(). Some of the cmd specifics
      are then passed in via parameter, while others are simply hard-coded.
      
      Split the whole machinery up into the usual format: one helper that
      allocates the cmd & fills in the common fields, while all the cmd
      originators take care of their sub-cmd type specific work.
      This makes it much easier to calculate the cmd's precise length, and
      reduces code complexity.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Reviewed-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2cfb4810
    • Julian Wiedmann's avatar
      s390/qeth: dynamically allocate diag cmds · 5cfbe10a
      Julian Wiedmann authored
      Add a new wrapper that allocates DIAG cmds of the right size, and fills
      in the common fields.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5cfbe10a
    • Julian Wiedmann's avatar
      s390/qeth: dynamically allocate various cmds with sub-types · b9150461
      Julian Wiedmann authored
      This patch converts the adapter, assist and bridgeport cmd paths to
      dynamic allocation. Most of the work is about re-organizing the cmd
      headers, calculating the correct cmd length, and filling in the right
      value in the sub-cmd's length field.
      
      Since we now also set the correct length for cmds that are not reflected
      by a fixed struct (ie SNMP), we can remove the work-around from
      qeth_snmp_command().
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b9150461
    • Julian Wiedmann's avatar
      s390/qeth: clarify parameter for simple assist cmds · 1c696c89
      Julian Wiedmann authored
      For code that uses qeth_send_simple_setassparms_prot(), we currently
      can't differentiate whether the cmd should contain (1) no parameter, or
      (2) a 4-byte parameter with value 0.
      At the moment this doesn't cause any trouble. But when using dynamically
      allocated cmds, we need to know whether to allocate & transmit an
      additional 4 bytes of zeroes.
      So instead of the raw parameter value, pass a parameter pointer
      (or NULL) to qeth_send_simple_setassparms_prot().
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1c696c89
    • Julian Wiedmann's avatar
      s390/qeth: dynamically allocate simple IPA cmds · a59d121d
      Julian Wiedmann authored
      This patch reduces the usage of the write channel's static cmd buffers,
      by dynamically allocating all simple IPA cmds (eg. STARTLAN, SETVMAC).
      It also converts the OSN path.
      
      Doing so requires some changes to how we calculate the cmd length.
      Currently when building IPA cmds, we're quite generous in how much data
      we send down to the device (basically the size of the biggest cmd we
      know). This is no real concern at the moment, since the static cmd
      buffers are backed with zeroed pages. But for dynamic allocations, the
      exact length matters. So this patch also adds the needed length
      calculations to each cmd path.
      
      Commands that have multiple subtypes (eg. SETADP) of differing length
      will be converted with follow-up patches.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a59d121d