Skip to content
  1. Aug 08, 2017
  2. Aug 07, 2017
    • Rabie Loulou's avatar
      net/mlx5: Increase the maximum flow counters supported · a8ffcc74
      Rabie Loulou authored
      
      
      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: default avatarRabie Loulou <rabiel@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      a8ffcc74
    • Rabie Loulou's avatar
      net/mlx5: Fix counter list hardware structure · 61690e09
      Rabie Loulou authored
      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: default avatarRabie Loulou <rabiel@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      61690e09
    • Erez Shitrit's avatar
      net/mlx5: Delay events till ib registration ends · 97834eba
      Erez Shitrit authored
      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: default avatarErez Shitrit <erezsh@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      97834eba
    • Saeed Mahameed's avatar
      net/mlx5: Add CONFIG_MLX5_ESWITCH Kconfig · e80541ec
      Saeed Mahameed authored
      
      
      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: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Cc: Jes Sorensen <jsorensen@fb.com>
      Cc: kernel-team@fb.com
      e80541ec
    • Saeed Mahameed's avatar
      net/mlx5: Separate between E-Switch and MPFS · eeb66cdb
      Saeed Mahameed authored
      
      
      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: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Cc: Jes Sorensen <jsorensen@fb.com>
      Cc: kernel-team@fb.com
      eeb66cdb
    • Saeed Mahameed's avatar
      net/mlx5: Unify vport manager capability check · a9f7705f
      Saeed Mahameed authored
      
      
      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: default avatarSaeed Mahameed <saeedm@mellanox.com>
      a9f7705f
    • Saeed Mahameed's avatar
      net/mlx5e: NIC netdev init flow cleanup · 07c9f1e5
      Saeed Mahameed authored
      Remove redundant call to unregister vport representor in mlx5e_add error
      flow.
      
      Hide the representor priv and eswitch internal structures from en_main.c
      as preparation step for downstream patches which would allow building
      the driver without support for  representors and eswitch.
      
      Fixes: 6f08a22c
      
       ("net/mlx5e: Register/unregister vport representors on interface attach/detach")
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      07c9f1e5
    • Saeed Mahameed's avatar
      net/mlx5e: Rearrange netdevice ops structures · 706b3583
      Saeed Mahameed authored
      
      
      Since we are going to allow building the driver without eswitch support,
      it would be possible to compile out the sriov netdevice ops struct such
      that the basic ops instance will be used for non VF devices too.
      
      Add missing udp tunnel ndos into mlx5e_netdev_ops_basic.
      
      While here, rearrange some ndos in the sriov ops struct and put
      vf/eswitch related ndos towards the end of it.
      
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      706b3583
    • David S. Miller's avatar
      Merge branch 'sctp-remove-typedefs-from-structures-part-5' · 1afec92b
      David S. Miller authored
      
      
      Xin Long says:
      
      ====================
      sctp: remove typedefs from structures part 5
      
      As we know, typedef is suggested not to use in kernel, even checkpatch.pl
      also gives warnings about it. Now sctp is using it for many structures.
      
      All this kind of typedef's using should be removed. This patchset is the
      part 5 to remove all typedefs in include/net/sctp/constants.h.
      
      Just as the part 1-4, No any code's logic would be changed in these patches,
      only cleaning up.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1afec92b
    • Xin Long's avatar
      sctp: remove the typedef sctp_subtype_t · bfc6f827
      Xin Long authored
      
      
      This patch is to remove the typedef sctp_subtype_t, and
      replace with union sctp_subtype in the places where it's
      using this typedef.
      
      Note that it doesn't fix many indents although it should,
      as sctp_disposition_t's removal would mess them up again.
      So better to fix them when removing sctp_disposition_t in
      later patch.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bfc6f827
    • Xin Long's avatar
      sctp: remove the typedef sctp_event_t · 61f0eb07
      Xin Long authored
      
      
      This patch is to remove the typedef sctp_event_t, and
      replace with enum sctp_event in the places where it's
      using this typedef.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      61f0eb07
    • Xin Long's avatar
      sctp: remove the typedef sctp_event_timeout_t · 19cd1592
      Xin Long authored
      
      
      This patch is to remove the typedef sctp_event_timeout_t, and
      replace with enum sctp_event_timeout in the places where it's
      using this typedef.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      19cd1592
    • Xin Long's avatar
      sctp: remove the typedef sctp_event_other_t · a0f098d0
      Xin Long authored
      
      
      This patch is to remove the typedef sctp_event_other_t, and
      replace with enum sctp_event_other in the places where it's
      using this typedef.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a0f098d0
    • Xin Long's avatar
      sctp: remove the typedef sctp_event_primitive_t · dc1e0e6e
      Xin Long authored
      
      
      This patch is to remove the typedef sctp_event_primitive_t, and
      replace with enum sctp_event_primitive in the places where it's
      using this typedef.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dc1e0e6e
    • Xin Long's avatar
      sctp: remove the typedef sctp_state_t · 52106019
      Xin Long authored
      
      
      This patch is to remove the typedef sctp_state_t, and
      replace with enum sctp_state in the places where it's
      using this typedef.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      52106019