Lines Matching refs:cmd

449 				     struct qlcnic_cmd_args *cmd)  in qlcnic_83xx_get_mbx_data()  argument
453 if (cmd->op_type == QLC_83XX_MBX_POST_BC_OP) in qlcnic_83xx_get_mbx_data()
456 for (i = 0; i < cmd->rsp.num; i++) in qlcnic_83xx_get_mbx_data()
457 cmd->rsp.arg[i] = readl(QLCNIC_MBX_FW(adapter->ahw, i)); in qlcnic_83xx_get_mbx_data()
798 struct qlcnic_cmd_args *cmd) in qlcnic_dump_mbx() argument
802 if (cmd->op_type == QLC_83XX_MBX_POST_BC_OP) in qlcnic_dump_mbx()
806 "Host MBX regs(%d)\n", cmd->req.num); in qlcnic_dump_mbx()
807 for (i = 0; i < cmd->req.num; i++) { in qlcnic_dump_mbx()
810 pr_info("%08x ", cmd->req.arg[i]); in qlcnic_dump_mbx()
814 "FW MBX regs(%d)\n", cmd->rsp.num); in qlcnic_dump_mbx()
815 for (i = 0; i < cmd->rsp.num; i++) { in qlcnic_dump_mbx()
818 pr_info("%08x ", cmd->rsp.arg[i]); in qlcnic_dump_mbx()
824 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_poll_for_mbx_completion() argument
827 int opcode = LSW(cmd->req.arg[0]); in qlcnic_83xx_poll_for_mbx_completion()
830 max_loops = cmd->total_cmds * QLC_83XX_MBX_CMD_LOOP; in qlcnic_83xx_poll_for_mbx_completion()
833 if (atomic_read(&cmd->rsp_status) == in qlcnic_83xx_poll_for_mbx_completion()
842 __func__, opcode, cmd->type, ahw->pci_func, ahw->op_mode); in qlcnic_83xx_poll_for_mbx_completion()
848 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_issue_cmd() argument
858 opcode = LSW(cmd->req.arg[0]); in qlcnic_83xx_issue_cmd()
859 cmd_type = cmd->type; in qlcnic_83xx_issue_cmd()
860 err = mbx->ops->enqueue_cmd(adapter, cmd, &timeout); in qlcnic_83xx_issue_cmd()
864 __func__, opcode, cmd->type, ahw->pci_func, in qlcnic_83xx_issue_cmd()
871 if (!wait_for_completion_timeout(&cmd->completion, timeout)) { in qlcnic_83xx_issue_cmd()
882 qlcnic_83xx_poll_for_mbx_completion(adapter, cmd); in qlcnic_83xx_issue_cmd()
892 return cmd->rsp_opcode; in qlcnic_83xx_issue_cmd()
906 if (type == mbx_tbl[i].cmd) { in qlcnic_83xx_alloc_mbx_args()
936 struct qlcnic_cmd_args cmd; in qlcnic_83xx_idc_aen_work() local
940 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_IDC_ACK); in qlcnic_83xx_idc_aen_work()
945 cmd.req.arg[i] = adapter->ahw->mbox_aen[i]; in qlcnic_83xx_idc_aen_work()
947 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_idc_aen_work()
951 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_idc_aen_work()
1069 struct qlcnic_cmd_args cmd; in qlcnic_83xx_add_rings() local
1079 ahw->hw_ops->alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_add_rings()
1081 cmd.req.arg[1] = 0 | (num_sds << 8) | (context_id << 16); in qlcnic_83xx_add_rings()
1104 buf = &cmd.req.arg[index]; in qlcnic_83xx_add_rings()
1110 err = ahw->hw_ops->mbx_cmd(adapter, &cmd); in qlcnic_83xx_add_rings()
1117 mbx_out = (struct qlcnic_add_rings_mbx_out *)&cmd.rsp.arg[1]; in qlcnic_83xx_add_rings()
1133 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_add_rings()
1141 struct qlcnic_cmd_args cmd; in qlcnic_83xx_del_rx_ctx() local
1144 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_RX_CTX)) in qlcnic_83xx_del_rx_ctx()
1148 cmd.req.arg[0] |= (0x3 << 29); in qlcnic_83xx_del_rx_ctx()
1153 cmd.req.arg[1] = recv_ctx->context_id | temp; in qlcnic_83xx_del_rx_ctx()
1154 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_del_rx_ctx()
1160 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_del_rx_ctx()
1172 struct qlcnic_cmd_args cmd; in qlcnic_83xx_create_rx_ctx() local
1191 err = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_create_rx_ctx()
1197 cmd.req.arg[0] |= (0x3 << 29); in qlcnic_83xx_create_rx_ctx()
1199 cmd.req.arg[1] = cap; in qlcnic_83xx_create_rx_ctx()
1200 cmd.req.arg[5] = 1 | (num_rds << 5) | (num_sds << 8) | in qlcnic_83xx_create_rx_ctx()
1205 &cmd.req.arg[6]); in qlcnic_83xx_create_rx_ctx()
1225 buf = &cmd.req.arg[index]; in qlcnic_83xx_create_rx_ctx()
1245 buf = &cmd.req.arg[index]; in qlcnic_83xx_create_rx_ctx()
1249 err = ahw->hw_ops->mbx_cmd(adapter, &cmd); in qlcnic_83xx_create_rx_ctx()
1255 mbx_out = (struct qlcnic_rcv_mbx_out *)&cmd.rsp.arg[1]; in qlcnic_83xx_create_rx_ctx()
1285 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_create_rx_ctx()
1292 struct qlcnic_cmd_args cmd; in qlcnic_83xx_del_tx_ctx() local
1295 if (qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_DESTROY_TX_CTX)) in qlcnic_83xx_del_tx_ctx()
1299 cmd.req.arg[0] |= (0x3 << 29); in qlcnic_83xx_del_tx_ctx()
1304 cmd.req.arg[1] = tx_ring->ctx_id | temp; in qlcnic_83xx_del_tx_ctx()
1305 if (qlcnic_issue_cmd(adapter, &cmd)) in qlcnic_83xx_del_tx_ctx()
1308 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_del_tx_ctx()
1317 struct qlcnic_cmd_args cmd; in qlcnic_83xx_create_tx_ctx() local
1352 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CREATE_TX_CTX); in qlcnic_83xx_create_tx_ctx()
1357 cmd.req.arg[0] |= (0x3 << 29); in qlcnic_83xx_create_tx_ctx()
1362 cmd.req.arg[1] = QLCNIC_CAP0_LEGACY_CONTEXT; in qlcnic_83xx_create_tx_ctx()
1363 cmd.req.arg[5] = QLCNIC_SINGLE_RING | temp; in qlcnic_83xx_create_tx_ctx()
1365 buf = &cmd.req.arg[6]; in qlcnic_83xx_create_tx_ctx()
1368 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_create_tx_ctx()
1374 mbx_out = (struct qlcnic_tx_mbx_out *)&cmd.rsp.arg[2]; in qlcnic_83xx_create_tx_ctx()
1386 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_create_tx_ctx()
1484 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_beacon_state() local
1488 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LED_CONFIG); in qlcnic_83xx_get_beacon_state()
1490 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_beacon_state()
1492 beacon_state = cmd.rsp.arg[4]; in qlcnic_83xx_get_beacon_state()
1503 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_beacon_state()
1511 struct qlcnic_cmd_args cmd; in qlcnic_83xx_config_led() local
1517 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_config_led()
1522 status = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_led()
1529 adapter->ahw->mbox_reg[i] = cmd.rsp.arg[i+1]; in qlcnic_83xx_config_led()
1531 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_config_led()
1535 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_config_led()
1540 cmd.req.arg[1] = mbx_in; in qlcnic_83xx_config_led()
1541 cmd.req.arg[2] = mbx_in; in qlcnic_83xx_config_led()
1542 cmd.req.arg[3] = mbx_in; in qlcnic_83xx_config_led()
1544 cmd.req.arg[4] = QLC_83XX_ENABLE_BEACON; in qlcnic_83xx_config_led()
1545 status = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_led()
1551 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_config_led()
1556 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_config_led()
1561 cmd.req.arg[1] = adapter->ahw->mbox_reg[0]; in qlcnic_83xx_config_led()
1562 cmd.req.arg[2] = adapter->ahw->mbox_reg[1]; in qlcnic_83xx_config_led()
1563 cmd.req.arg[3] = adapter->ahw->mbox_reg[2]; in qlcnic_83xx_config_led()
1565 cmd.req.arg[4] = adapter->ahw->mbox_reg[3]; in qlcnic_83xx_config_led()
1566 status = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_led()
1570 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_config_led()
1622 struct qlcnic_cmd_args cmd; in qlcnic_83xx_initialize_nic() local
1629 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_initialize_nic()
1632 status = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_initialize_nic()
1638 cmd.req.arg[1] = QLC_REGISTER_LB_IDC | QLC_INIT_FW_RESOURCES; in qlcnic_83xx_initialize_nic()
1641 cmd.req.arg[1] |= QLC_REGISTER_DCB_AEN; in qlcnic_83xx_initialize_nic()
1643 status = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_initialize_nic()
1649 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_initialize_nic()
1654 struct qlcnic_cmd_args cmd; in qlcnic_83xx_set_port_config() local
1657 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_PORT_CONFIG); in qlcnic_83xx_set_port_config()
1661 cmd.req.arg[1] = adapter->ahw->port_config; in qlcnic_83xx_set_port_config()
1662 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_port_config()
1665 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_set_port_config()
1671 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_port_config() local
1674 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PORT_CONFIG); in qlcnic_83xx_get_port_config()
1678 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_port_config()
1682 adapter->ahw->port_config = cmd.rsp.arg[1]; in qlcnic_83xx_get_port_config()
1683 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_port_config()
1691 struct qlcnic_cmd_args cmd; in qlcnic_83xx_setup_link_event() local
1693 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LINK_EVENT); in qlcnic_83xx_setup_link_event()
1698 cmd.req.arg[1] = (enable ? 1 : 0) | BIT_8 | temp; in qlcnic_83xx_setup_link_event()
1699 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_setup_link_event()
1703 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_setup_link_event()
1722 struct qlcnic_cmd_args *cmd = NULL; in qlcnic_83xx_nic_set_promisc() local
1729 cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC); in qlcnic_83xx_nic_set_promisc()
1730 if (!cmd) in qlcnic_83xx_nic_set_promisc()
1733 err = qlcnic_alloc_mbx_args(cmd, adapter, in qlcnic_83xx_nic_set_promisc()
1738 cmd->type = QLC_83XX_MBX_CMD_NO_WAIT; in qlcnic_83xx_nic_set_promisc()
1744 cmd->req.arg[1] = mode | temp; in qlcnic_83xx_nic_set_promisc()
1745 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_83xx_nic_set_promisc()
1749 qlcnic_free_mbx_args(cmd); in qlcnic_83xx_nic_set_promisc()
1752 kfree(cmd); in qlcnic_83xx_nic_set_promisc()
1976 struct qlcnic_cmd_args cmd; in qlcnic_83xx_config_ipaddr() local
1978 err = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_config_ipaddr()
1986 cmd.req.arg[1] = 1 | temp; in qlcnic_83xx_config_ipaddr()
1988 cmd.req.arg[1] = 2 | temp; in qlcnic_83xx_config_ipaddr()
1999 memcpy(&cmd.req.arg[2], &temp_ip, sizeof(u32)); in qlcnic_83xx_config_ipaddr()
2000 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_ipaddr()
2006 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_config_ipaddr()
2013 struct qlcnic_cmd_args cmd; in qlcnic_83xx_config_hw_lro() local
2021 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIGURE_HW_LRO); in qlcnic_83xx_config_hw_lro()
2027 cmd.req.arg[1] = arg1; in qlcnic_83xx_config_hw_lro()
2029 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_hw_lro()
2032 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_config_hw_lro()
2041 struct qlcnic_cmd_args cmd; in qlcnic_83xx_config_rss() local
2046 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIGURE_RSS); in qlcnic_83xx_config_rss()
2062 cmd.req.arg[1] = (adapter->recv_ctx->context_id); in qlcnic_83xx_config_rss()
2063 cmd.req.arg[2] = word; in qlcnic_83xx_config_rss()
2064 memcpy(&cmd.req.arg[4], key, sizeof(key)); in qlcnic_83xx_config_rss()
2066 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_rss()
2070 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_config_rss()
2090 struct qlcnic_cmd_args *cmd = NULL; in qlcnic_83xx_sre_macaddr_change() local
2098 cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC); in qlcnic_83xx_sre_macaddr_change()
2099 if (!cmd) in qlcnic_83xx_sre_macaddr_change()
2102 err = qlcnic_alloc_mbx_args(cmd, adapter, QLCNIC_CMD_CONFIG_MAC_VLAN); in qlcnic_83xx_sre_macaddr_change()
2106 cmd->type = QLC_83XX_MBX_CMD_NO_WAIT; in qlcnic_83xx_sre_macaddr_change()
2112 cmd->req.arg[1] = op | (1 << 8); in qlcnic_83xx_sre_macaddr_change()
2114 cmd->req.arg[1] |= temp; in qlcnic_83xx_sre_macaddr_change()
2122 buf = &cmd->req.arg[2]; in qlcnic_83xx_sre_macaddr_change()
2124 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_83xx_sre_macaddr_change()
2128 qlcnic_free_mbx_args(cmd); in qlcnic_83xx_sre_macaddr_change()
2130 kfree(cmd); in qlcnic_83xx_sre_macaddr_change()
2143 u8 type, struct qlcnic_cmd_args *cmd) in qlcnic_83xx_configure_mac() argument
2148 memcpy(&cmd->req.arg[2], mac, sizeof(u32)); in qlcnic_83xx_configure_mac()
2149 memcpy(&cmd->req.arg[3], &mac[4], sizeof(u16)); in qlcnic_83xx_configure_mac()
2152 cmd->req.arg[1] = type; in qlcnic_83xx_configure_mac()
2159 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_mac_address() local
2163 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_MAC_ADDRESS); in qlcnic_83xx_get_mac_address()
2167 qlcnic_83xx_configure_mac(adapter, mac, QLCNIC_GET_CURRENT_MAC, &cmd); in qlcnic_83xx_get_mac_address()
2168 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_mac_address()
2171 mac_low = cmd.rsp.arg[1]; in qlcnic_83xx_get_mac_address()
2172 mac_high = cmd.rsp.arg[2]; in qlcnic_83xx_get_mac_address()
2183 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_mac_address()
2190 struct qlcnic_cmd_args cmd; in qlcnic_83xx_set_rx_intr_coal() local
2194 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTR_COAL); in qlcnic_83xx_set_rx_intr_coal()
2199 cmd.req.arg[1] = QLCNIC_INTR_COAL_TYPE_RX | temp << 16; in qlcnic_83xx_set_rx_intr_coal()
2201 cmd.req.arg[2] = coal->rx_packets | temp << 16; in qlcnic_83xx_set_rx_intr_coal()
2202 cmd.req.arg[3] = coal->flag; in qlcnic_83xx_set_rx_intr_coal()
2204 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_rx_intr_coal()
2209 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_set_rx_intr_coal()
2217 struct qlcnic_cmd_args cmd; in qlcnic_83xx_set_tx_intr_coal() local
2221 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTR_COAL); in qlcnic_83xx_set_tx_intr_coal()
2226 cmd.req.arg[1] = QLCNIC_INTR_COAL_TYPE_TX | temp << 16; in qlcnic_83xx_set_tx_intr_coal()
2228 cmd.req.arg[2] = coal->tx_packets | temp << 16; in qlcnic_83xx_set_tx_intr_coal()
2229 cmd.req.arg[3] = coal->flag; in qlcnic_83xx_set_tx_intr_coal()
2231 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_tx_intr_coal()
2236 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_set_tx_intr_coal()
2373 struct qlcnic_cmd_args cmd; in qlcnic_83xx_set_nic_info() local
2382 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); in qlcnic_83xx_set_nic_info()
2386 cmd.req.arg[1] = (nic->pci_func << 16); in qlcnic_83xx_set_nic_info()
2387 cmd.req.arg[2] = 0x1 << 16; in qlcnic_83xx_set_nic_info()
2388 cmd.req.arg[3] = nic->phys_port | (nic->switch_mode << 16); in qlcnic_83xx_set_nic_info()
2389 cmd.req.arg[4] = nic->capabilities; in qlcnic_83xx_set_nic_info()
2390 cmd.req.arg[5] = (nic->max_mac_filters & 0xFF) | ((nic->max_mtu) << 16); in qlcnic_83xx_set_nic_info()
2391 cmd.req.arg[6] = (nic->max_tx_ques) | ((nic->max_rx_ques) << 16); in qlcnic_83xx_set_nic_info()
2392 cmd.req.arg[7] = (nic->min_tx_bw) | ((nic->max_tx_bw) << 16); in qlcnic_83xx_set_nic_info()
2394 cmd.req.arg[i] = 0; in qlcnic_83xx_set_nic_info()
2396 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_nic_info()
2404 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_set_nic_info()
2415 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_nic_info() local
2418 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO); in qlcnic_83xx_get_nic_info()
2424 cmd.req.arg[1] = op | BIT_31 | temp; in qlcnic_83xx_get_nic_info()
2426 cmd.req.arg[1] = ahw->pci_func << 16; in qlcnic_83xx_get_nic_info()
2428 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_nic_info()
2435 npar_info->op_type = cmd.rsp.arg[1]; in qlcnic_83xx_get_nic_info()
2436 npar_info->pci_func = cmd.rsp.arg[2] & 0xFFFF; in qlcnic_83xx_get_nic_info()
2437 npar_info->op_mode = (cmd.rsp.arg[2] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2438 npar_info->phys_port = cmd.rsp.arg[3] & 0xFFFF; in qlcnic_83xx_get_nic_info()
2439 npar_info->switch_mode = (cmd.rsp.arg[3] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2440 npar_info->capabilities = cmd.rsp.arg[4]; in qlcnic_83xx_get_nic_info()
2441 npar_info->max_mac_filters = cmd.rsp.arg[5] & 0xFF; in qlcnic_83xx_get_nic_info()
2442 npar_info->max_mtu = (cmd.rsp.arg[5] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2443 npar_info->max_tx_ques = cmd.rsp.arg[6] & 0xFFFF; in qlcnic_83xx_get_nic_info()
2444 npar_info->max_rx_ques = (cmd.rsp.arg[6] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2445 npar_info->min_tx_bw = cmd.rsp.arg[7] & 0xFFFF; in qlcnic_83xx_get_nic_info()
2446 npar_info->max_tx_bw = (cmd.rsp.arg[7] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2447 if (cmd.rsp.arg[8] & 0x1) in qlcnic_83xx_get_nic_info()
2448 npar_info->max_bw_reg_offset = (cmd.rsp.arg[8] & 0x7FFE) >> 1; in qlcnic_83xx_get_nic_info()
2449 if (cmd.rsp.arg[8] & 0x10000) { in qlcnic_83xx_get_nic_info()
2450 temp = (cmd.rsp.arg[8] & 0x7FFE0000) >> 17; in qlcnic_83xx_get_nic_info()
2454 memcpy(ahw->extra_capability, &cmd.rsp.arg[16], in qlcnic_83xx_get_nic_info()
2458 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_nic_info()
2493 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_pci_info() local
2497 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO); in qlcnic_83xx_get_pci_info()
2501 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_pci_info()
2505 ahw->max_pci_func = cmd.rsp.arg[1] & 0xFF; in qlcnic_83xx_get_pci_info()
2507 pci_info->id = cmd.rsp.arg[i] & 0xFFFF; in qlcnic_83xx_get_pci_info()
2508 pci_info->active = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_pci_info()
2514 pci_info->type = cmd.rsp.arg[i] & 0xFFFF; in qlcnic_83xx_get_pci_info()
2517 temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_pci_info()
2520 pci_info->tx_min_bw = cmd.rsp.arg[i] & 0xFFFF; in qlcnic_83xx_get_pci_info()
2521 temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_pci_info()
2524 memcpy(pci_info->mac, &cmd.rsp.arg[i], ETH_ALEN - 2); in qlcnic_83xx_get_pci_info()
2526 memcpy(pci_info->mac + sizeof(u32), &cmd.rsp.arg[i], 2); in qlcnic_83xx_get_pci_info()
2541 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_pci_info()
2551 struct qlcnic_cmd_args cmd; in qlcnic_83xx_config_intrpt() local
2554 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTRPT); in qlcnic_83xx_config_intrpt()
2558 cmd.req.arg[1] = max_ints; in qlcnic_83xx_config_intrpt()
2561 cmd.req.arg[1] |= (adapter->ahw->pci_func << 8) | BIT_16; in qlcnic_83xx_config_intrpt()
2568 cmd.req.arg[index++] = val; in qlcnic_83xx_config_intrpt()
2570 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_intrpt()
2577 max_ints = cmd.rsp.arg[1]; in qlcnic_83xx_config_intrpt()
2579 val = cmd.rsp.arg[index]; in qlcnic_83xx_config_intrpt()
2589 temp = cmd.rsp.arg[index + 1]; in qlcnic_83xx_config_intrpt()
2598 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_config_intrpt()
2720 u32 cmd; in qlcnic_83xx_enable_flash_write() local
2721 cmd = adapter->ahw->fdt.write_statusreg_cmd; in qlcnic_83xx_enable_flash_write()
2723 (QLC_83XX_FLASH_FDT_WRITE_DEF_SIG | cmd)); in qlcnic_83xx_enable_flash_write()
2805 u32 reversed_addr, addr1, addr2, cmd; in qlcnic_83xx_erase_flash_sector() local
2836 cmd = QLC_83XX_FLASH_FDT_ERASE_DEF_SIG | adapter->ahw->fdt.erase_cmd; in qlcnic_83xx_erase_flash_sector()
2838 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, cmd); in qlcnic_83xx_erase_flash_sector()
3177 struct qlcnic_cmd_args cmd; in qlcnic_83xx_test_link() local
3191 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LINK_STATUS); in qlcnic_83xx_test_link()
3195 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_test_link()
3201 config = cmd.rsp.arg[1]; in qlcnic_83xx_test_link()
3219 config = cmd.rsp.arg[3]; in qlcnic_83xx_test_link()
3252 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_test_link()
3411 static inline u64 *qlcnic_83xx_copy_stats(struct qlcnic_cmd_args *cmd, in qlcnic_83xx_copy_stats() argument
3417 low = cmd->rsp.arg[index]; in qlcnic_83xx_copy_stats()
3418 hi = cmd->rsp.arg[index + 1]; in qlcnic_83xx_copy_stats()
3425 struct qlcnic_cmd_args *cmd, u64 *data, in qlcnic_83xx_fill_stats() argument
3431 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_83xx_fill_stats()
3438 total_regs = cmd->rsp.num; in qlcnic_83xx_fill_stats()
3443 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3447 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3451 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3454 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3458 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3461 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3464 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3468 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3471 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3482 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_stats() local
3486 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_STATISTICS); in qlcnic_83xx_get_stats()
3490 cmd.req.arg[1] = BIT_1 | (adapter->tx_ring->ctx_id << 16); in qlcnic_83xx_get_stats()
3491 cmd.rsp.num = QLC_83XX_TX_STAT_REGS; in qlcnic_83xx_get_stats()
3492 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3499 cmd.req.arg[1] = BIT_2 | (adapter->portnum << 16); in qlcnic_83xx_get_stats()
3500 cmd.rsp.num = QLC_83XX_MAC_STAT_REGS; in qlcnic_83xx_get_stats()
3501 memset(cmd.rsp.arg, 0, sizeof(u32) * cmd.rsp.num); in qlcnic_83xx_get_stats()
3502 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3509 cmd.req.arg[1] = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_get_stats()
3510 cmd.rsp.num = QLC_83XX_RX_STAT_REGS; in qlcnic_83xx_get_stats()
3511 memset(cmd.rsp.arg, 0, sizeof(u32) * cmd.rsp.num); in qlcnic_83xx_get_stats()
3512 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3517 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_stats()
3525 struct qlcnic_cmd_args cmd; in qlcnic_83xx_extend_md_capab() local
3528 err = qlcnic_alloc_mbx_args(&cmd, adapter, in qlcnic_83xx_extend_md_capab()
3533 cmd.req.arg[1] = (QLCNIC_83XX_ADD_PORT0 | QLCNIC_83XX_ADD_PORT1); in qlcnic_83xx_extend_md_capab()
3534 cmd.req.arg[2] = QLCNIC_83XX_EXTENDED_MEM_SIZE; in qlcnic_83xx_extend_md_capab()
3535 cmd.req.arg[3] = QLCNIC_83XX_EXTENDED_MEM_SIZE; in qlcnic_83xx_extend_md_capab()
3537 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_extend_md_capab()
3586 struct qlcnic_cmd_args cmd; in qlcnic_83xx_interrupt_test() local
3609 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_INTRPT_TEST); in qlcnic_83xx_interrupt_test()
3618 cmd.req.arg[1] = 1; in qlcnic_83xx_interrupt_test()
3619 cmd.req.arg[2] = intrpt_id; in qlcnic_83xx_interrupt_test()
3620 cmd.req.arg[3] = BIT_0; in qlcnic_83xx_interrupt_test()
3622 ret = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_interrupt_test()
3623 data = cmd.rsp.arg[2]; in qlcnic_83xx_interrupt_test()
3640 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_interrupt_test()
3835 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_notify_cmd_completion() argument
3837 atomic_set(&cmd->rsp_status, QLC_83XX_MBX_RESPONSE_ARRIVED); in qlcnic_83xx_notify_cmd_completion()
3839 if (cmd->type == QLC_83XX_MBX_CMD_NO_WAIT) { in qlcnic_83xx_notify_cmd_completion()
3840 qlcnic_free_mbx_args(cmd); in qlcnic_83xx_notify_cmd_completion()
3841 kfree(cmd); in qlcnic_83xx_notify_cmd_completion()
3844 complete(&cmd->completion); in qlcnic_83xx_notify_cmd_completion()
3851 struct qlcnic_cmd_args *cmd = NULL; in qlcnic_83xx_flush_mbx_queue() local
3856 cmd = list_entry(head->next, struct qlcnic_cmd_args, list); in qlcnic_83xx_flush_mbx_queue()
3858 __func__, cmd->cmd_op); in qlcnic_83xx_flush_mbx_queue()
3859 list_del(&cmd->list); in qlcnic_83xx_flush_mbx_queue()
3861 qlcnic_83xx_notify_cmd_completion(adapter, cmd); in qlcnic_83xx_flush_mbx_queue()
3896 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_dequeue_mbx_cmd() argument
3902 list_del(&cmd->list); in qlcnic_83xx_dequeue_mbx_cmd()
3907 qlcnic_83xx_notify_cmd_completion(adapter, cmd); in qlcnic_83xx_dequeue_mbx_cmd()
3911 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_encode_mbx_cmd() argument
3917 if (cmd->op_type != QLC_83XX_MBX_POST_BC_OP) { in qlcnic_83xx_encode_mbx_cmd()
3918 mbx_cmd = cmd->req.arg[0]; in qlcnic_83xx_encode_mbx_cmd()
3920 for (i = 1; i < cmd->req.num; i++) in qlcnic_83xx_encode_mbx_cmd()
3921 writel(cmd->req.arg[i], QLCNIC_MBX_HOST(ahw, i)); in qlcnic_83xx_encode_mbx_cmd()
3925 total_size = cmd->pay_size + hdr_size; in qlcnic_83xx_encode_mbx_cmd()
3934 mbx_cmd |= cmd->func_num << 5; in qlcnic_83xx_encode_mbx_cmd()
3939 writel(*(cmd->hdr++), QLCNIC_MBX_HOST(ahw, i)); in qlcnic_83xx_encode_mbx_cmd()
3940 for (j = 0; j < cmd->pay_size; j++, i++) in qlcnic_83xx_encode_mbx_cmd()
3941 writel(*(cmd->pay++), QLCNIC_MBX_HOST(ahw, i)); in qlcnic_83xx_encode_mbx_cmd()
3960 struct qlcnic_cmd_args *cmd, in qlcnic_83xx_enqueue_mbx_cmd() argument
3966 atomic_set(&cmd->rsp_status, QLC_83XX_MBX_RESPONSE_WAIT); in qlcnic_83xx_enqueue_mbx_cmd()
3967 init_completion(&cmd->completion); in qlcnic_83xx_enqueue_mbx_cmd()
3968 cmd->rsp_opcode = QLC_83XX_MBX_RESPONSE_UNKNOWN; in qlcnic_83xx_enqueue_mbx_cmd()
3972 list_add_tail(&cmd->list, &mbx->cmd_q); in qlcnic_83xx_enqueue_mbx_cmd()
3974 cmd->total_cmds = mbx->num_cmds; in qlcnic_83xx_enqueue_mbx_cmd()
3975 *timeout = cmd->total_cmds * QLC_83XX_MBX_TIMEOUT; in qlcnic_83xx_enqueue_mbx_cmd()
3987 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_check_mac_rcode() argument
3992 if (cmd->cmd_op == QLCNIC_CMD_CONFIG_MAC_VLAN) { in qlcnic_83xx_check_mac_rcode()
3998 cmd->rsp_opcode = QLCNIC_RCODE_SUCCESS; in qlcnic_83xx_check_mac_rcode()
4007 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_decode_mbx_rsp() argument
4016 qlcnic_83xx_get_mbx_data(adapter, cmd); in qlcnic_83xx_decode_mbx_rsp()
4021 cmd->rsp_opcode = QLCNIC_RCODE_SUCCESS; in qlcnic_83xx_decode_mbx_rsp()
4024 if (!qlcnic_83xx_check_mac_rcode(adapter, cmd)) in qlcnic_83xx_decode_mbx_rsp()
4028 __func__, cmd->cmd_op, cmd->type, ahw->pci_func, in qlcnic_83xx_decode_mbx_rsp()
4030 cmd->rsp_opcode = QLC_83XX_MBX_RESPONSE_FAILED; in qlcnic_83xx_decode_mbx_rsp()
4031 qlcnic_dump_mbx(adapter, cmd); in qlcnic_83xx_decode_mbx_rsp()
4059 struct qlcnic_cmd_args *cmd = NULL; in qlcnic_83xx_mailbox_worker() local
4080 cmd = list_entry(head->next, struct qlcnic_cmd_args, list); in qlcnic_83xx_mailbox_worker()
4084 mbx_ops->encode_cmd(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4089 mbx_ops->decode_resp(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4093 __func__, cmd->cmd_op, cmd->type, ahw->pci_func, in qlcnic_83xx_mailbox_worker()
4097 qlcnic_83xx_get_mbx_data(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4098 qlcnic_dump_mbx(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4101 cmd->rsp_opcode = QLCNIC_RCODE_TIMEOUT; in qlcnic_83xx_mailbox_worker()
4103 mbx_ops->dequeue_cmd(adapter, cmd); in qlcnic_83xx_mailbox_worker()