Lines Matching defs:flow_attr

3212 	struct ib_flow_attr		  *flow_attr;
3232 if (cmd.flow_attr.flags >= IB_FLOW_ATTR_FLAGS_RESERVED)
3235 if ((cmd.flow_attr.flags & IB_FLOW_ATTR_FLAGS_DONT_TRAP) &&
3236 ((cmd.flow_attr.type == IB_FLOW_ATTR_ALL_DEFAULT) ||
3237 (cmd.flow_attr.type == IB_FLOW_ATTR_MC_DEFAULT)))
3240 if (cmd.flow_attr.num_of_specs > IB_FLOW_SPEC_SUPPORT_LAYERS)
3243 if (cmd.flow_attr.size >
3244 (cmd.flow_attr.num_of_specs * sizeof(struct ib_uverbs_flow_spec)))
3247 if (cmd.flow_attr.reserved[0] ||
3248 cmd.flow_attr.reserved[1])
3251 if (cmd.flow_attr.num_of_specs) {
3252 kern_flow_attr = kmalloc(sizeof(*kern_flow_attr) + cmd.flow_attr.size,
3257 *kern_flow_attr = cmd.flow_attr;
3259 cmd.flow_attr.size);
3263 kern_flow_attr = &cmd.flow_attr;
3276 if (!rdma_is_port_valid(uobj->context->device, cmd.flow_attr.port)) {
3292 flow_attr = kzalloc(struct_size(flow_attr, flows,
3293 cmd.flow_attr.num_of_specs), GFP_KERNEL);
3294 if (!flow_attr) {
3298 uflow_res = flow_resources_alloc(cmd.flow_attr.num_of_specs);
3304 flow_attr->type = kern_flow_attr->type;
3305 flow_attr->priority = kern_flow_attr->priority;
3306 flow_attr->num_of_specs = kern_flow_attr->num_of_specs;
3307 flow_attr->port = kern_flow_attr->port;
3308 flow_attr->flags = kern_flow_attr->flags;
3309 flow_attr->size = sizeof(*flow_attr);
3312 ib_spec = flow_attr + 1;
3313 for (i = 0; i < flow_attr->num_of_specs &&
3314 cmd.flow_attr.size >= sizeof(*kern_spec) &&
3315 cmd.flow_attr.size >= kern_spec->size;
3323 flow_attr->size +=
3325 cmd.flow_attr.size -= kern_spec->size;
3329 if (cmd.flow_attr.size || (i != flow_attr->num_of_specs)) {
3331 i, cmd.flow_attr.size);
3336 flow_id = qp->device->ops.create_flow(qp, flow_attr,
3348 kfree(flow_attr);
3350 if (cmd.flow_attr.num_of_specs)
3360 kfree(flow_attr);
3367 if (cmd.flow_attr.num_of_specs)
3858 flow_attr,