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