.. | .. |
---|
595 | 595 | obj_id; |
---|
596 | 596 | |
---|
597 | 597 | case MLX5_IB_OBJECT_DEVX_OBJ: |
---|
598 | | - return ((struct devx_obj *)uobj->object)->obj_id == obj_id; |
---|
| 598 | + { |
---|
| 599 | + u16 opcode = MLX5_GET(general_obj_in_cmd_hdr, in, opcode); |
---|
| 600 | + struct devx_obj *devx_uobj = uobj->object; |
---|
| 601 | + |
---|
| 602 | + if (opcode == MLX5_CMD_OP_QUERY_FLOW_COUNTER && |
---|
| 603 | + devx_uobj->flow_counter_bulk_size) { |
---|
| 604 | + u64 end; |
---|
| 605 | + |
---|
| 606 | + end = devx_uobj->obj_id + |
---|
| 607 | + devx_uobj->flow_counter_bulk_size; |
---|
| 608 | + return devx_uobj->obj_id <= obj_id && end > obj_id; |
---|
| 609 | + } |
---|
| 610 | + |
---|
| 611 | + return devx_uobj->obj_id == obj_id; |
---|
| 612 | + } |
---|
599 | 613 | |
---|
600 | 614 | default: |
---|
601 | 615 | return false; |
---|
.. | .. |
---|
1416 | 1430 | goto obj_free; |
---|
1417 | 1431 | |
---|
1418 | 1432 | if (opcode == MLX5_CMD_OP_ALLOC_FLOW_COUNTER) { |
---|
1419 | | - u8 bulk = MLX5_GET(alloc_flow_counter_in, |
---|
1420 | | - cmd_in, |
---|
1421 | | - flow_counter_bulk); |
---|
1422 | | - obj->flow_counter_bulk_size = 128UL * bulk; |
---|
| 1433 | + u32 bulk = MLX5_GET(alloc_flow_counter_in, |
---|
| 1434 | + cmd_in, |
---|
| 1435 | + flow_counter_bulk_log_size); |
---|
| 1436 | + |
---|
| 1437 | + if (bulk) |
---|
| 1438 | + bulk = 1 << bulk; |
---|
| 1439 | + else |
---|
| 1440 | + bulk = 128UL * MLX5_GET(alloc_flow_counter_in, |
---|
| 1441 | + cmd_in, |
---|
| 1442 | + flow_counter_bulk); |
---|
| 1443 | + obj->flow_counter_bulk_size = bulk; |
---|
1423 | 1444 | } |
---|
1424 | 1445 | |
---|
1425 | 1446 | uobj->object = obj; |
---|