1. 08 8月, 2017 34 次提交
  2. 07 8月, 2017 6 次提交
    • R
      net/mlx5: Increase the maximum flow counters supported · a8ffcc74
      Rabie Loulou 提交于
      Read new NIC capability field which represnts 16 MSBs of the max flow
      counters number supported (max_flow_counter_31_16).
      
      Backward compatibility with older firmware is preserved, the modified
      driver reads max_flow_counter_31_16 as 0 from the older firmware and
      uses up to 64K counters.
      
      Changed flow counter id from 16 bits to 32 bits. Backward compatibility
      with older firmware is preserved as we kept the 16 LSBs of the counter
      id in place and added 16 MSBs from reserved field.
      
      Changed the background bulk reading of flow counters to work in chunks
      of at most 32K counters, to make sure we don't attempt to allocate very
      large buffers.
      Signed-off-by: NRabie Loulou <rabiel@mellanox.com>
      Reviewed-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      a8ffcc74
    • R
      net/mlx5: Fix counter list hardware structure · 61690e09
      Rabie Loulou 提交于
      The counter list hardware structure doesn't contain a clear and
      num_of_counters fields, remove them.
      
      These wrong fields were never used by the driver hence no other driver
      changes.
      
      Fixes: a351a1b0 ("net/mlx5: Introduce bulk reading of flow counters")
      Signed-off-by: NRabie Loulou <rabiel@mellanox.com>
      Reviewed-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      61690e09
    • E
      net/mlx5: Delay events till ib registration ends · 97834eba
      Erez Shitrit 提交于
      When mlx5_ib registers itself to mlx5_core as an interface, it will
      call mlx5_add_device which will call mlx5_ib interface add callback,
      in case the latter successfully returns, only then mlx5_core will add
      it to the interface list and async events will be forwarded to mlx5_ib.
      Between mlx5_ib interface add callback and mlx5_core adding the mlx5_ib
      interface to its devices list, arriving mlx5_core events can be missed
      by the new mlx5_ib registering interface.
      
      In other words:
      thread 1: mlx5_ib: mlx5_register_interface(dev)
      thread 1: mlx5_core: mlx5_add_device(dev)
      thread 1: mlx5_core: ctx = dev->add => (mlx5_ib)->mlx5_ib_add
      thread 2: mlx5_core_event: **new event arrives, forward to dev_list
      thread 1: mlx5_core: add_ctx_to_dev_list(ctx)
      /* previous event was missed by the new interface.*/
      It is ok to miss events before dev->add (mlx5_ib)->mlx5_ib_add_device
      but not after.
      
      We fix this race by accumulating the events that come between the
      ib_register_device (inside mlx5_add_device->(dev->add)) till the adding
      to the list completes and fire them to the new registering interface
      after that.
      
      Fixes: f1ee87fe ("net/mlx5: Organize device list API in one place")
      Signed-off-by: NErez Shitrit <erezsh@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      97834eba
    • S
      net/mlx5: Add CONFIG_MLX5_ESWITCH Kconfig · e80541ec
      Saeed Mahameed 提交于
      Allow to selectively build the driver with or without sriov eswitch, VF
      representors and TC offloads.
      
      Also remove the need of two ndo ops structures (sriov & basic)
      and keep only one unified ndo ops, compile out VF SRIOV ndos when not
      needed (MLX5_ESWITCH=n), and for VF netdev calling those ndos will result
      in returning -EPERM.
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Cc: Jes Sorensen <jsorensen@fb.com>
      Cc: kernel-team@fb.com
      e80541ec
    • S
      net/mlx5: Separate between E-Switch and MPFS · eeb66cdb
      Saeed Mahameed 提交于
      Multi-Physical Function Switch (MPFs) is required for when multi-PF
      configuration is enabled to allow passing user configured unicast MAC
      addresses to the requesting PF.
      
      Before this patch eswitch.c used to manage the HW MPFS l2 table,
      E-Switch always (regardless of sriov) enabled vport(0) (NIC PF) vport's
      contexts update on unicast mac address list changes, to populate the PF's
      MPFS L2 table accordingly.
      
      In downstream patch we would like to allow compiling the driver without
      E-Switch functionalities, for that we move MPFS l2 table logic out
      of eswitch.c into its own file, and provide Kconfig flag (MLX5_MPFS) to
      allow compiling out MPFS for those who don't want Multi-PF support.
      
      NIC PF netdevice will now directly update MPFS l2 table via the new MPFS
      API. VF netdevice has no access to MPFS L2 table, so E-Switch will remain
      responsible of updating its MPFS l2 table on behalf of its VFs.
      
      Due to this change we also don't require enabling vport(0) (PF vport)
      unicast mac changes events anymore, for when SRIOV is not enabled.
      Which means E-Switch is now activated only on SRIOV activation, and not
      required otherwise.
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Cc: Jes Sorensen <jsorensen@fb.com>
      Cc: kernel-team@fb.com
      eeb66cdb
    • S
      net/mlx5: Unify vport manager capability check · a9f7705f
      Saeed Mahameed 提交于
      Expose MLX5_VPORT_MANAGER macro to check for strict vport manager
      E-switch and MPFS (Multi Physical Function Switch) abilities.
      
      VPORT manager must be a PF with an ethernet link and with FW advertised
      vport group manager capability
      
      Replace older checks with the new macro and use it where needed in
      eswitch.c and mlx5e netdev eswitch related flows.
      
      The same macro will be reused in MPFS separation downstream patch.
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      a9f7705f