1. 22 Jul, 2021 4 commits
    • Biju Das's avatar
      ravb: Remove extra TAB · 9f061b9a
      Biju Das authored
      Align the member description comments for struct ravb_desc by
      removing the extra TAB.
      Signed-off-by: default avatarBiju Das <biju.das.jz@bp.renesas.com>
      Reviewed-by: default avatarLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
      Reviewed-by: default avatarSergei Shtylyov <sergei.shtylyov@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9f061b9a
    • Biju Das's avatar
      ravb: Fix a typo in comment · 291d0a2c
      Biju Das authored
      Fix the typo RX->TX in comment, as the code following the comment
      process TX and not RX.
      Signed-off-by: default avatarBiju Das <biju.das.jz@bp.renesas.com>
      Reviewed-by: default avatarLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
      Reviewed-by: default avatarSergei Shtylyov <sergei.shtylyov@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      291d0a2c
    • Vladimir Oltean's avatar
      net: dsa: sja1105: make VID 4095 a bridge VLAN too · e40cba94
      Vladimir Oltean authored
      This simple series of commands:
      
      ip link add br0 type bridge vlan_filtering 1
      ip link set swp0 master br0
      
      fails on sja1105 with the following error:
      [   33.439103] sja1105 spi0.1: vlan-lookup-table needs to have at least the default untagged VLAN
      [   33.447710] sja1105 spi0.1: Invalid config, cannot upload
      Warning: sja1105: Failed to change VLAN Ethertype.
      
      For context, sja1105 has 3 operating modes:
      - SJA1105_VLAN_UNAWARE: the dsa_8021q_vlans are committed to hardware
      - SJA1105_VLAN_FILTERING_FULL: the bridge_vlans are committed to hardware
      - SJA1105_VLAN_FILTERING_BEST_EFFORT: both the dsa_8021q_vlans and the
        bridge_vlans are committed to hardware
      
      Swapping out a VLAN list and another in happens in
      sja1105_build_vlan_table(), which performs a delta update procedure.
      That function is called from a few places, notably from
      sja1105_vlan_filtering() which is called from the
      SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING handler.
      
      The above set of 2 commands fails when run on a kernel pre-commit
      8841f6e6 ("net: dsa: sja1105: make devlink property
      best_effort_vlan_filtering true by default"). So the priv->vlan_state
      transition that takes place is between VLAN-unaware and full VLAN
      filtering. So the dsa_8021q_vlans are swapped out and the bridge_vlans
      are swapped in.
      
      So why does it fail?
      
      Well, the bridge driver, through nbp_vlan_init(), first sets up the
      SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING attribute, and only then
      proceeds to call nbp_vlan_add for the default_pvid.
      
      So when we swap out the dsa_8021q_vlans and swap in the bridge_vlans in
      the SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING handler, there are no bridge
      VLANs (yet). So we have wiped the VLAN table clean, and the low-level
      static config checker complains of an invalid configuration. We _will_
      add the bridge VLANs using the dynamic config interface, albeit later,
      when nbp_vlan_add() calls us. So it is natural that it fails.
      
      So why did it ever work?
      
      Surprisingly, it looks like I only tested this configuration with 2
      things set up in a particular way:
      - a network manager that brings all ports up
      - a kernel with CONFIG_VLAN_8021Q=y
      
      It is widely known that commit ad1afb00 ("vlan_dev: VLAN 0 should be
      treated as "no vlan tag" (802.1p packet)") installs VID 0 to every net
      device that comes up. DSA treats these VLANs as bridge VLANs, and
      therefore, in my testing, the list of bridge_vlans was never empty.
      
      However, if CONFIG_VLAN_8021Q is not enabled, or the port is not up when
      it joins a VLAN-aware bridge, the bridge_vlans list will be temporarily
      empty, and the sja1105_static_config_reload() call from
      sja1105_vlan_filtering() will fail.
      
      To fix this, the simplest thing is to keep VID 4095, the one used for
      CPU-injected control packets since commit ed040abc ("net: dsa:
      sja1105: use 4095 as the private VLAN for untagged traffic"), in the
      list of bridge VLANs too, not just the list of tag_8021q VLANs. This
      ensures that the list of bridge VLANs will never be empty.
      
      Fixes: ec5ae610 ("net: dsa: sja1105: save/restore VLANs using a delta commit method")
      Reported-by: default avatarRadu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com>
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e40cba94
    • Wei Wang's avatar
      tcp: disable TFO blackhole logic by default · 213ad73d
      Wei Wang authored
      Multiple complaints have been raised from the TFO users on the internet
      stating that the TFO blackhole logic is too aggressive and gets falsely
      triggered too often.
      (e.g. https://blog.apnic.net/2021/07/05/tcp-fast-open-not-so-fast/)
      Considering that most middleboxes no longer drop TFO packets, we decide
      to disable the blackhole logic by setting
      /proc/sys/net/ipv4/tcp_fastopen_blackhole_timeout_set to 0 by default.
      
      Fixes: cf1ef3f0 ("net/tcp_fastopen: Disable active side TFO in certain scenarios")
      Signed-off-by: default avatarWei Wang <weiwan@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Acked-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
      Acked-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      213ad73d
  2. 21 Jul, 2021 8 commits
    • Xin Long's avatar
      sctp: do not update transport pathmtu if SPP_PMTUD_ENABLE is not set · 02dc2ee7
      Xin Long authored
      Currently, in sctp_packet_config(), sctp_transport_pmtu_check() is
      called to update transport pathmtu with dst's mtu when dst's mtu
      has been changed by non sctp stack like xfrm.
      
      However, this should only happen when SPP_PMTUD_ENABLE is set, no
      matter where dst's mtu changed. This patch is to fix by checking
      SPP_PMTUD_ENABLE flag before calling sctp_transport_pmtu_check().
      
      Thanks Jacek for reporting and looking into this issue.
      
      v1->v2:
        - add the missing "{" to fix the build error.
      
      Fixes: 69fec325 ('Revert "sctp: remove sctp_transport_pmtu_check"')
      Reported-by: default avatarJacek Szafraniec <jacek.szafraniec@nokia.com>
      Tested-by: default avatarJacek Szafraniec <jacek.szafraniec@nokia.com>
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      02dc2ee7
    • Arnd Bergmann's avatar
      net: ixp46x: fix ptp build failure · 161dcc02
      Arnd Bergmann authored
      The rework of the ixp46x cpu detection left the network driver in
      a half broken state:
      
      drivers/net/ethernet/xscale/ptp_ixp46x.c: In function 'ptp_ixp_init':
      drivers/net/ethernet/xscale/ptp_ixp46x.c:290:51: error: 'IXP4XX_TIMESYNC_BASE_VIRT' undeclared (first use in this function)
        290 |                 (struct ixp46x_ts_regs __iomem *) IXP4XX_TIMESYNC_BASE_VIRT;
            |                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
      drivers/net/ethernet/xscale/ptp_ixp46x.c:290:51: note: each undeclared identifier is reported only once for each function it appears in
      drivers/net/ethernet/xscale/ptp_ixp46x.c: At top level:
      drivers/net/ethernet/xscale/ptp_ixp46x.c:323:1: error: data definition has no type or storage class [-Werror]
        323 | module_init(ptp_ixp_init);
      
      I have patches to complete the transition for a future release, but
      for the moment, add the missing include statements to get it to build
      again.
      
      Fixes: 09aa9aab ("soc: ixp4xx: move cpu detection to linux/soc/ixp4xx/cpu.h")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      161dcc02
    • Sukadev Bhattiprolu's avatar
      ibmvnic: Remove the proper scrq flush · bb55362b
      Sukadev Bhattiprolu authored
      Commit 65d6470d ("ibmvnic: clean pending indirect buffs during reset")
      intended to remove the call to ibmvnic_tx_scrq_flush() when the
      ->resetting flag is true and was tested that way. But during the final
      rebase to net-next, the hunk got applied to a block few lines below
      (which happened to have the same diff context) and the wrong call to
      ibmvnic_tx_scrq_flush() got removed.
      
      Fix that by removing the correct ibmvnic_tx_scrq_flush() and restoring
      the one that was incorrectly removed.
      
      Fixes: 65d6470d ("ibmvnic: clean pending indirect buffs during reset")
      Reported-by: default avatarDany Madden <drt@linux.ibm.com>
      Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bb55362b
    • David S. Miller's avatar
      Merge branch 'pmtu-esp' · 3ddaed6b
      David S. Miller authored
      Vadim Fedorenko ays:
      
      ====================
      Fix PMTU for ESP-in-UDP encapsulation
      
      Bug 213669 uncovered regression in PMTU discovery for UDP-encapsulated
      routes and some incorrect usage in udp tunnel fields. This series fixes
      problems and also adds such case for selftests
      
      v3:
       - update checking logic to account SCTP use case
      v2:
       - remove refactor code that was in first patch
       - move checking logic to __udp{4,6}_lib_err_encap
       - add more tests, especially routed configuration
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3ddaed6b
    • Vadim Fedorenko's avatar
      selftests: net: add ESP-in-UDP PMTU test · ece1278a
      Vadim Fedorenko authored
      The case of ESP in UDP encapsulation was not covered before. Add
      cases of local changes of MTU and difference on routed path.
      Signed-off-by: default avatarVadim Fedorenko <vfedorenko@novek.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ece1278a
    • Vadim Fedorenko's avatar
      udp: check encap socket in __udp_lib_err · 9bfce73c
      Vadim Fedorenko authored
      Commit d26796ae ("udp: check udp sock encap_type in __udp_lib_err")
      added checks for encapsulated sockets but it broke cases when there is
      no implementation of encap_err_lookup for encapsulation, i.e. ESP in
      UDP encapsulation. Fix it by calling encap_err_lookup only if socket
      implements this method otherwise treat it as legal socket.
      
      Fixes: d26796ae ("udp: check udp sock encap_type in __udp_lib_err")
      Signed-off-by: default avatarVadim Fedorenko <vfedorenko@novek.ru>
      Reviewed-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9bfce73c
    • Xin Long's avatar
      sctp: update active_key for asoc when old key is being replaced · 58acd100
      Xin Long authored
      syzbot reported a call trace:
      
        BUG: KASAN: use-after-free in sctp_auth_shkey_hold+0x22/0xa0 net/sctp/auth.c:112
        Call Trace:
         sctp_auth_shkey_hold+0x22/0xa0 net/sctp/auth.c:112
         sctp_set_owner_w net/sctp/socket.c:131 [inline]
         sctp_sendmsg_to_asoc+0x152e/0x2180 net/sctp/socket.c:1865
         sctp_sendmsg+0x103b/0x1d30 net/sctp/socket.c:2027
         inet_sendmsg+0x99/0xe0 net/ipv4/af_inet.c:821
         sock_sendmsg_nosec net/socket.c:703 [inline]
         sock_sendmsg+0xcf/0x120 net/socket.c:723
      
      This is an use-after-free issue caused by not updating asoc->shkey after
      it was replaced in the key list asoc->endpoint_shared_keys, and the old
      key was freed.
      
      This patch is to fix by also updating active_key for asoc when old key is
      being replaced with a new one. Note that this issue doesn't exist in
      sctp_auth_del_key_id(), as it's not allowed to delete the active_key
      from the asoc.
      
      Fixes: 1b1e0bc9 ("sctp: add refcnt support for sh_key")
      Reported-by: syzbot+b774577370208727d12b@syzkaller.appspotmail.com
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      58acd100
    • Sayanta Pattanayak's avatar
      r8169: Avoid duplicate sysfs entry creation error · e9a72f87
      Sayanta Pattanayak authored
      When registering the MDIO bus for a r8169 device, we use the PCI
      bus/device specifier as a (seemingly) unique device identifier.
      However the very same BDF number can be used on another PCI segment,
      which makes the driver fail probing:
      
      [ 27.544136] r8169 0002:07:00.0: enabling device (0000 -> 0003)
      [ 27.559734] sysfs: cannot create duplicate filename '/class/mdio_bus/r8169-700'
      ....
      [ 27.684858] libphy: mii_bus r8169-700 failed to register
      [ 27.695602] r8169: probe of 0002:07:00.0 failed with error -22
      
      Add the segment number to the device name to make it more unique.
      
      This fixes operation on ARM N1SDP boards, with two boards connected
      together to form an SMP system, and all on-board devices showing up
      twice, just on different PCI segments. A similar issue would occur on
      large systems with many PCI slots and multiple RTL8169 NICs.
      
      Fixes: f1e911d5 ("r8169: add basic phylib support")
      Signed-off-by: default avatarSayanta Pattanayak <sayanta.pattanayak@arm.com>
      [Andre: expand commit message, use pci_domain_nr()]
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      Acked-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e9a72f87
  3. 20 Jul, 2021 16 commits
  4. 19 Jul, 2021 12 commits
    • Subbaraya Sundeep's avatar
      octeontx2-af: Introduce internal packet switching · 23109f8d
      Subbaraya Sundeep authored
      As of now any communication between CGXs PFs and
      their VFs within the system is possible only by
      external switches sending packets back to the
      system. This patch adds internal switching support.
      Broadcast packet replication is not covered here.
      RVU admin function (AF) maintains MAC addresses
      of all interfaces in the system. When switching is
      enabled, MCAM entries are allocated to install rules
      such that packets with DMAC matching any of the
      internal interface MAC addresses is punted back
      into the system via the loopback channel.
      On the receive side the default unicast rules
      are modified to not check for ingress channel.
      So any packet with matching DMAC irrespective of
      which interface it is coming from will be forwarded
      to the respective PF/VF interface.
      The transmit side rules and default unicast rules
      are updated if user changes MAC address of an interface.
      Signed-off-by: default avatarSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: default avatarSunil Kovvuri Goutham <sgoutham@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      23109f8d
    • Subbaraya Sundeep's avatar
      octeontx2-af: Prepare for allocating MCAM rules for AF · cb7a6b3b
      Subbaraya Sundeep authored
      AF till now only manages the allocation and freeing of
      MCAM rules for other PF/VFs in system. To implement
      L2 switching between all CGX mapped PF and VFs, AF
      requires MCAM entries for DMAC rules for each PF and VF.
      This patch modifies AF driver such that AF can also
      allocate MCAM rules and install rules for other
      PFs and VFs. All the checks like channel verification
      for RX rules and PF_FUNC verification for TX rules are
      relaxed in case AF is allocating or installing rules.
      Also all the entry and counter to owner mappings are
      set to NPC_MCAM_INVALID_MAP when they are free indicating
      those are not allocated to AF nor PF/VFs.
      This patch also ensures that AF allocated and installed
      entries are displayed in debugfs.
      Signed-off-by: default avatarSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: default avatarSunil Kovvuri Goutham <sgoutham@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cb7a6b3b
    • Subbaraya Sundeep's avatar
      octeontx2-af: Enable transmit side LBK link · fa2bf6ba
      Subbaraya Sundeep authored
      For enabling VF-VF switching the packets egressing
      out of CGX mapped VFs needed to be sent to LBK
      so that same packets are received back to the system.
      But the LBK link also needs to be enabled in addition
      to a VF's mapped CGX_LMAC link otherwise hardware
      raises send error interrupt indicating selected LBK
      link is not enabled in NIX_AF_TL3_TL2X_LINKX_CFG register.
      Hence this patch enables all LBK links in
      TL3_TL2_LINKX_CFG registers.
      Also to enable packet flow between PFs/VFs of NIX0
      to PFs/VFs of NIX1(in 98xx silicon) the NPC TX DMAC
      rules has to be installed such that rules must be hit
      for any TX interface i.e., NIX0-TX or NIX1-TX provided
      DMAC match creteria is met. Hence this patch changes the
      behavior such that MCAM is programmed to match with any
      NIX0/1-TX interface for TX rules.
      Signed-off-by: default avatarSubbaraya Sundeep <sbhatta@marvell.com>
      Signed-off-by: default avatarSunil Kovvuri Goutham <sgoutham@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fa2bf6ba
    • Eric Dumazet's avatar
      net/tcp_fastopen: fix data races around tfo_active_disable_stamp · 6f20c8ad
      Eric Dumazet authored
      tfo_active_disable_stamp is read and written locklessly.
      We need to annotate these accesses appropriately.
      
      Then, we need to perform the atomic_inc(tfo_active_disable_times)
      after the timestamp has been updated, and thus add barriers
      to make sure tcp_fastopen_active_should_disable() wont read
      a stale timestamp.
      
      Fixes: cf1ef3f0 ("net/tcp_fastopen: Disable active side TFO in certain scenarios")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Wei Wang <weiwan@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Acked-by: default avatarWei Wang <weiwan@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f20c8ad
    • David S. Miller's avatar
      Merge branch 'dt-bindinga-dwmac' · a0050653
      David S. Miller authored
      Joakim Zhang says:
      
      ====================
      dt-bindings: net: dwmac-imx: convert
      
      This patch set intends to convert imx dwmac binding to schema, and fixes
      found by dt_binding_check and dtbs_check.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a0050653
    • Joakim Zhang's avatar
      arm64: dts: imx8mp: change interrupt order per dt-binding · 77e5253d
      Joakim Zhang authored
      This patch changs interrupt order which found by dtbs_check.
      
      $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/net/nxp,dwmac-imx.yaml
      arch/arm64/boot/dts/freescale/imx8mp-evk.dt.yaml: ethernet@30bf0000: interrupt-names:0: 'macirq' was expected
      arch/arm64/boot/dts/freescale/imx8mp-evk.dt.yaml: ethernet@30bf0000: interrupt-names:1: 'eth_wake_irq' was expected
      
      According to Documentation/devicetree/bindings/net/snps,dwmac.yaml, we
      should list interrupt in it's order.
      Signed-off-by: default avatarJoakim Zhang <qiangqing.zhang@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      77e5253d
    • Joakim Zhang's avatar
      dt-bindings: net: imx-dwmac: convert imx-dwmac bindings to yaml · e314a07e
      Joakim Zhang authored
      In order to automate the verification of DT nodes covert imx-dwmac to
      nxp,dwmac-imx.yaml, and pass below checking.
      
      $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/net/nxp,dwmac-imx.yaml
      $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/net/nxp,dwmac-imx.yaml
      Signed-off-by: default avatarJoakim Zhang <qiangqing.zhang@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e314a07e
    • Joakim Zhang's avatar
      dt-bindings: net: snps,dwmac: add missing DWMAC IP version · bdad810e
      Joakim Zhang authored
      Add missing DWMAC IP version in snps,dwmac.yaml which found by below
      command, as NXP i.MX8 families support SNPS DWMAC 5.10a IP.
      
      $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/net/nxp,dwmac-imx.yaml
      Documentation/devicetree/bindings/net/nxp,dwmac-imx.example.dt.yaml:
      ethernet@30bf0000: compatible: None of ['nxp,imx8mp-dwmac-eqos', 'snps,dwmac-5.10a'] are valid under the given schema
      Signed-off-by: default avatarJoakim Zhang <qiangqing.zhang@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bdad810e
    • Randy Dunlap's avatar
      net: hisilicon: rename CACHE_LINE_MASK to avoid redefinition · b16f3299
      Randy Dunlap authored
      Building on ARCH=arc causes a "redefined" warning, so rename this
      driver's CACHE_LINE_MASK to avoid the warning.
      
      ../drivers/net/ethernet/hisilicon/hip04_eth.c:134: warning: "CACHE_LINE_MASK" redefined
        134 | #define CACHE_LINE_MASK   0x3F
      In file included from ../include/linux/cache.h:6,
                       from ../include/linux/printk.h:9,
                       from ../include/linux/kernel.h:19,
                       from ../include/linux/list.h:9,
                       from ../include/linux/module.h:12,
                       from ../drivers/net/ethernet/hisilicon/hip04_eth.c:7:
      ../arch/arc/include/asm/cache.h:17: note: this is the location of the previous definition
         17 | #define CACHE_LINE_MASK  (~(L1_CACHE_BYTES - 1))
      
      Fixes: d413779c ("net: hisilicon: Add an tx_desc to adapt HI13X1_GMAC")
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b16f3299
    • David S. Miller's avatar
      Merge branch 'bnxt_en-fixes' · 1dd271d9
      David S. Miller authored
      Michael Chan says:
      
      ====================
      bnxt_en: Bug fixes
      
      Most of the fixes in this series have to do with error recovery.  They
      include error path handling when the error recovery has to abort, and
      the rediscovery of capabilities (PTP and RoCE) after firmware reset
      that may result in capability changes.
      
      Two other fixes are to reject invalid ETS settings and to validate
      VLAN protocol in the RX path.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1dd271d9
    • Michael Chan's avatar
      bnxt_en: Fix PTP capability discovery · de5bf194
      Michael Chan authored
      The current PTP initialization logic does not account for firmware
      reset that may cause PTP capability to change.  The valid pointer
      bp->ptp_cfg is used to indicate that the device is capable of PTP
      and that it has been initialized.  So we must clean up bp->ptp_cfg
      and free it if the firmware after reset does not support PTP.
      
      Fixes: 93cb62d9 ("bnxt_en: Enable hardware PTP support")
      Cc: Richard Cochran <richardcochran@gmail.com>
      Reviewed-by: default avatarPavan Chebbi <pavan.chebbi@broadcom.com>
      Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      de5bf194
    • Michael Chan's avatar
      bnxt_en: Move bnxt_ptp_init() to bnxt_open() · d7859afb
      Michael Chan authored
      The device needs to be in ifup state for PTP to function, so move
      bnxt_ptp_init() to bnxt_open().  This means that the PHC will be
      registered during bnxt_open().
      
      This also makes firmware reset work correctly.  PTP configurations
      may change after firmware upgrade or downgrade.  bnxt_open() will
      be called after firmware reset, so it will work properly.
      
      bnxt_ptp_start() is now incorporated into bnxt_ptp_init().  We now
      also need to call bnxt_ptp_clear() in bnxt_close().
      
      Fixes: 93cb62d9 ("bnxt_en: Enable hardware PTP support")
      Cc: Richard Cochran <richardcochran@gmail.com>
      Reviewed-by: default avatarPavan Chebbi <pavan.chebbi@broadcom.com>
      Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d7859afb