mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-27 10:55:15 +07:00
59c9d35ea9
The system image guid is a read-only field which is used by the TC offloads code to determine if two mlx5 devices belong to the same ASIC while adding flows. Read this once and save it on the core device rather than querying each time an offloaded flow is added. Signed-off-by: Alaa Hleihel <alaa@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
127 lines
5.2 KiB
C
127 lines
5.2 KiB
C
/*
|
|
* Copyright (c) 2013-2015, Mellanox Technologies, Ltd. All rights reserved.
|
|
*
|
|
* This software is available to you under a choice of one of two
|
|
* licenses. You may choose to be licensed under the terms of the GNU
|
|
* General Public License (GPL) Version 2, available from the file
|
|
* COPYING in the main directory of this source tree, or the
|
|
* OpenIB.org BSD license below:
|
|
*
|
|
* Redistribution and use in source and binary forms, with or
|
|
* without modification, are permitted provided that the following
|
|
* conditions are met:
|
|
*
|
|
* - Redistributions of source code must retain the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer.
|
|
*
|
|
* - Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer in the documentation and/or other materials
|
|
* provided with the distribution.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
*/
|
|
|
|
#ifndef __MLX5_VPORT_H__
|
|
#define __MLX5_VPORT_H__
|
|
|
|
#include <linux/mlx5/driver.h>
|
|
#include <linux/mlx5/device.h>
|
|
|
|
enum {
|
|
MLX5_CAP_INLINE_MODE_L2,
|
|
MLX5_CAP_INLINE_MODE_VPORT_CONTEXT,
|
|
MLX5_CAP_INLINE_MODE_NOT_REQUIRED,
|
|
};
|
|
|
|
u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport);
|
|
int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod,
|
|
u16 vport, u8 state);
|
|
int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev,
|
|
u16 vport, u8 *addr);
|
|
int mlx5_query_nic_vport_min_inline(struct mlx5_core_dev *mdev,
|
|
u16 vport, u8 *min_inline);
|
|
void mlx5_query_min_inline(struct mlx5_core_dev *mdev, u8 *min_inline);
|
|
int mlx5_modify_nic_vport_min_inline(struct mlx5_core_dev *mdev,
|
|
u16 vport, u8 min_inline);
|
|
int mlx5_modify_nic_vport_mac_address(struct mlx5_core_dev *dev,
|
|
u16 vport, u8 *addr);
|
|
int mlx5_query_nic_vport_mtu(struct mlx5_core_dev *mdev, u16 *mtu);
|
|
int mlx5_modify_nic_vport_mtu(struct mlx5_core_dev *mdev, u16 mtu);
|
|
int mlx5_query_nic_vport_system_image_guid(struct mlx5_core_dev *mdev,
|
|
u64 *system_image_guid);
|
|
int mlx5_query_nic_vport_node_guid(struct mlx5_core_dev *mdev, u64 *node_guid);
|
|
int mlx5_modify_nic_vport_node_guid(struct mlx5_core_dev *mdev,
|
|
u32 vport, u64 node_guid);
|
|
int mlx5_query_nic_vport_qkey_viol_cntr(struct mlx5_core_dev *mdev,
|
|
u16 *qkey_viol_cntr);
|
|
int mlx5_query_hca_vport_gid(struct mlx5_core_dev *dev, u8 other_vport,
|
|
u8 port_num, u16 vf_num, u16 gid_index,
|
|
union ib_gid *gid);
|
|
int mlx5_query_hca_vport_pkey(struct mlx5_core_dev *dev, u8 other_vport,
|
|
u8 port_num, u16 vf_num, u16 pkey_index,
|
|
u16 *pkey);
|
|
int mlx5_query_hca_vport_context(struct mlx5_core_dev *dev,
|
|
u8 other_vport, u8 port_num,
|
|
u16 vf_num,
|
|
struct mlx5_hca_vport_context *rep);
|
|
int mlx5_query_hca_vport_system_image_guid(struct mlx5_core_dev *dev,
|
|
u64 *sys_image_guid);
|
|
int mlx5_query_hca_vport_node_guid(struct mlx5_core_dev *dev,
|
|
u64 *node_guid);
|
|
int mlx5_query_nic_vport_mac_list(struct mlx5_core_dev *dev,
|
|
u32 vport,
|
|
enum mlx5_list_type list_type,
|
|
u8 addr_list[][ETH_ALEN],
|
|
int *list_size);
|
|
int mlx5_modify_nic_vport_mac_list(struct mlx5_core_dev *dev,
|
|
enum mlx5_list_type list_type,
|
|
u8 addr_list[][ETH_ALEN],
|
|
int list_size);
|
|
int mlx5_query_nic_vport_promisc(struct mlx5_core_dev *mdev,
|
|
u32 vport,
|
|
int *promisc_uc,
|
|
int *promisc_mc,
|
|
int *promisc_all);
|
|
int mlx5_modify_nic_vport_promisc(struct mlx5_core_dev *mdev,
|
|
int promisc_uc,
|
|
int promisc_mc,
|
|
int promisc_all);
|
|
int mlx5_query_nic_vport_vlans(struct mlx5_core_dev *dev,
|
|
u32 vport,
|
|
u16 vlans[],
|
|
int *size);
|
|
int mlx5_modify_nic_vport_vlans(struct mlx5_core_dev *dev,
|
|
u16 vlans[],
|
|
int list_size);
|
|
|
|
int mlx5_nic_vport_enable_roce(struct mlx5_core_dev *mdev);
|
|
int mlx5_nic_vport_disable_roce(struct mlx5_core_dev *mdev);
|
|
int mlx5_query_vport_down_stats(struct mlx5_core_dev *mdev, u16 vport,
|
|
u64 *rx_discard_vport_down,
|
|
u64 *tx_discard_vport_down);
|
|
int mlx5_core_query_vport_counter(struct mlx5_core_dev *dev, u8 other_vport,
|
|
int vf, u8 port_num, void *out,
|
|
size_t out_sz);
|
|
int mlx5_core_modify_hca_vport_context(struct mlx5_core_dev *dev,
|
|
u8 other_vport, u8 port_num,
|
|
int vf,
|
|
struct mlx5_hca_vport_context *req);
|
|
int mlx5_nic_vport_update_local_lb(struct mlx5_core_dev *mdev, bool enable);
|
|
int mlx5_nic_vport_query_local_lb(struct mlx5_core_dev *mdev, bool *status);
|
|
|
|
int mlx5_nic_vport_affiliate_multiport(struct mlx5_core_dev *master_mdev,
|
|
struct mlx5_core_dev *port_mdev);
|
|
int mlx5_nic_vport_unaffiliate_multiport(struct mlx5_core_dev *port_mdev);
|
|
|
|
u64 mlx5_query_nic_system_image_guid(struct mlx5_core_dev *mdev);
|
|
#endif /* __MLX5_VPORT_H__ */
|