Lines Matching refs:cmd
447 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_get_mbx_data() argument
451 if (cmd->op_type == QLC_83XX_MBX_POST_BC_OP) in qlcnic_83xx_get_mbx_data()
454 for (i = 0; i < cmd->rsp.num; i++) in qlcnic_83xx_get_mbx_data()
455 cmd->rsp.arg[i] = readl(QLCNIC_MBX_FW(adapter->ahw, i)); in qlcnic_83xx_get_mbx_data()
796 struct qlcnic_cmd_args *cmd) in qlcnic_dump_mbx() argument
800 if (cmd->op_type == QLC_83XX_MBX_POST_BC_OP) in qlcnic_dump_mbx()
804 "Host MBX regs(%d)\n", cmd->req.num); in qlcnic_dump_mbx()
805 for (i = 0; i < cmd->req.num; i++) { in qlcnic_dump_mbx()
808 pr_info("%08x ", cmd->req.arg[i]); in qlcnic_dump_mbx()
812 "FW MBX regs(%d)\n", cmd->rsp.num); in qlcnic_dump_mbx()
813 for (i = 0; i < cmd->rsp.num; i++) { in qlcnic_dump_mbx()
816 pr_info("%08x ", cmd->rsp.arg[i]); in qlcnic_dump_mbx()
822 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_poll_for_mbx_completion() argument
825 int opcode = LSW(cmd->req.arg[0]); in qlcnic_83xx_poll_for_mbx_completion()
828 max_loops = cmd->total_cmds * QLC_83XX_MBX_CMD_LOOP; in qlcnic_83xx_poll_for_mbx_completion()
831 if (atomic_read(&cmd->rsp_status) == in qlcnic_83xx_poll_for_mbx_completion()
840 __func__, opcode, cmd->type, ahw->pci_func, ahw->op_mode); in qlcnic_83xx_poll_for_mbx_completion()
846 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_issue_cmd() argument
856 opcode = LSW(cmd->req.arg[0]); in qlcnic_83xx_issue_cmd()
857 cmd_type = cmd->type; in qlcnic_83xx_issue_cmd()
858 err = mbx->ops->enqueue_cmd(adapter, cmd, &timeout); in qlcnic_83xx_issue_cmd()
862 __func__, opcode, cmd->type, ahw->pci_func, in qlcnic_83xx_issue_cmd()
869 if (!wait_for_completion_timeout(&cmd->completion, timeout)) { in qlcnic_83xx_issue_cmd()
880 qlcnic_83xx_poll_for_mbx_completion(adapter, cmd); in qlcnic_83xx_issue_cmd()
890 return cmd->rsp_opcode; in qlcnic_83xx_issue_cmd()
904 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()
2369 struct qlcnic_cmd_args cmd; in qlcnic_83xx_set_nic_info() local
2378 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_SET_NIC_INFO); in qlcnic_83xx_set_nic_info()
2382 cmd.req.arg[1] = (nic->pci_func << 16); in qlcnic_83xx_set_nic_info()
2383 cmd.req.arg[2] = 0x1 << 16; in qlcnic_83xx_set_nic_info()
2384 cmd.req.arg[3] = nic->phys_port | (nic->switch_mode << 16); in qlcnic_83xx_set_nic_info()
2385 cmd.req.arg[4] = nic->capabilities; in qlcnic_83xx_set_nic_info()
2386 cmd.req.arg[5] = (nic->max_mac_filters & 0xFF) | ((nic->max_mtu) << 16); in qlcnic_83xx_set_nic_info()
2387 cmd.req.arg[6] = (nic->max_tx_ques) | ((nic->max_rx_ques) << 16); in qlcnic_83xx_set_nic_info()
2388 cmd.req.arg[7] = (nic->min_tx_bw) | ((nic->max_tx_bw) << 16); in qlcnic_83xx_set_nic_info()
2390 cmd.req.arg[i] = 0; in qlcnic_83xx_set_nic_info()
2392 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_set_nic_info()
2400 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_set_nic_info()
2411 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_nic_info() local
2414 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_NIC_INFO); in qlcnic_83xx_get_nic_info()
2420 cmd.req.arg[1] = op | BIT_31 | temp; in qlcnic_83xx_get_nic_info()
2422 cmd.req.arg[1] = ahw->pci_func << 16; in qlcnic_83xx_get_nic_info()
2424 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_nic_info()
2431 npar_info->op_type = cmd.rsp.arg[1]; in qlcnic_83xx_get_nic_info()
2432 npar_info->pci_func = cmd.rsp.arg[2] & 0xFFFF; in qlcnic_83xx_get_nic_info()
2433 npar_info->op_mode = (cmd.rsp.arg[2] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2434 npar_info->phys_port = cmd.rsp.arg[3] & 0xFFFF; in qlcnic_83xx_get_nic_info()
2435 npar_info->switch_mode = (cmd.rsp.arg[3] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2436 npar_info->capabilities = cmd.rsp.arg[4]; in qlcnic_83xx_get_nic_info()
2437 npar_info->max_mac_filters = cmd.rsp.arg[5] & 0xFF; in qlcnic_83xx_get_nic_info()
2438 npar_info->max_mtu = (cmd.rsp.arg[5] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2439 npar_info->max_tx_ques = cmd.rsp.arg[6] & 0xFFFF; in qlcnic_83xx_get_nic_info()
2440 npar_info->max_rx_ques = (cmd.rsp.arg[6] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2441 npar_info->min_tx_bw = cmd.rsp.arg[7] & 0xFFFF; in qlcnic_83xx_get_nic_info()
2442 npar_info->max_tx_bw = (cmd.rsp.arg[7] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_nic_info()
2443 if (cmd.rsp.arg[8] & 0x1) in qlcnic_83xx_get_nic_info()
2444 npar_info->max_bw_reg_offset = (cmd.rsp.arg[8] & 0x7FFE) >> 1; in qlcnic_83xx_get_nic_info()
2445 if (cmd.rsp.arg[8] & 0x10000) { in qlcnic_83xx_get_nic_info()
2446 temp = (cmd.rsp.arg[8] & 0x7FFE0000) >> 17; in qlcnic_83xx_get_nic_info()
2450 memcpy(ahw->extra_capability, &cmd.rsp.arg[16], in qlcnic_83xx_get_nic_info()
2454 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_nic_info()
2489 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_pci_info() local
2493 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO); in qlcnic_83xx_get_pci_info()
2497 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_get_pci_info()
2501 ahw->max_pci_func = cmd.rsp.arg[1] & 0xFF; in qlcnic_83xx_get_pci_info()
2503 pci_info->id = cmd.rsp.arg[i] & 0xFFFF; in qlcnic_83xx_get_pci_info()
2504 pci_info->active = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_pci_info()
2510 pci_info->type = cmd.rsp.arg[i] & 0xFFFF; in qlcnic_83xx_get_pci_info()
2513 temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; in qlcnic_83xx_get_pci_info()
2516 pci_info->tx_min_bw = 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 memcpy(pci_info->mac, &cmd.rsp.arg[i], ETH_ALEN - 2); in qlcnic_83xx_get_pci_info()
2522 memcpy(pci_info->mac + sizeof(u32), &cmd.rsp.arg[i], 2); in qlcnic_83xx_get_pci_info()
2537 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_pci_info()
2547 struct qlcnic_cmd_args cmd; in qlcnic_83xx_config_intrpt() local
2550 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_CONFIG_INTRPT); in qlcnic_83xx_config_intrpt()
2554 cmd.req.arg[1] = max_ints; in qlcnic_83xx_config_intrpt()
2557 cmd.req.arg[1] |= (adapter->ahw->pci_func << 8) | BIT_16; in qlcnic_83xx_config_intrpt()
2564 cmd.req.arg[index++] = val; in qlcnic_83xx_config_intrpt()
2566 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_config_intrpt()
2573 max_ints = cmd.rsp.arg[1]; in qlcnic_83xx_config_intrpt()
2575 val = cmd.rsp.arg[index]; in qlcnic_83xx_config_intrpt()
2585 temp = cmd.rsp.arg[index + 1]; in qlcnic_83xx_config_intrpt()
2594 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_config_intrpt()
2716 u32 cmd; in qlcnic_83xx_enable_flash_write() local
2717 cmd = adapter->ahw->fdt.write_statusreg_cmd; in qlcnic_83xx_enable_flash_write()
2719 (QLC_83XX_FLASH_FDT_WRITE_DEF_SIG | cmd)); in qlcnic_83xx_enable_flash_write()
2801 u32 reversed_addr, addr1, addr2, cmd; in qlcnic_83xx_erase_flash_sector() local
2832 cmd = QLC_83XX_FLASH_FDT_ERASE_DEF_SIG | adapter->ahw->fdt.erase_cmd; in qlcnic_83xx_erase_flash_sector()
2834 qlcnic_83xx_wrt_reg_indirect(adapter, QLC_83XX_FLASH_ADDR, cmd); in qlcnic_83xx_erase_flash_sector()
3173 struct qlcnic_cmd_args cmd; in qlcnic_83xx_test_link() local
3187 err = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_LINK_STATUS); in qlcnic_83xx_test_link()
3191 err = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_test_link()
3197 config = cmd.rsp.arg[1]; in qlcnic_83xx_test_link()
3215 config = cmd.rsp.arg[3]; in qlcnic_83xx_test_link()
3248 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_test_link()
3407 static inline u64 *qlcnic_83xx_copy_stats(struct qlcnic_cmd_args *cmd, in qlcnic_83xx_copy_stats() argument
3413 low = cmd->rsp.arg[index]; in qlcnic_83xx_copy_stats()
3414 hi = cmd->rsp.arg[index + 1]; in qlcnic_83xx_copy_stats()
3421 struct qlcnic_cmd_args *cmd, u64 *data, in qlcnic_83xx_fill_stats() argument
3427 err = qlcnic_issue_cmd(adapter, cmd); in qlcnic_83xx_fill_stats()
3434 total_regs = cmd->rsp.num; in qlcnic_83xx_fill_stats()
3439 data = qlcnic_83xx_copy_stats(cmd, data, k); 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()
3450 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()
3457 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3460 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()
3467 data = qlcnic_83xx_copy_stats(cmd, data, k); in qlcnic_83xx_fill_stats()
3478 struct qlcnic_cmd_args cmd; in qlcnic_83xx_get_stats() local
3482 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_STATISTICS); in qlcnic_83xx_get_stats()
3486 cmd.req.arg[1] = BIT_1 | (adapter->tx_ring->ctx_id << 16); in qlcnic_83xx_get_stats()
3487 cmd.rsp.num = QLC_83XX_TX_STAT_REGS; in qlcnic_83xx_get_stats()
3488 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3495 cmd.req.arg[1] = BIT_2 | (adapter->portnum << 16); in qlcnic_83xx_get_stats()
3496 cmd.rsp.num = QLC_83XX_MAC_STAT_REGS; in qlcnic_83xx_get_stats()
3497 memset(cmd.rsp.arg, 0, sizeof(u32) * cmd.rsp.num); in qlcnic_83xx_get_stats()
3498 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3505 cmd.req.arg[1] = adapter->recv_ctx->context_id << 16; in qlcnic_83xx_get_stats()
3506 cmd.rsp.num = QLC_83XX_RX_STAT_REGS; in qlcnic_83xx_get_stats()
3507 memset(cmd.rsp.arg, 0, sizeof(u32) * cmd.rsp.num); in qlcnic_83xx_get_stats()
3508 data = qlcnic_83xx_fill_stats(adapter, &cmd, data, in qlcnic_83xx_get_stats()
3513 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_get_stats()
3557 struct qlcnic_cmd_args cmd; in qlcnic_83xx_interrupt_test() local
3580 ret = qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_INTRPT_TEST); in qlcnic_83xx_interrupt_test()
3589 cmd.req.arg[1] = 1; in qlcnic_83xx_interrupt_test()
3590 cmd.req.arg[2] = intrpt_id; in qlcnic_83xx_interrupt_test()
3591 cmd.req.arg[3] = BIT_0; in qlcnic_83xx_interrupt_test()
3593 ret = qlcnic_issue_cmd(adapter, &cmd); in qlcnic_83xx_interrupt_test()
3594 data = cmd.rsp.arg[2]; in qlcnic_83xx_interrupt_test()
3611 qlcnic_free_mbx_args(&cmd); in qlcnic_83xx_interrupt_test()
3806 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_notify_cmd_completion() argument
3808 atomic_set(&cmd->rsp_status, QLC_83XX_MBX_RESPONSE_ARRIVED); in qlcnic_83xx_notify_cmd_completion()
3810 if (cmd->type == QLC_83XX_MBX_CMD_NO_WAIT) { in qlcnic_83xx_notify_cmd_completion()
3811 qlcnic_free_mbx_args(cmd); in qlcnic_83xx_notify_cmd_completion()
3812 kfree(cmd); in qlcnic_83xx_notify_cmd_completion()
3815 complete(&cmd->completion); in qlcnic_83xx_notify_cmd_completion()
3822 struct qlcnic_cmd_args *cmd = NULL; in qlcnic_83xx_flush_mbx_queue() local
3827 cmd = list_entry(head->next, struct qlcnic_cmd_args, list); in qlcnic_83xx_flush_mbx_queue()
3829 __func__, cmd->cmd_op); in qlcnic_83xx_flush_mbx_queue()
3830 list_del(&cmd->list); in qlcnic_83xx_flush_mbx_queue()
3832 qlcnic_83xx_notify_cmd_completion(adapter, cmd); in qlcnic_83xx_flush_mbx_queue()
3867 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_dequeue_mbx_cmd() argument
3873 list_del(&cmd->list); in qlcnic_83xx_dequeue_mbx_cmd()
3878 qlcnic_83xx_notify_cmd_completion(adapter, cmd); in qlcnic_83xx_dequeue_mbx_cmd()
3882 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_encode_mbx_cmd() argument
3888 if (cmd->op_type != QLC_83XX_MBX_POST_BC_OP) { in qlcnic_83xx_encode_mbx_cmd()
3889 mbx_cmd = cmd->req.arg[0]; in qlcnic_83xx_encode_mbx_cmd()
3891 for (i = 1; i < cmd->req.num; i++) in qlcnic_83xx_encode_mbx_cmd()
3892 writel(cmd->req.arg[i], QLCNIC_MBX_HOST(ahw, i)); in qlcnic_83xx_encode_mbx_cmd()
3896 total_size = cmd->pay_size + hdr_size; in qlcnic_83xx_encode_mbx_cmd()
3905 mbx_cmd |= cmd->func_num << 5; in qlcnic_83xx_encode_mbx_cmd()
3910 writel(*(cmd->hdr++), QLCNIC_MBX_HOST(ahw, i)); in qlcnic_83xx_encode_mbx_cmd()
3911 for (j = 0; j < cmd->pay_size; j++, i++) in qlcnic_83xx_encode_mbx_cmd()
3912 writel(*(cmd->pay++), QLCNIC_MBX_HOST(ahw, i)); in qlcnic_83xx_encode_mbx_cmd()
3931 struct qlcnic_cmd_args *cmd, in qlcnic_83xx_enqueue_mbx_cmd() argument
3937 atomic_set(&cmd->rsp_status, QLC_83XX_MBX_RESPONSE_WAIT); in qlcnic_83xx_enqueue_mbx_cmd()
3938 init_completion(&cmd->completion); in qlcnic_83xx_enqueue_mbx_cmd()
3939 cmd->rsp_opcode = QLC_83XX_MBX_RESPONSE_UNKNOWN; in qlcnic_83xx_enqueue_mbx_cmd()
3943 list_add_tail(&cmd->list, &mbx->cmd_q); in qlcnic_83xx_enqueue_mbx_cmd()
3945 cmd->total_cmds = mbx->num_cmds; in qlcnic_83xx_enqueue_mbx_cmd()
3946 *timeout = cmd->total_cmds * QLC_83XX_MBX_TIMEOUT; in qlcnic_83xx_enqueue_mbx_cmd()
3958 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_check_mac_rcode() argument
3963 if (cmd->cmd_op == QLCNIC_CMD_CONFIG_MAC_VLAN) { in qlcnic_83xx_check_mac_rcode()
3969 cmd->rsp_opcode = QLCNIC_RCODE_SUCCESS; in qlcnic_83xx_check_mac_rcode()
3978 struct qlcnic_cmd_args *cmd) in qlcnic_83xx_decode_mbx_rsp() argument
3987 qlcnic_83xx_get_mbx_data(adapter, cmd); in qlcnic_83xx_decode_mbx_rsp()
3992 cmd->rsp_opcode = QLCNIC_RCODE_SUCCESS; in qlcnic_83xx_decode_mbx_rsp()
3995 if (!qlcnic_83xx_check_mac_rcode(adapter, cmd)) in qlcnic_83xx_decode_mbx_rsp()
3999 __func__, cmd->cmd_op, cmd->type, ahw->pci_func, in qlcnic_83xx_decode_mbx_rsp()
4001 cmd->rsp_opcode = QLC_83XX_MBX_RESPONSE_FAILED; in qlcnic_83xx_decode_mbx_rsp()
4002 qlcnic_dump_mbx(adapter, cmd); in qlcnic_83xx_decode_mbx_rsp()
4031 struct qlcnic_cmd_args *cmd = NULL; in qlcnic_83xx_mailbox_worker() local
4049 cmd = list_entry(head->next, struct qlcnic_cmd_args, list); in qlcnic_83xx_mailbox_worker()
4053 mbx_ops->encode_cmd(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4058 mbx_ops->decode_resp(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4062 __func__, cmd->cmd_op, cmd->type, ahw->pci_func, in qlcnic_83xx_mailbox_worker()
4066 qlcnic_83xx_get_mbx_data(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4067 qlcnic_dump_mbx(adapter, cmd); in qlcnic_83xx_mailbox_worker()
4070 cmd->rsp_opcode = QLCNIC_RCODE_TIMEOUT; in qlcnic_83xx_mailbox_worker()
4072 mbx_ops->dequeue_cmd(adapter, cmd); in qlcnic_83xx_mailbox_worker()