MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ena_com_create_io_sq

Function ena_com_create_io_sq

dpdk/drivers/net/ena/base/ena_com.c:1251–1320  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1249}
1250
1251static int ena_com_create_io_sq(struct ena_com_dev *ena_dev,
1252 struct ena_com_io_sq *io_sq, u16 cq_idx)
1253{
1254 struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue;
1255 struct ena_admin_aq_create_sq_cmd create_cmd;
1256 struct ena_admin_acq_create_sq_resp_desc cmd_completion;
1257 u8 direction;
1258 int ret;
1259
1260 memset(&create_cmd, 0x0, sizeof(create_cmd));
1261
1262 create_cmd.aq_common_descriptor.opcode = ENA_ADMIN_CREATE_SQ;
1263
1264 if (io_sq->direction == ENA_COM_IO_QUEUE_DIRECTION_TX)
1265 direction = ENA_ADMIN_SQ_DIRECTION_TX;
1266 else
1267 direction = ENA_ADMIN_SQ_DIRECTION_RX;
1268
1269 create_cmd.sq_identity |= (direction <<
1270 ENA_ADMIN_AQ_CREATE_SQ_CMD_SQ_DIRECTION_SHIFT) &
1271 ENA_ADMIN_AQ_CREATE_SQ_CMD_SQ_DIRECTION_MASK;
1272
1273 create_cmd.sq_caps_2 |= io_sq->mem_queue_type &
1274 ENA_ADMIN_AQ_CREATE_SQ_CMD_PLACEMENT_POLICY_MASK;
1275
1276 create_cmd.sq_caps_2 |= (ENA_ADMIN_COMPLETION_POLICY_DESC <<
1277 ENA_ADMIN_AQ_CREATE_SQ_CMD_COMPLETION_POLICY_SHIFT) &
1278 ENA_ADMIN_AQ_CREATE_SQ_CMD_COMPLETION_POLICY_MASK;
1279
1280 create_cmd.sq_caps_3 |=
1281 ENA_ADMIN_AQ_CREATE_SQ_CMD_IS_PHYSICALLY_CONTIGUOUS_MASK;
1282
1283 create_cmd.cq_idx = cq_idx;
1284 create_cmd.sq_depth = io_sq->q_depth;
1285
1286 if (io_sq->mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_HOST) {
1287 ret = ena_com_mem_addr_set(ena_dev,
1288 &create_cmd.sq_ba,
1289 io_sq->desc_addr.phys_addr);
1290 if (unlikely(ret)) {
1291 ena_trc_err(ena_dev, "Memory address set failed\n");
1292 return ret;
1293 }
1294 }
1295
1296 ret = ena_com_execute_admin_command(admin_queue,
1297 (struct ena_admin_aq_entry *)&create_cmd,
1298 sizeof(create_cmd),
1299 (struct ena_admin_acq_entry *)&cmd_completion,
1300 sizeof(cmd_completion));
1301 if (unlikely(ret)) {
1302 ena_trc_err(ena_dev, "Failed to create IO SQ. error: %d\n", ret);
1303 return ret;
1304 }
1305
1306 io_sq->idx = cmd_completion.sq_idx;
1307
1308 io_sq->db_addr = (u32 __iomem *)((uintptr_t)ena_dev->reg_bar +

Callers 1

ena_com_create_io_queueFunction · 0.70

Calls 3

memsetFunction · 0.85
ena_com_mem_addr_setFunction · 0.70

Tested by

no test coverage detected