1. 04 Jul, 2022 8 commits
    • Amit Cohen's avatar
      mlxsw: Add new FID families for unified bridge model · d4324e31
      Amit Cohen authored
      In the unified bridge model, mlxsw will no longer emulate 802.1Q FIDs
      using 802.1D FIDs. The new FID table will look as follows:
      
           +---------------+
           | 802.1q FIDs   | 4K entries
           | [1..4094]     |
           +---------------+
           | 802.1d FIDs   | 1K entries
           | [4095..5118]  |
           +---------------+
           | Dummy FIDs    | 1 entry
           | [5119..5119]  |
           +---------------+
           | rFIDs         | 11K entries
           | [5120..16383] |
           +---------------+
      
      In order to make the change easier to review, four new temporary FID
      families will be added (e.g., MLXSW_SP_FID_TYPE_8021D_UB) and will not
      be registered with the FID core until mlxsw is flipped to use the unified
      bridge model.
      
      Add .1d, rfid and dummy FID families for unified bridge, the next patch
      will add .1q family separately as it requires more changes.
      
      The following changes are required:
      1. Add 'smpe_index_valid' field to 'struct mlxsw_sp_fid_family' and set
         SFMR.smpe accordingly. SMPE index is reserved for rFIDs, as their
         flooding is handled by firmware, and always reserved in Spectrum-1,
         as it is configured as part of PGT table.
      
      2. Add 'ubridge' field to 'struct mlxsw_sp_fid_family'. This field will
         be removed later, use it in mlxsw_sp_fid_family_{register,unregister}()
         to skip the registration / unregistration of the new families when the
         legacy model is used.
      
      3. Indexes - the start and end indexes of each FID family will need to be
         changed according to the above diagram.
      
      4. Add flood tables for unified bridge model, use 'fid_offset' as table
         type, as in the new model the access to flood tables will be using
         'fid_offset' calculation.
      
      5. FID family operation changes:
         a. rFID supposed to be created using SFMR, as it is not created by
            firmware using unified bridge model.
         b. port_vid_map() should perform SVFA for rFID, as the mapping is not
            created by firmware using unified bridge model.
         c. flood_index() is not aligned to the new model, as this function will
            be removed later.
      Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d4324e31
    • Amit Cohen's avatar
      mlxsw: Add support for VLAN RIFs · 662761d8
      Amit Cohen authored
      Router interfaces (RIFs) constructed on top of VLAN-aware bridges are of
      'VLAN' type, whereas RIFs constructed on top of VLAN-unaware bridges are of
      'FID' type.
      
      Currently 802.1Q FIDs are emulated using 802.1D FIDs, therefore VLAN RIFs
      are emulated using FID RIFs. As part of converting the driver to use
      unified bridge model, 802.1Q FIDs and VLAN RIFs will be used.
      
      The egress FID is required for VLAN RIFs in Spectrum-2 and above, but not
      in Spectrum-1, as in Spectrum-1 the mapping for VLAN RIFs is VID->FID,
      while in other ASICs it is FID->FID. The reason for the change is that it
      is more scalable to reuse the FID->FID entry than creating multiple
      {Port, VID}->FID entries for the router port. Use the existing operation
      structure to separate the configuration between different ASICs.
      
      Add support for VLAN RIFs, most of the configurations are same to FID
      RIFs.
      Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      662761d8
    • Amit Cohen's avatar
      mlxsw: Configure egress FID classification after routing · 058de325
      Amit Cohen authored
      After routing, a packet needs to perform an L2 lookup using the DMAC it got
      from the routing and a FID. In unified bridge model, the egress FID
      configuration needs to be performed by software.
      
      It is configured by RITR for both sub-port RIFs and FID RIFs. Currently
      FID RIFs already configure eFID. Add eFID configuration for sub-port RIFs.
      Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      058de325
    • Amit Cohen's avatar
      mlxsw: spectrum_router: Do not configure VID for sub-port RIFs · 2c3ae763
      Amit Cohen authored
      The field 'vid' in RITR is reserved when unified bridge model is used
      and the RIF's type is sub-port RIF. Instead, ingress VID is configured via
      SVFA and egress VID is configured via REIV.
      
      Set 'vid' to zero in RITR register for sub-port RIF when unified bridge
      model is used.
      Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2c3ae763
    • Amit Cohen's avatar
      mlxsw: spectrum_fid: Configure layer 3 egress VID classification · d4b464d2
      Amit Cohen authored
      After routing, the device always consults a table that determines the
      packet's egress VID based on {egress RIF, egress local port}. In the
      unified bridge model, it is up to software to maintain this table via REIV
      register.
      
      The table needs to be updated in the following flows:
      1. When a RIF is set on a FID, need to iterate over the FID's {Port, VID}
         list and issue REIV write to map the {RIF, Port} to the given VID.
      2. When a {Port, VID} is mapped to a FID and the FID already has a RIF,
         need to issue REIV write with a single record to map the {RIF, Port}
         to the given VID.
      
      REIV register supports a simultaneous update of 256 ports, so use this
      capability for the first flow.
      
      Handle the two above mentioned flows.
      
      Add mlxsw_sp_fid_evid_map() function to handle egress VID classification
      for both unicast and multicast. Layer 2 multicast configuration is already
      done in the driver, just move it to the new function.
      Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d4b464d2
    • Amit Cohen's avatar
      mlxsw: Configure ingress RIF classification · fea20547
      Amit Cohen authored
      Before layer 2 forwarding, the device classifies an incoming packet to
      a FID. The classification is done based on one of the following keys:
      
      1. FID
      2. VNI (after decapsulation)
      3. VID / {Port, VID}
      
      After classification, the FID is known, but also all the attributes of
      the FID, such as the router interface (RIF) via which a packet that
      needs to be routed will ingress the router block.
      
      In the legacy model, when a RIF was created / destroyed, it was
      firmware's responsibility to update it in the previously mentioned FID
      classification records. In the unified bridge model, this responsibility
      moved to software.
      
      The third classification requires to iterate over the FID's {Port, VID}
      list and issue SVFA write with the correct mapping table according to the
      port's mode (virtual or not). We never map multiple VLANs to the same FID
      using VID->FID mapping, so such a mapping needs to be performed once.
      
      When a new FID classification entry is configured and the FID already has
      a RIF, set the RIF as part of SVFA configuration.
      
      The reverse needs to be done when clearing a RIF from a FID. Currently,
      clearing is done by issuing mlxsw_sp_fid_rif_set() with a NULL RIF pointer.
      Instead, introduce mlxsw_sp_fid_rif_unset().
      
      Note that mlxsw_sp_fid_rif_set() is called after the RIF is fully
      operational, so it conforms to the internal requirement regarding
      SVFA.irif_v: "Must not be set for a non-enabled RIF".
      
      Do not set the ingress RIF for rFIDs, as the {Port, VID}->rFID entry is
      configured by firmware when legacy model is used, a next patch will
      handle this configuration for rFIDs and unified bridge model.
      Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fea20547
    • Amit Cohen's avatar
      mlxsw: spectrum_fid: Configure VNI to FID classification · 8cfc7f77
      Amit Cohen authored
      In the new model, SFMR no longer configures both VNI->FID and FID->VNI
      classifications, but only the later. The former needs to be configured via
      SVFA.
      
      Add SVFA configuration as part of vni_set() and vni_clear().
      Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8cfc7f77
    • Amit Cohen's avatar
      mlxsw: Configure egress VID for unicast FDB entries · 53d7ae53
      Amit Cohen authored
      Using unified bridge model, firmware no longer configures the egress VID
      "under the hood" and moves this responsibility to software.
      
      For layer 2, this means that software needs to determine the egress VID
      for both unicast (i.e., FDB) and multicast (i.e., MDB and flooding) flows.
      
      Unicast FDB records and unicast LAG FDB records have new fields - "set_vid"
      and "vid", set them. For records which point to router port, do not set
      these fields.
      Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      53d7ae53
  2. 03 Jul, 2022 16 commits
  3. 02 Jul, 2022 16 commits
    • Jianbo Liu's avatar
      net/mlx5e: TC, Support offloading police action · a8d52b02
      Jianbo Liu authored
      Add parsing support by implementing struct mlx5e_tc_act for police
      action.
      
      TC rule with police actions is broken down into several rules in
      different tables. One rule with the original match in the original
      flow table, which set fte_id, do metering, and jump to the post_meter
      table. If there are more police actions, more rules are created for
      each of them. Besides, a last rule is created in the end.
      
      In post_meter table, there are two pre-defined rules, one is to drop
      packet if its packet color is RED, the other is to jump back to
      post_act table. As fte_id is updated before jumping, the rule for next
      meter is matched to do another round of metering (if there are
      multiple meters in the flow rule). Otherwise, last fte_id is matched
      and do the original actions.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Reviewed-by: default avatarAriel Levkovich <lariel@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      a8d52b02
    • Jianbo Liu's avatar
      net/mlx5e: Add flow_action to parse state · 03a92a93
      Jianbo Liu authored
      As a preparation for validating police action, adds flow_action to
      parse state, which is to passed to parsing callbacks.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      03a92a93
    • Jianbo Liu's avatar
      net/mlx5e: Add post meter table for flow metering · 06fe52a4
      Jianbo Liu authored
      Flow meter object monitors the packets rate for the flows it is
      attached to, and color packets with GREEN or RED. The post meter table
      is used to check the color. Packet is dropped if it's RED, or
      forwarded to post_act table if GREEN.
      
      Packet color will be set to 8 LSB of the register C5, so they are
      reserved for metering, which are previously used for matching fte id.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Reviewed-by: default avatarAriel Levkovich <lariel@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      06fe52a4
    • Jianbo Liu's avatar
      net/mlx5e: Add generic macros to use metadata register mapping · 17c5da03
      Jianbo Liu authored
      There are many definitions to get bits and mask for different types of
      metadata register mapping, add generic macros to unify them.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Reviewed-by: default avatarAriel Levkovich <lariel@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      17c5da03
    • Jianbo Liu's avatar
      net/mlx5e: Get or put meter by the index of tc police action · b8acfd4f
      Jianbo Liu authored
      Add functions to create and destroy flow meter aso object.
      This object only supports the range allocation. 64 objects are
      allocated at a time, and there are two meters in each object.
      Usually only one meter is allocated for a flow, so bitmap is used
      to manage these 128 meters.
      
      TC police action is mapped to hardware meter. As the index is unique
      for each police action, add APIs to allocate or free hardware meter by
      the index. If the meter is already created, increment its refcnt,
      otherwise create new one. If police action has different parameters,
      update hardware meter accordingly.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      b8acfd4f
    • Jianbo Liu's avatar
      net/mlx5e: Add support to modify hardware flow meter parameters · 6ddac26c
      Jianbo Liu authored
      The policing rate and burst from user are converted to flow meter
      parameters in hardware. These parameters are set or modified by
      ACCESS_ASO WQE, add function to support it.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Reviewed-by: default avatarAriel Levkovich <lariel@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      6ddac26c
    • Jianbo Liu's avatar
      net/mlx5e: Prepare for flow meter offload if hardware supports it · 74e6b2a8
      Jianbo Liu authored
      If flow meter aso object is supported, set the allocated range, and
      initialize aso wqe.
      
      The allocated range is indicated by log_meter_aso_granularity in HW
      capabilities, and currently is 6.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Reviewed-by: default avatarMaor Dickman <maord@nvidia.com>
      Reviewed-by: default avatarAriel Levkovich <lariel@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      74e6b2a8
    • Jianbo Liu's avatar
      net/mlx5: Implement interfaces to control ASO SQ and CQ · c491ded0
      Jianbo Liu authored
      Add interfaces to use ASO object control channel. The channel consists
      of a control SQ and CQ to which user can post ACCESS_ASO work requests
      to modify ASO objects. The functions to get wqe from SQ, fill wqe,
      post the request, and poll the completion of the work, are provided.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarAriel Levkovich <lariel@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      c491ded0
    • Jianbo Liu's avatar
      net/mlx5: Add support to create SQ and CQ for ASO · cdd04f4d
      Jianbo Liu authored
      Add a separate API to create SQ and CQ for advanced steering
      operations (ASO).
      
      Since the mlx5_en API to create these resources is strongly coupled
      with netdev channels and datapath elements, this API provides an
      alternative for creating send queues that are used for ASO.
      
      Currently the API allows creating channels with 2 wqbbs only - meaning
      the support will be for a single ACCESS_ASO wqe with data at a time.
      Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
      Reviewed-by: default avatarAriel Levkovich <lariel@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      cdd04f4d
    • Chris Mi's avatar
      net/mlx5: E-switch: Change eswitch mode only via devlink command · b6f2846a
      Chris Mi authored
      Enable or disable switchdev according to the eswitch mode set by
      devlink command. So it is not changed by other functions anymore.
      Signed-off-by: default avatarChris Mi <cmi@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      b6f2846a
    • Chris Mi's avatar
      net/mlx5: E-switch, Remove dependency between sriov and eswitch mode · f019679e
      Chris Mi authored
      Currently, there are three eswitch modes, none, legacy and switchdev.
      None is the default mode. Remove redundant none mode as eswitch mode
      should always be either legacy mode or switchdev mode.
      
      With this patch, there are two behavior changes:
      
      1. Legacy becomes the default mode. When querying eswitch mode using
         devlink, a valid mode is always returned.
      2. When disabling sriov, the eswitch mode will not change, only vfs
         are unloaded.
      Signed-off-by: default avatarChris Mi <cmi@nvidia.com>
      Reviewed-by: default avatarMaor Dickman <maord@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      f019679e
    • Chris Mi's avatar
      net/mlx5: E-switch, Introduce flag to indicate if fdb table is created · fbd43b72
      Chris Mi authored
      Introduce flag to indicate if fdb table is created as a pre-step
      to prepare for removing dependency between sriov and eswitch mode
      in the downstream patches.
      Signed-off-by: default avatarChris Mi <cmi@nvidia.com>
      Reviewed-by: default avatarMark Bloch <mbloch@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      fbd43b72
    • Chris Mi's avatar
      net/mlx5: E-switch, Introduce flag to indicate if vport acl namespace is created · ea5872dd
      Chris Mi authored
      Eswitch vport acl namespace is needed when loading vfs. There is
      no need to free and reallocate it when switching eswitch mode.
      Introduce flag to indicate if it is created or not. When needed,
      create it. Only free it when the driver is unloaded or in bare
      metal mode.
      Signed-off-by: default avatarChris Mi <cmi@nvidia.com>
      Reviewed-by: default avatarMark Bloch <mbloch@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      ea5872dd
    • Dan Carpenter's avatar
      net/mlx5: delete dead code in mlx5_esw_unlock() · 8e755f7a
      Dan Carpenter authored
      Smatch complains about this function:
      
          drivers/net/ethernet/mellanox/mlx5/core/eswitch.c:2000 mlx5_esw_unlock()
          warn: inconsistent returns '&esw->mode_lock'.
      
      Before commit ec2fa47d ("net/mlx5: Lag, use lag lock") there
      used to be a matching mlx5_esw_lock() function and the lock and
      unlock functions were symmetric.  But now we take the lock
      unconditionally and must unlock unconditionally as well.
      
      As near as I can tell this is dead code and can just be deleted.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      8e755f7a
    • Leon Romanovsky's avatar
      net/mlx5: Delete ipsec_fs header file as not used · 9de64ae8
      Leon Romanovsky authored
      ipsec_fs.h is not used and can be safely deleted.
      Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      9de64ae8
    • David S. Miller's avatar
      Merge branch 'lan937x-dsa-driver' · 8e60a041
      David S. Miller authored
      Arun Ramadoss says:
      
      ====================
      net: dsa: microchip: DSA Driver support for LAN937x
      
      LAN937x is a Multi-Port 100BASE-T1 Ethernet Physical Layer switch
      compliant with the IEEE 802.3bw-2015 specification. The device provides
      100 Mbit/s transmit and receive capability over a single Unshielded
      Twisted Pair (UTP) cable. LAN937x is successive revision of KSZ series
      switch.
      This series of patches provide the DSA driver support for
      Microchip LAN937X switch through MII/RMII interface. The RGMII interface
      support will be added in the follow up series.  LAN937x uses the most of
      functionality of KSZ9477.
      
      The LAN937x switch series family consists of following SKUs:
      
      LAN9370:
        - 4 T1 Phys
        - 1 RGMII port
      
      LAN9371:
        - 3 T1 Phys & 1 TX Phy
        - 2 RGMII ports
      
      LAN9372:
        - 5 T1 Phys & 1 TX Phy
        - 2 RGMII ports
      
      LAN9373:
        - 5 T1 Phys
        - 2 RGMII
        - 1 SGMII port
      
      LAN9374:
        - 6 T1 Phys
        - 2 RGMII ports
      
      Changes in v15:
      - fixed compilation issue.
      - Updated the phylink_mac_link_up to check only for 10/100/1000 speed.
      
      Changes in v14:
      - Updated the patch series to latest ksz code refactoring.
      - RGMII register configuration is removed from the series. It will be added in
      the follow up patch series.
      
      Changes in v13:
      - Fixed the compilation issue in patch 5 and 6
      
      Changes in v12:
      - Removed the reduntant spi indirect enable in lan937x_init
      - Used the ksz_port_stp_state_set function
      - Apply rgmii internal delay only if it is rgmii port
      - Set the bit for 100baseTx in phylink_get_caps
      - Moved the ethtool related API from patch 5 to 7
      - Moved lan_alu_entry struct in lan937x_dev.h from patch 5 to 9
      - Moved lan_vlan_entry in lan937x_dev.h from patch 5 to 10
      - Used the ksz_get_stats64 function for get_stats64 hook
      - Splitted the patch 5. one for port configuration, spi driver, phy read &
        write and mtu configuration.
      - Updated the indentation in ethernet-controller.yaml
      - lan937x.yaml: Removed the blank lines, updated the ethernet handle to macb0.
        Added the rgmii internal delay only for the ports.
      
      Changes in v11:
      - Tagged as RFC to get the feedback for the subpatches 1/10, 5/10 and 6/10
      
      Changes in v10:
      - dsa.yaml: dropped moving mdio properties to dsa.yaml as per the feedback
      https://patchwork.kernel.org/project/netdevbpf/patch/20220318085540.281721-3-prasanna.vengateshan@microchip.com/#24787466
      - microchip,lan937x.yaml: Naming convention changes in the example
      - lan937x_main.c: Moving configurations from lan937x_reset_switch() to setup()
      - lan937x_main.c: helper function has been introduced for
        lan937x_internal_phy_read & write
      - lan937x_dev.h: lan_alu_struct struct data type changes
      - lan937x_main.c: lan937x_get_stats64 make non blocking
      - lan937x_main.c: modified lan937x_port_mirror_add to include extack
      
      Changes in v9:
      - lan937x_main.c: of_node_put() correction in lan937x_parse_dt_rgmii_delay
      - lan937x_dev.c: removed the interface checks from lan937x_apply_rgmii_delay.
      - changes in ethernet-controller.yaml and dsa.yaml
      
      Changes in v8:
      - lan937x_dev.c: fixed lan937x_r_mib_pkt warning in the sub patches
      - lan937x_main.c: phylink_autoneg_inband() check removed in
        lan937x_phylink_mac_link_up()
      - lan937x_main.c: made legacy_pre_march2020 = false as this is non-legacy driver
        and indentation correction in lan937x_phylink_mac_link_up()
      - removed unnecessary parenthesis in lan937x_get_strings()
      
      Changes in v7:
      - microchip,lan937x.yaml: *-internal-delay-ps enum values & commit messages
        corrections
      - lan937x_main.c: removed phylink_validate() and added phylink_get_caps()
      - lan937x_main.c: added support for ethtool standard stats   (get_eth_*_stats
        and get_stats64)
      - lan937x_main.c: removed unnecessary PVID read from lan937x_port_vlan_del()
      - integrated the changes of ksz9477 multi bridging support to lan937x dev and
        tested both multi bridging and STP
      - lan937x_port_vlan_del - dummy pvid read removed
      
      Changes in v6:
      - microchip_t1.c: There was new merge done in the net-next tree for
        microchip_1.c after the v5 submission. Hence rebased it for v6.
      
      Changes in v5:
      - microchip,lan937x.yaml: Added mdio properties detail
      - microchip,lan937x.yaml: *-internal-delay-ps added under port node
      - lan937x_dev.c: changed devm_mdiobus_alloc from of_mdiobus_register as suggested
        by Vladimir
      - lan937x_dev.c: added dev_info for rgmii internal delay & error message to user
        in case of out of range values
      - lan937x_dev.c: return -EOPNOTSUPP for C45 regnum values for
        lan937x_sw_mdio_read & write operations
      - return from function with out storing in a variable
      - lan937x_main.c: Added vlan_enable info in vlan_filtering API
      - lan937x_main.c: lan937x_port_vlan_del: removed unintended PVID write
      
      Changes in v4:
      - tag_ksz.c: cpu_to_be16 to  put_unaligned_be16
      - correct spacing in comments
      - tag_ksz.c: NETIF_F_HW_CSUM fix is integrated
      - lan937x_dev.c: mdio_np is removed from global and handled locally
      - lan937x_dev.c: unused functions removed lan937x_cfg32 & lan937x_port_cfg32
      - lan937x_dev.c: lan937x_is_internal_100BTX_phy_port function name changes
      - lan937x_dev.c: RGMII internal delay handling for MAC. Delay values are
        retrieved from DTS and updated
      - lan937x_dev.c: corrected mutex operations for few dev variables
      - microchip,lan937x.yaml: introduced rx-internal-delay-ps &
        tx-internal-delay-ps for RGMII internal delay
      - lan937x_dev.c: Unnecessary mutex_lock has been removed
      - lan937x_main.c: PHY_INTERFACE_MODE_NA handling for lan937x_phylink_validate
      - lan937x_main.c: PORT_MIRROR_SNIFFER check in right place
      - lan937x_main.c: memset is used instead of writing 0's individually in
        lan937x_port_fdb_add function
      - lan937x_main.c: Removed \n from NL_SET_ERR_MSG_MOD calls
      
      Changes in v3:
      - Removed settings of cnt_ptr to zero and the memset()
        added a cleanup patch which moves this into ksz_init_mib_timer().
      - Used ret everywhere instead of rc
      - microchip,lan937x.yaml: Remove mdio compatible
      - microchip_t1.c: Renaming standard phy registers
      - tag_ksz.c: LAN937X_TAIL_TAG_OVERRIDE renaming
        LAN937X_TAIL_TAG_BLOCKING_OVERRIDE
      - tag_ksz.c: Changed Ingress and Egress naming convention based on
        Host
      - tag_ksz.c: converted to skb_mac_header(skb) from
        (is_link_local_ether_addr(hdr->h_dest))
      - lan937x_dev.c: Removed BCAST Storm protection settings since we
        have Tc commands for them
      - lan937x_dev.c: Flow control setting in lan937x_port_setup function
      - lan937x_dev.c: RGMII internal delay added only for cpu port,
      - lan937x_dev.c: of_get_compatible_child(node,
        "microchip,lan937x-mdio") to of_get_child_by_name(node, "mdio");
      - lan937x_dev.c:lan937x_get_interface API: returned
        PHY_INTERFACE_MODE_INTERNAL instead of PHY_INTERFACE_MODE_NA
      - lan937x_main.c: Removed compat interface implementation in
        lan937x_config_cpu_port() API & dev_info corrected as well
      - lan937x_main.c: deleted ds->configure_vlan_while_not_filtering
        = true
      - lan937x_main.c: Added explanation for lan937x_setup lines
      - lan937x_main.c: FR_MAX_SIZE correction in lan937x_get_max_mtu API
      - lan937x_main.c: removed lan937x_port_bridge_flags dummy functions
      - lan937x_spi.c - mdiobus_unregister to be added to spi_remove
        function
      - lan937x_main.c: phy link layer changes
      - lan937x_main.c: port mirroring: sniff port selection limiting to
        one port
      - lan937x_main.c: Changed to global vlan filtering
      - lan937x_main.c: vlan_table array to structure
      - lan937x_main.c -Use extack instead of reporting errors to Console
      - lan937x_main.c - Remove cpu_port addition in vlan_add api
      - lan937x_main.c - removed pvid resetting
      
      Changes in v2:
      - return check for register read/writes
      - dt compatible compatible check is added against chip id value
      - lan937x_internal_t1_tx_phy_write() is renamed to
        lan937x_internal_phy_write()
      - lan937x_is_internal_tx_phy_port is renamed to
        lan937x_is_internal_100BTX_phy_port as it is 100Base-Tx phy
      - Return value for lan937x_internal_phy_write() is -EOPNOTSUPP
        in case of failures
      - Return value for lan937x_internal_phy_read() is 0xffff
        for non existent phy
      - cpu_port checking is removed from lan937x_port_stp_state_set()
      - lan937x_phy_link_validate: 100baseT_Full to 100baseT1_Full
      - T1 Phy driver is moved to drivers/net/phy/microchip_t1.c
      - Tx phy driver support will be added later
      - Legacy switch checkings in dts file are removed.
      - tag_ksz.c: Re-used ksz9477_rcv for lan937x_rcv
      - tag_ksz.c: Xmit() & rcv() Comments are corrected w.r.to host
      - net/dsa/Kconfig: Family skew numbers altered in ascending order
      - microchip,lan937x.yaml: eth is replaced with ethernet
      - microchip,lan937x.yaml: spi1 is replaced with spi
      - microchip,lan937x.yaml: cpu labelling is removed
      - microchip,lan937x.yaml: port@x value will match the reg value now
      ====================
      8e60a041