On 06-Dec-18 18:03, Jason Gunthorpe wrote: > On Thu, Dec 06, 2018 at 10:44:41AM +0200, Gal Pressman wrote: >> On 05-Dec-18 23:52, Hefty, Sean wrote: >>>> +int efa_query_device(struct ib_device *ibdev, >>>> + struct ib_device_attr *props, >>>> + struct ib_udata *udata) >>>> +{ >>>> + struct efa_ibv_ex_query_device_resp resp = {}; >>>> + struct efa_com_get_device_attr_result result; >>>> + struct efa_dev *dev = to_edev(ibdev); >>>> + int err; >>>> + >>>> + pr_debug("--->\n"); >>>> + memset(props, 0, sizeof(*props)); >>>> + >>>> + if (udata && udata->inlen && >>>> + !ib_is_udata_cleared(udata, 0, udata->inlen)) { >>>> + pr_err_ratelimited("Incompatible ABI params, udata not >>>> cleared\n"); >>>> + return -EINVAL; >>>> + } >>>> + >>>> + err = efa_get_device_attributes(dev, &result); >>>> + if (err) { >>>> + pr_err("failed to get device_attr err[%d]!\n", err); >>>> + return err; >>>> + } >>>> + >>>> + props->max_mr_size = result.max_mr_pages * >>>> PAGE_SIZE; >>>> + props->page_size_cap = result.page_size_cap; >>>> + props->vendor_id = result.vendor_id; >>>> + props->vendor_part_id = result.vendor_part_id; >>>> + props->hw_ver = dev->pdev->subsystem_device; >>>> + props->max_qp = result.max_sq; >>>> + props->device_cap_flags = IB_DEVICE_PORT_ACTIVE_EVENT | >>>> + IB_DEVICE_VIRTUAL_FUNCTION | >>>> + IB_DEVICE_BLOCK_MULTICAST_LOOPBACK; >>> >>> Does this mean that SRD supports multicast? Or is this only for UD? >> >> No, will remove. > > I don't think it is a 'IB_DEVICE_VIRTUAL_FUNCTION' either, I think > that is supposed to be used by IBTA defined virutal ports > > Jason > Thanks, I will remove this as well.