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 ---