]> git.itanic.dy.fi Git - linux-stable/commitdiff
net/mlx5: Remove unused MAX HCA capabilities
authorShay Drory <shayd@nvidia.com>
Tue, 11 Jul 2023 12:56:08 +0000 (15:56 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Mon, 14 Aug 2023 21:40:22 +0000 (14:40 -0700)
Each device cap has two modes: MAX and CUR. The driver maintains a
cache of both modes of the capabilities. For most device caps, the MAX
cap mode is never used.

Hence, remove all driver queries of the MAX mode of the said caps as
well as their helper MACROs.

Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Maher Sanalla <msanalla@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/fw.c
drivers/net/ethernet/mellanox/mlx5/core/main.c
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
include/linux/mlx5/device.h
include/linux/mlx5/driver.h

index c982ce06d7a30a892e469a71dcee38bdf6b3311a..0e394408af75cb1cba3b1bee4ab75976c833f3b1 100644 (file)
@@ -160,13 +160,15 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
        }
 
        if (MLX5_CAP_GEN(dev, eth_net_offloads)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_ETHERNET_OFFLOADS);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_ETHERNET_OFFLOADS,
+                                             HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, ipoib_enhanced_offloads)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_IPOIB_ENHANCED_OFFLOADS);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_IPOIB_ENHANCED_OFFLOADS,
+                                             HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
@@ -191,29 +193,30 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
 
        if (MLX5_CAP_GEN(dev, nic_flow_table) ||
            MLX5_CAP_GEN(dev, ipoib_enhanced_offloads)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_FLOW_TABLE);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_FLOW_TABLE, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_ESWITCH_MANAGER(dev)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_ESWITCH_FLOW_TABLE);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_ESWITCH_FLOW_TABLE,
+                                             HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
 
-               err = mlx5_core_get_caps(dev, MLX5_CAP_ESWITCH);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_ESWITCH, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, qos)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_QOS);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_QOS, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, debug))
-               mlx5_core_get_caps(dev, MLX5_CAP_DEBUG);
+               mlx5_core_get_caps_mode(dev, MLX5_CAP_DEBUG, HCA_CAP_OPMOD_GET_CUR);
 
        if (MLX5_CAP_GEN(dev, pcam_reg))
                mlx5_get_pcam_reg(dev);
@@ -227,51 +230,52 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
                mlx5_get_qcam_reg(dev);
 
        if (MLX5_CAP_GEN(dev, device_memory)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_DEV_MEM);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_DEV_MEM, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, event_cap)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_DEV_EVENT);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_DEV_EVENT, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, tls_tx) || MLX5_CAP_GEN(dev, tls_rx)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_TLS);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_TLS, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN_64(dev, general_obj_types) &
                MLX5_GENERAL_OBJ_TYPES_CAP_VIRTIO_NET_Q) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_VDPA_EMULATION);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_VDPA_EMULATION, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, ipsec_offload)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_IPSEC);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_IPSEC, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, crypto)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_CRYPTO);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_CRYPTO, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN_64(dev, general_obj_types) &
            MLX5_GENERAL_OBJ_TYPES_CAP_MACSEC_OFFLOAD) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_MACSEC);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_MACSEC, HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, adv_virtualization)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_ADV_VIRTUALIZATION);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_ADV_VIRTUALIZATION,
+                                             HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
index cb77b5774aadbdc2877a5ed84cb04470dcdfb62a..15561965d2afa8c12432cd76646fd927fdb29b66 100644 (file)
@@ -361,9 +361,8 @@ void mlx5_core_uplink_netdev_event_replay(struct mlx5_core_dev *dev)
 }
 EXPORT_SYMBOL(mlx5_core_uplink_netdev_event_replay);
 
-static int mlx5_core_get_caps_mode(struct mlx5_core_dev *dev,
-                                  enum mlx5_cap_type cap_type,
-                                  enum mlx5_cap_mode cap_mode)
+int mlx5_core_get_caps_mode(struct mlx5_core_dev *dev, enum mlx5_cap_type cap_type,
+                           enum mlx5_cap_mode cap_mode)
 {
        u8 in[MLX5_ST_SZ_BYTES(query_hca_cap_in)];
        int out_sz = MLX5_ST_SZ_BYTES(query_hca_cap_out);
@@ -1620,21 +1619,24 @@ static int mlx5_query_hca_caps_light(struct mlx5_core_dev *dev)
                return err;
 
        if (MLX5_CAP_GEN(dev, eth_net_offloads)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_ETHERNET_OFFLOADS);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_ETHERNET_OFFLOADS,
+                                             HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN(dev, nic_flow_table) ||
            MLX5_CAP_GEN(dev, ipoib_enhanced_offloads)) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_FLOW_TABLE);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_FLOW_TABLE,
+                                             HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
 
        if (MLX5_CAP_GEN_64(dev, general_obj_types) &
                MLX5_GENERAL_OBJ_TYPES_CAP_VIRTIO_NET_Q) {
-               err = mlx5_core_get_caps(dev, MLX5_CAP_VDPA_EMULATION);
+               err = mlx5_core_get_caps_mode(dev, MLX5_CAP_VDPA_EMULATION,
+                                             HCA_CAP_OPMOD_GET_CUR);
                if (err)
                        return err;
        }
index 8e2028d20a9e5e285e1b736462d9583000035514..124352459c23d9924dc17f5135816dee3c388b20 100644 (file)
@@ -174,6 +174,9 @@ static inline int mlx5_flexible_inlen(struct mlx5_core_dev *dev, size_t fixed,
 #define MLX5_FLEXIBLE_INLEN(dev, fixed, item_size, num_items) \
        mlx5_flexible_inlen(dev, fixed, item_size, num_items, __func__, __LINE__)
 
+int mlx5_core_get_caps(struct mlx5_core_dev *dev, enum mlx5_cap_type cap_type);
+int mlx5_core_get_caps_mode(struct mlx5_core_dev *dev, enum mlx5_cap_type cap_type,
+                           enum mlx5_cap_mode cap_mode);
 int mlx5_query_hca_caps(struct mlx5_core_dev *dev);
 int mlx5_query_board_id(struct mlx5_core_dev *dev);
 int mlx5_query_module_num(struct mlx5_core_dev *dev, int *module_num);
index 5041965250f649b1471ecacfae4da49f516e67c9..93399802ba7710956c80f6f13873c5bd49ac6832 100644 (file)
@@ -1275,10 +1275,6 @@ enum mlx5_qcam_feature_groups {
        MLX5_GET(per_protocol_networking_offload_caps,\
                 mdev->caps.hca[MLX5_CAP_ETHERNET_OFFLOADS]->cur, cap)
 
-#define MLX5_CAP_ETH_MAX(mdev, cap) \
-       MLX5_GET(per_protocol_networking_offload_caps,\
-                mdev->caps.hca[MLX5_CAP_ETHERNET_OFFLOADS]->max, cap)
-
 #define MLX5_CAP_IPOIB_ENHANCED(mdev, cap) \
        MLX5_GET(per_protocol_networking_offload_caps,\
                 mdev->caps.hca[MLX5_CAP_IPOIB_ENHANCED_OFFLOADS]->cur, cap)
@@ -1301,77 +1297,40 @@ enum mlx5_qcam_feature_groups {
 #define MLX5_CAP64_FLOWTABLE(mdev, cap) \
        MLX5_GET64(flow_table_nic_cap, (mdev)->caps.hca[MLX5_CAP_FLOW_TABLE]->cur, cap)
 
-#define MLX5_CAP_FLOWTABLE_MAX(mdev, cap) \
-       MLX5_GET(flow_table_nic_cap, mdev->caps.hca[MLX5_CAP_FLOW_TABLE]->max, cap)
-
 #define MLX5_CAP_FLOWTABLE_NIC_RX(mdev, cap) \
        MLX5_CAP_FLOWTABLE(mdev, flow_table_properties_nic_receive.cap)
 
-#define MLX5_CAP_FLOWTABLE_NIC_RX_MAX(mdev, cap) \
-       MLX5_CAP_FLOWTABLE_MAX(mdev, flow_table_properties_nic_receive.cap)
-
 #define MLX5_CAP_FLOWTABLE_NIC_TX(mdev, cap) \
                MLX5_CAP_FLOWTABLE(mdev, flow_table_properties_nic_transmit.cap)
 
-#define MLX5_CAP_FLOWTABLE_NIC_TX_MAX(mdev, cap) \
-       MLX5_CAP_FLOWTABLE_MAX(mdev, flow_table_properties_nic_transmit.cap)
-
 #define MLX5_CAP_FLOWTABLE_SNIFFER_RX(mdev, cap) \
        MLX5_CAP_FLOWTABLE(mdev, flow_table_properties_nic_receive_sniffer.cap)
 
-#define MLX5_CAP_FLOWTABLE_SNIFFER_RX_MAX(mdev, cap) \
-       MLX5_CAP_FLOWTABLE_MAX(mdev, flow_table_properties_nic_receive_sniffer.cap)
-
 #define MLX5_CAP_FLOWTABLE_SNIFFER_TX(mdev, cap) \
        MLX5_CAP_FLOWTABLE(mdev, flow_table_properties_nic_transmit_sniffer.cap)
 
-#define MLX5_CAP_FLOWTABLE_SNIFFER_TX_MAX(mdev, cap) \
-       MLX5_CAP_FLOWTABLE_MAX(mdev, flow_table_properties_nic_transmit_sniffer.cap)
-
 #define MLX5_CAP_FLOWTABLE_RDMA_RX(mdev, cap) \
        MLX5_CAP_FLOWTABLE(mdev, flow_table_properties_nic_receive_rdma.cap)
 
-#define MLX5_CAP_FLOWTABLE_RDMA_RX_MAX(mdev, cap) \
-       MLX5_CAP_FLOWTABLE_MAX(mdev, flow_table_properties_nic_receive_rdma.cap)
-
 #define MLX5_CAP_FLOWTABLE_RDMA_TX(mdev, cap) \
        MLX5_CAP_FLOWTABLE(mdev, flow_table_properties_nic_transmit_rdma.cap)
 
-#define MLX5_CAP_FLOWTABLE_RDMA_TX_MAX(mdev, cap) \
-       MLX5_CAP_FLOWTABLE_MAX(mdev, flow_table_properties_nic_transmit_rdma.cap)
-
 #define MLX5_CAP_ESW_FLOWTABLE(mdev, cap) \
        MLX5_GET(flow_table_eswitch_cap, \
                 mdev->caps.hca[MLX5_CAP_ESWITCH_FLOW_TABLE]->cur, cap)
 
-#define MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, cap) \
-       MLX5_GET(flow_table_eswitch_cap, \
-                mdev->caps.hca[MLX5_CAP_ESWITCH_FLOW_TABLE]->max, cap)
-
 #define MLX5_CAP_ESW_FLOWTABLE_FDB(mdev, cap) \
        MLX5_CAP_ESW_FLOWTABLE(mdev, flow_table_properties_nic_esw_fdb.cap)
 
-#define MLX5_CAP_ESW_FLOWTABLE_FDB_MAX(mdev, cap) \
-       MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, flow_table_properties_nic_esw_fdb.cap)
-
 #define MLX5_CAP_ESW_EGRESS_ACL(mdev, cap) \
        MLX5_CAP_ESW_FLOWTABLE(mdev, flow_table_properties_esw_acl_egress.cap)
 
-#define MLX5_CAP_ESW_EGRESS_ACL_MAX(mdev, cap) \
-       MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, flow_table_properties_esw_acl_egress.cap)
-
 #define MLX5_CAP_ESW_INGRESS_ACL(mdev, cap) \
        MLX5_CAP_ESW_FLOWTABLE(mdev, flow_table_properties_esw_acl_ingress.cap)
 
-#define MLX5_CAP_ESW_INGRESS_ACL_MAX(mdev, cap) \
-       MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, flow_table_properties_esw_acl_ingress.cap)
-
 #define MLX5_CAP_ESW_FT_FIELD_SUPPORT_2(mdev, cap) \
        MLX5_CAP_ESW_FLOWTABLE(mdev, ft_field_support_2_esw_fdb.cap)
 
-#define MLX5_CAP_ESW_FT_FIELD_SUPPORT_2_MAX(mdev, cap) \
-       MLX5_CAP_ESW_FLOWTABLE_MAX(mdev, ft_field_support_2_esw_fdb.cap)
-
 #define MLX5_CAP_ESW(mdev, cap) \
        MLX5_GET(e_switch_cap, \
                 mdev->caps.hca[MLX5_CAP_ESWITCH]->cur, cap)
@@ -1380,10 +1339,6 @@ enum mlx5_qcam_feature_groups {
        MLX5_GET64(flow_table_eswitch_cap, \
                (mdev)->caps.hca[MLX5_CAP_ESWITCH_FLOW_TABLE]->cur, cap)
 
-#define MLX5_CAP_ESW_MAX(mdev, cap) \
-       MLX5_GET(e_switch_cap, \
-                mdev->caps.hca[MLX5_CAP_ESWITCH]->max, cap)
-
 #define MLX5_CAP_PORT_SELECTION(mdev, cap) \
        MLX5_GET(port_selection_cap, \
                 mdev->caps.hca[MLX5_CAP_PORT_SELECTION]->cur, cap)
@@ -1396,16 +1351,9 @@ enum mlx5_qcam_feature_groups {
        MLX5_GET(adv_virtualization_cap, \
                 mdev->caps.hca[MLX5_CAP_ADV_VIRTUALIZATION]->cur, cap)
 
-#define MLX5_CAP_ADV_VIRTUALIZATION_MAX(mdev, cap) \
-       MLX5_GET(adv_virtualization_cap, \
-                mdev->caps.hca[MLX5_CAP_ADV_VIRTUALIZATION]->max, cap)
-
 #define MLX5_CAP_FLOWTABLE_PORT_SELECTION(mdev, cap) \
        MLX5_CAP_PORT_SELECTION(mdev, flow_table_properties_port_selection.cap)
 
-#define MLX5_CAP_FLOWTABLE_PORT_SELECTION_MAX(mdev, cap) \
-       MLX5_CAP_PORT_SELECTION_MAX(mdev, flow_table_properties_port_selection.cap)
-
 #define MLX5_CAP_ODP(mdev, cap)\
        MLX5_GET(odp_cap, mdev->caps.hca[MLX5_CAP_ODP]->cur, cap)
 
index e1c7e502a4fc007be079a01a5b24747477febb81..c9d82e74daaa06107d62bfdec73de2707ff3487d 100644 (file)
@@ -1022,7 +1022,6 @@ bool mlx5_cmd_is_down(struct mlx5_core_dev *dev);
 void mlx5_core_uplink_netdev_set(struct mlx5_core_dev *mdev, struct net_device *netdev);
 void mlx5_core_uplink_netdev_event_replay(struct mlx5_core_dev *mdev);
 
-int mlx5_core_get_caps(struct mlx5_core_dev *dev, enum mlx5_cap_type cap_type);
 void mlx5_health_cleanup(struct mlx5_core_dev *dev);
 int mlx5_health_init(struct mlx5_core_dev *dev);
 void mlx5_start_health_poll(struct mlx5_core_dev *dev);