net/mlx5: query hairpin capabilities
authorOri Kam <orika@mellanox.com>
Wed, 30 Oct 2019 23:53:12 +0000 (23:53 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 8 Nov 2019 22:15:04 +0000 (23:15 +0100)
This commit query and store the hairpin capabilities from the device.

Those capabilities will be used when creating the hairpin queue.

Signed-off-by: Ori Kam <orika@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
drivers/net/mlx5/mlx5.h
drivers/net/mlx5/mlx5_devx_cmds.c

index b6a51b2..ee04dd0 100644 (file)
@@ -187,6 +187,10 @@ struct mlx5_hca_attr {
        uint32_t lro_max_msg_sz_mode:2;
        uint32_t lro_timer_supported_periods[MLX5_LRO_NUM_SUPP_PERIODS];
        uint32_t flex_parser_protocols;
+       uint32_t hairpin:1;
+       uint32_t log_max_hairpin_queues:5;
+       uint32_t log_max_hairpin_wq_data_sz:5;
+       uint32_t log_max_hairpin_num_packets:5;
 };
 
 /* Flow list . */
index 51947d3..17c1671 100644 (file)
@@ -327,6 +327,13 @@ mlx5_devx_cmd_query_hca_attr(struct ibv_context *ctx,
        attr->flow_counters_dump = MLX5_GET(cmd_hca_cap, hcattr,
                                            flow_counters_dump);
        attr->eswitch_manager = MLX5_GET(cmd_hca_cap, hcattr, eswitch_manager);
+       attr->hairpin = MLX5_GET(cmd_hca_cap, hcattr, hairpin);
+       attr->log_max_hairpin_queues = MLX5_GET(cmd_hca_cap, hcattr,
+                                               log_max_hairpin_queues);
+       attr->log_max_hairpin_wq_data_sz = MLX5_GET(cmd_hca_cap, hcattr,
+                                                   log_max_hairpin_wq_data_sz);
+       attr->log_max_hairpin_num_packets = MLX5_GET
+               (cmd_hca_cap, hcattr, log_min_hairpin_wq_data_sz);
        attr->eth_net_offloads = MLX5_GET(cmd_hca_cap, hcattr,
                                          eth_net_offloads);
        attr->eth_virt = MLX5_GET(cmd_hca_cap, hcattr, eth_virt);