main.c (4e37fd4d5dfd39f547b0b00fa184a440a1e44b96) | main.c (b1383aa64121778d9419cc982e387e27d9e96c64) |
---|---|
1/* 2 * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: --- 701 unchanged lines hidden (view full) --- 710 /* Legacy bit to support old userspace libraries */ 711 props->device_cap_flags |= IB_DEVICE_RAW_SCATTER_FCS; 712 props->raw_packet_caps |= IB_RAW_PACKET_CAP_SCATTER_FCS; 713 } 714 715 if (mlx5_get_flow_namespace(dev->mdev, MLX5_FLOW_NAMESPACE_BYPASS)) 716 props->device_cap_flags |= IB_DEVICE_MANAGED_FLOW_STEERING; 717 | 1/* 2 * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: --- 701 unchanged lines hidden (view full) --- 710 /* Legacy bit to support old userspace libraries */ 711 props->device_cap_flags |= IB_DEVICE_RAW_SCATTER_FCS; 712 props->raw_packet_caps |= IB_RAW_PACKET_CAP_SCATTER_FCS; 713 } 714 715 if (mlx5_get_flow_namespace(dev->mdev, MLX5_FLOW_NAMESPACE_BYPASS)) 716 props->device_cap_flags |= IB_DEVICE_MANAGED_FLOW_STEERING; 717 |
718 if (MLX5_CAP_GEN(mdev, end_pad)) 719 props->device_cap_flags |= IB_DEVICE_PCI_WRITE_END_PADDING; 720 |
|
718 props->vendor_part_id = mdev->pdev->device; 719 props->hw_ver = mdev->pdev->revision; 720 721 props->max_mr_size = ~0ull; 722 props->page_size_cap = ~(min_page_size - 1); 723 props->max_qp = 1 << MLX5_CAP_GEN(mdev, log_max_qp); 724 props->max_qp_wr = 1 << MLX5_CAP_GEN(mdev, log_max_qp_sz); 725 max_rq_sg = MLX5_CAP_GEN(mdev, max_wqe_sz_rq) / --- 93 unchanged lines hidden (view full) --- 819 if (MLX5_CAP_ETH(mdev, enhanced_multi_pkt_send_wqe)) 820 resp.mlx5_ib_support_multi_pkt_send_wqes |= 821 MLX5_IB_SUPPORT_EMPW; 822 823 resp.response_length += 824 sizeof(resp.mlx5_ib_support_multi_pkt_send_wqes); 825 } 826 | 721 props->vendor_part_id = mdev->pdev->device; 722 props->hw_ver = mdev->pdev->revision; 723 724 props->max_mr_size = ~0ull; 725 props->page_size_cap = ~(min_page_size - 1); 726 props->max_qp = 1 << MLX5_CAP_GEN(mdev, log_max_qp); 727 props->max_qp_wr = 1 << MLX5_CAP_GEN(mdev, log_max_qp_sz); 728 max_rq_sg = MLX5_CAP_GEN(mdev, max_wqe_sz_rq) / --- 93 unchanged lines hidden (view full) --- 822 if (MLX5_CAP_ETH(mdev, enhanced_multi_pkt_send_wqe)) 823 resp.mlx5_ib_support_multi_pkt_send_wqes |= 824 MLX5_IB_SUPPORT_EMPW; 825 826 resp.response_length += 827 sizeof(resp.mlx5_ib_support_multi_pkt_send_wqes); 828 } 829 |
827 if (field_avail(typeof(resp), reserved, uhw->outlen)) 828 resp.response_length += sizeof(resp.reserved); | 830 if (field_avail(typeof(resp), flags, uhw->outlen)) { 831 resp.response_length += sizeof(resp.flags); |
829 | 832 |
833 if (MLX5_CAP_GEN(mdev, cqe_compression_128)) 834 resp.flags |= 835 MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_COMP; 836 837 if (MLX5_CAP_GEN(mdev, cqe_128_always)) 838 resp.flags |= MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_PAD; 839 } 840 |
|
830 if (field_avail(typeof(resp), sw_parsing_caps, 831 uhw->outlen)) { 832 resp.response_length += sizeof(resp.sw_parsing_caps); 833 if (MLX5_CAP_ETH(mdev, swp)) { 834 resp.sw_parsing_caps.sw_parsing_offloads |= 835 MLX5_IB_SW_PARSING; 836 837 if (MLX5_CAP_ETH(mdev, swp_csum)) --- 5 unchanged lines hidden (view full) --- 843 MLX5_IB_SW_PARSING_LSO; 844 845 if (resp.sw_parsing_caps.sw_parsing_offloads) 846 resp.sw_parsing_caps.supported_qpts = 847 BIT(IB_QPT_RAW_PACKET); 848 } 849 } 850 | 841 if (field_avail(typeof(resp), sw_parsing_caps, 842 uhw->outlen)) { 843 resp.response_length += sizeof(resp.sw_parsing_caps); 844 if (MLX5_CAP_ETH(mdev, swp)) { 845 resp.sw_parsing_caps.sw_parsing_offloads |= 846 MLX5_IB_SW_PARSING; 847 848 if (MLX5_CAP_ETH(mdev, swp_csum)) --- 5 unchanged lines hidden (view full) --- 854 MLX5_IB_SW_PARSING_LSO; 855 856 if (resp.sw_parsing_caps.sw_parsing_offloads) 857 resp.sw_parsing_caps.supported_qpts = 858 BIT(IB_QPT_RAW_PACKET); 859 } 860 } 861 |
862 if (field_avail(typeof(resp), striding_rq_caps, uhw->outlen)) { 863 resp.response_length += sizeof(resp.striding_rq_caps); 864 if (MLX5_CAP_GEN(mdev, striding_rq)) { 865 resp.striding_rq_caps.min_single_stride_log_num_of_bytes = 866 MLX5_MIN_SINGLE_STRIDE_LOG_NUM_BYTES; 867 resp.striding_rq_caps.max_single_stride_log_num_of_bytes = 868 MLX5_MAX_SINGLE_STRIDE_LOG_NUM_BYTES; 869 resp.striding_rq_caps.min_single_wqe_log_num_of_strides = 870 MLX5_MIN_SINGLE_WQE_LOG_NUM_STRIDES; 871 resp.striding_rq_caps.max_single_wqe_log_num_of_strides = 872 MLX5_MAX_SINGLE_WQE_LOG_NUM_STRIDES; 873 resp.striding_rq_caps.supported_qpts = 874 BIT(IB_QPT_RAW_PACKET); 875 } 876 } 877 878 if (field_avail(typeof(resp), tunnel_offloads_caps, 879 uhw->outlen)) { 880 resp.response_length += sizeof(resp.tunnel_offloads_caps); 881 if (MLX5_CAP_ETH(mdev, tunnel_stateless_vxlan)) 882 resp.tunnel_offloads_caps |= 883 MLX5_IB_TUNNELED_OFFLOADS_VXLAN; 884 if (MLX5_CAP_ETH(mdev, tunnel_stateless_geneve_rx)) 885 resp.tunnel_offloads_caps |= 886 MLX5_IB_TUNNELED_OFFLOADS_GENEVE; 887 if (MLX5_CAP_ETH(mdev, tunnel_stateless_gre)) 888 resp.tunnel_offloads_caps |= 889 MLX5_IB_TUNNELED_OFFLOADS_GRE; 890 } 891 |
|
851 if (uhw->outlen) { 852 err = ib_copy_to_udata(uhw, &resp, resp.response_length); 853 854 if (err) 855 return err; 856 } 857 858 return 0; --- 3396 unchanged lines hidden --- | 892 if (uhw->outlen) { 893 err = ib_copy_to_udata(uhw, &resp, resp.response_length); 894 895 if (err) 896 return err; 897 } 898 899 return 0; --- 3396 unchanged lines hidden --- |