Lines Matching +full:cold +full:- +full:temp
1 // SPDX-License-Identifier: GPL-2.0-only
4 * Copyright (c) 2009-2013 QLogic Corporation
89 recv_ctx = adapter->recv_ctx; in qlcnic_release_rx_buffers()
90 for (ring = 0; ring < adapter->max_rds_rings; ring++) { in qlcnic_release_rx_buffers()
91 rds_ring = &recv_ctx->rds_rings[ring]; in qlcnic_release_rx_buffers()
92 for (i = 0; i < rds_ring->num_desc; ++i) { in qlcnic_release_rx_buffers()
93 rx_buf = &(rds_ring->rx_buf_arr[i]); in qlcnic_release_rx_buffers()
94 if (rx_buf->skb == NULL) in qlcnic_release_rx_buffers()
97 dma_unmap_single(&adapter->pdev->dev, rx_buf->dma, in qlcnic_release_rx_buffers()
98 rds_ring->dma_size, DMA_FROM_DEVICE); in qlcnic_release_rx_buffers()
100 dev_kfree_skb_any(rx_buf->skb); in qlcnic_release_rx_buffers()
112 recv_ctx = adapter->recv_ctx; in qlcnic_reset_rx_buffers_list()
113 for (ring = 0; ring < adapter->max_rds_rings; ring++) { in qlcnic_reset_rx_buffers_list()
114 rds_ring = &recv_ctx->rds_rings[ring]; in qlcnic_reset_rx_buffers_list()
116 INIT_LIST_HEAD(&rds_ring->free_list); in qlcnic_reset_rx_buffers_list()
118 rx_buf = rds_ring->rx_buf_arr; in qlcnic_reset_rx_buffers_list()
119 for (i = 0; i < rds_ring->num_desc; i++) { in qlcnic_reset_rx_buffers_list()
120 list_add_tail(&rx_buf->list, in qlcnic_reset_rx_buffers_list()
121 &rds_ring->free_list); in qlcnic_reset_rx_buffers_list()
134 spin_lock(&tx_ring->tx_clean_lock); in qlcnic_release_tx_buffers()
136 cmd_buf = tx_ring->cmd_buf_arr; in qlcnic_release_tx_buffers()
137 for (i = 0; i < tx_ring->num_desc; i++) { in qlcnic_release_tx_buffers()
138 buffrag = cmd_buf->frag_array; in qlcnic_release_tx_buffers()
139 if (buffrag->dma) { in qlcnic_release_tx_buffers()
140 dma_unmap_single(&adapter->pdev->dev, buffrag->dma, in qlcnic_release_tx_buffers()
141 buffrag->length, DMA_TO_DEVICE); in qlcnic_release_tx_buffers()
142 buffrag->dma = 0ULL; in qlcnic_release_tx_buffers()
144 for (j = 1; j < cmd_buf->frag_count; j++) { in qlcnic_release_tx_buffers()
146 if (buffrag->dma) { in qlcnic_release_tx_buffers()
147 dma_unmap_page(&adapter->pdev->dev, in qlcnic_release_tx_buffers()
148 buffrag->dma, buffrag->length, in qlcnic_release_tx_buffers()
150 buffrag->dma = 0ULL; in qlcnic_release_tx_buffers()
153 if (cmd_buf->skb) { in qlcnic_release_tx_buffers()
154 dev_kfree_skb_any(cmd_buf->skb); in qlcnic_release_tx_buffers()
155 cmd_buf->skb = NULL; in qlcnic_release_tx_buffers()
160 spin_unlock(&tx_ring->tx_clean_lock); in qlcnic_release_tx_buffers()
169 recv_ctx = adapter->recv_ctx; in qlcnic_free_sw_resources()
171 if (recv_ctx->rds_rings == NULL) in qlcnic_free_sw_resources()
174 for (ring = 0; ring < adapter->max_rds_rings; ring++) { in qlcnic_free_sw_resources()
175 rds_ring = &recv_ctx->rds_rings[ring]; in qlcnic_free_sw_resources()
176 vfree(rds_ring->rx_buf_arr); in qlcnic_free_sw_resources()
177 rds_ring->rx_buf_arr = NULL; in qlcnic_free_sw_resources()
179 kfree(recv_ctx->rds_rings); in qlcnic_free_sw_resources()
190 recv_ctx = adapter->recv_ctx; in qlcnic_alloc_sw_resources()
192 rds_ring = kcalloc(adapter->max_rds_rings, in qlcnic_alloc_sw_resources()
197 recv_ctx->rds_rings = rds_ring; in qlcnic_alloc_sw_resources()
199 for (ring = 0; ring < adapter->max_rds_rings; ring++) { in qlcnic_alloc_sw_resources()
200 rds_ring = &recv_ctx->rds_rings[ring]; in qlcnic_alloc_sw_resources()
203 rds_ring->num_desc = adapter->num_rxd; in qlcnic_alloc_sw_resources()
204 rds_ring->dma_size = QLCNIC_P3P_RX_BUF_MAX_LEN; in qlcnic_alloc_sw_resources()
205 rds_ring->skb_size = rds_ring->dma_size + NET_IP_ALIGN; in qlcnic_alloc_sw_resources()
209 rds_ring->num_desc = adapter->num_jumbo_rxd; in qlcnic_alloc_sw_resources()
210 rds_ring->dma_size = in qlcnic_alloc_sw_resources()
213 if (adapter->ahw->capabilities & in qlcnic_alloc_sw_resources()
215 rds_ring->dma_size += QLCNIC_LRO_BUFFER_EXTRA; in qlcnic_alloc_sw_resources()
217 rds_ring->skb_size = in qlcnic_alloc_sw_resources()
218 rds_ring->dma_size + NET_IP_ALIGN; in qlcnic_alloc_sw_resources()
221 rds_ring->rx_buf_arr = vzalloc(RCV_BUFF_RINGSIZE(rds_ring)); in qlcnic_alloc_sw_resources()
222 if (rds_ring->rx_buf_arr == NULL) in qlcnic_alloc_sw_resources()
225 INIT_LIST_HEAD(&rds_ring->free_list); in qlcnic_alloc_sw_resources()
230 rx_buf = rds_ring->rx_buf_arr; in qlcnic_alloc_sw_resources()
231 for (i = 0; i < rds_ring->num_desc; i++) { in qlcnic_alloc_sw_resources()
232 list_add_tail(&rx_buf->list, in qlcnic_alloc_sw_resources()
233 &rds_ring->free_list); in qlcnic_alloc_sw_resources()
234 rx_buf->ref_handle = i; in qlcnic_alloc_sw_resources()
237 spin_lock_init(&rds_ring->lock); in qlcnic_alloc_sw_resources()
240 for (ring = 0; ring < adapter->drv_sds_rings; ring++) { in qlcnic_alloc_sw_resources()
241 sds_ring = &recv_ctx->sds_rings[ring]; in qlcnic_alloc_sw_resources()
242 sds_ring->irq = adapter->msix_entries[ring].vector; in qlcnic_alloc_sw_resources()
243 sds_ring->adapter = adapter; in qlcnic_alloc_sw_resources()
244 sds_ring->num_desc = adapter->num_rxd; in qlcnic_alloc_sw_resources()
247 !adapter->ahw->diag_test) in qlcnic_alloc_sw_resources()
248 sds_ring->tx_ring = &adapter->tx_ring[ring]; in qlcnic_alloc_sw_resources()
250 sds_ring->tx_ring = &adapter->tx_ring[0]; in qlcnic_alloc_sw_resources()
253 INIT_LIST_HEAD(&sds_ring->free_list[i]); in qlcnic_alloc_sw_resources()
260 return -ENOMEM; in qlcnic_alloc_sw_resources()
303 dev_err(&adapter->pdev->dev, in qlcnic_wait_rom_done()
305 return -EIO; in qlcnic_wait_rom_done()
322 dev_err(&adapter->pdev->dev, "Error waiting for rom done\n"); in do_rom_fast_read()
323 return -EIO; in do_rom_fast_read()
331 if (err == -EIO) in do_rom_fast_read()
375 return -EIO; in qlcnic_rom_fast_read()
389 struct pci_dev *pdev = adapter->pdev; in qlcnic_pinit_from_rom()
418 if (err == -EIO) in qlcnic_pinit_from_rom()
446 dev_err(&pdev->dev, "ERROR Reading crb_init area: val:%x\n", n); in qlcnic_pinit_from_rom()
447 return -EIO; in qlcnic_pinit_from_rom()
453 dev_err(&pdev->dev, "QLOGIC card flash not initialized.\n"); in qlcnic_pinit_from_rom()
454 return -EIO; in qlcnic_pinit_from_rom()
459 return -ENOMEM; in qlcnic_pinit_from_rom()
465 return -EIO; in qlcnic_pinit_from_rom()
476 dev_err(&pdev->dev, "CRB init value out of range %x\n", in qlcnic_pinit_from_rom()
485 /* skipping cold reboot MAGIC */ in qlcnic_pinit_from_rom()
564 } while (--retries); in qlcnic_cmd_peg_ready()
570 dev_err(&adapter->pdev->dev, "Command Peg initialization not " in qlcnic_cmd_peg_ready()
572 return -EIO; in qlcnic_cmd_peg_ready()
589 } while (--retries); in qlcnic_receive_peg_ready()
591 dev_err(&adapter->pdev->dev, "Receive Peg initialization not complete, state: 0x%x.\n", in qlcnic_receive_peg_ready()
593 return -EIO; in qlcnic_receive_peg_ready()
621 val = QLC_DEV_GET_DRV(val, adapter->portnum); in qlcnic_setup_idc_param()
623 dev_err(&adapter->pdev->dev, in qlcnic_setup_idc_param()
625 return -EIO; in qlcnic_setup_idc_param()
627 adapter->ahw->physical_port = (val >> 2); in qlcnic_setup_idc_param()
631 adapter->dev_init_timeo = timeo; in qlcnic_setup_idc_param()
636 adapter->reset_ack_timeo = timeo; in qlcnic_setup_idc_param()
654 dev_warn(&adapter->pdev->dev, in qlcnic_get_flt_entry()
656 return -EIO; in qlcnic_get_flt_entry()
659 entry_size = flt_hdr.len - sizeof(struct qlcnic_flt_header); in qlcnic_get_flt_entry()
662 return -EIO; in qlcnic_get_flt_entry()
668 dev_warn(&adapter->pdev->dev, in qlcnic_get_flt_entry()
679 dev_warn(&adapter->pdev->dev, in qlcnic_get_flt_entry()
681 ret = -EIO; in qlcnic_get_flt_entry()
695 u32 ver = -1, min_ver; in qlcnic_check_flash_fw_ver()
698 if (adapter->ahw->revision_id == QLCNIC_P3P_C0) in qlcnic_check_flash_fw_ver()
706 /* 0-4:-signature, 4-8:-fw version */ in qlcnic_check_flash_fw_ver()
717 dev_err(&adapter->pdev->dev, in qlcnic_check_flash_fw_ver()
722 return -EINVAL; in qlcnic_check_flash_fw_ver()
735 if (err == -EIO) in qlcnic_has_mn()
748 entries = le32_to_cpu(directory->num_entries); in qlcnic_get_table_desc()
752 u32 offs = le32_to_cpu(directory->findex) + in qlcnic_get_table_desc()
753 i * le32_to_cpu(directory->entry_size); in qlcnic_get_table_desc()
768 const u8 *unirom = adapter->fw->data; in qlcnic_validate_header()
772 fw_file_size = adapter->fw->size; in qlcnic_validate_header()
775 return -EINVAL; in qlcnic_validate_header()
777 entries = le32_to_cpu(directory->num_entries); in qlcnic_validate_header()
778 entry_size = le32_to_cpu(directory->entry_size); in qlcnic_validate_header()
779 tab_size = le32_to_cpu(directory->findex) + (entries * entry_size); in qlcnic_validate_header()
782 return -EINVAL; in qlcnic_validate_header()
793 const u8 *unirom = adapter->fw->data; in qlcnic_validate_bootld()
794 __le32 temp; in qlcnic_validate_bootld() local
796 temp = *((__le32 *)&unirom[adapter->file_prd_off] + in qlcnic_validate_bootld()
798 idx = le32_to_cpu(temp); in qlcnic_validate_bootld()
802 return -EINVAL; in qlcnic_validate_bootld()
804 tab_size = le32_to_cpu(tab_desc->findex) + in qlcnic_validate_bootld()
805 le32_to_cpu(tab_desc->entry_size) * (idx + 1); in qlcnic_validate_bootld()
807 if (adapter->fw->size < tab_size) in qlcnic_validate_bootld()
808 return -EINVAL; in qlcnic_validate_bootld()
810 offs = le32_to_cpu(tab_desc->findex) + in qlcnic_validate_bootld()
811 le32_to_cpu(tab_desc->entry_size) * idx; in qlcnic_validate_bootld()
814 data_size = le32_to_cpu(descr->findex) + le32_to_cpu(descr->size); in qlcnic_validate_bootld()
816 if (adapter->fw->size < data_size) in qlcnic_validate_bootld()
817 return -EINVAL; in qlcnic_validate_bootld()
827 const u8 *unirom = adapter->fw->data; in qlcnic_validate_fw()
829 __le32 temp; in qlcnic_validate_fw() local
831 temp = *((__le32 *)&unirom[adapter->file_prd_off] + in qlcnic_validate_fw()
833 idx = le32_to_cpu(temp); in qlcnic_validate_fw()
837 return -EINVAL; in qlcnic_validate_fw()
839 tab_size = le32_to_cpu(tab_desc->findex) + in qlcnic_validate_fw()
840 le32_to_cpu(tab_desc->entry_size) * (idx + 1); in qlcnic_validate_fw()
842 if (adapter->fw->size < tab_size) in qlcnic_validate_fw()
843 return -EINVAL; in qlcnic_validate_fw()
845 offs = le32_to_cpu(tab_desc->findex) + in qlcnic_validate_fw()
846 le32_to_cpu(tab_desc->entry_size) * idx; in qlcnic_validate_fw()
848 data_size = le32_to_cpu(descr->findex) + le32_to_cpu(descr->size); in qlcnic_validate_fw()
850 if (adapter->fw->size < data_size) in qlcnic_validate_fw()
851 return -EINVAL; in qlcnic_validate_fw()
860 const u8 *unirom = adapter->fw->data; in qlcnic_validate_product_offs()
863 __le32 temp; in qlcnic_validate_product_offs() local
868 return -EINVAL; in qlcnic_validate_product_offs()
870 entries = le32_to_cpu(ptab_descr->num_entries); in qlcnic_validate_product_offs()
871 entry_size = le32_to_cpu(ptab_descr->entry_size); in qlcnic_validate_product_offs()
872 tab_size = le32_to_cpu(ptab_descr->findex) + (entries * entry_size); in qlcnic_validate_product_offs()
874 if (adapter->fw->size < tab_size) in qlcnic_validate_product_offs()
875 return -EINVAL; in qlcnic_validate_product_offs()
881 u8 chiprev = adapter->ahw->revision_id; in qlcnic_validate_product_offs()
884 offs = le32_to_cpu(ptab_descr->findex) + in qlcnic_validate_product_offs()
885 i * le32_to_cpu(ptab_descr->entry_size); in qlcnic_validate_product_offs()
886 temp = *((__le32 *)&unirom[offs] + QLCNIC_UNI_FLAGS_OFF); in qlcnic_validate_product_offs()
887 flags = le32_to_cpu(temp); in qlcnic_validate_product_offs()
888 temp = *((__le32 *)&unirom[offs] + QLCNIC_UNI_CHIP_REV_OFF); in qlcnic_validate_product_offs()
889 file_chiprev = le32_to_cpu(temp); in qlcnic_validate_product_offs()
895 adapter->file_prd_off = offs; in qlcnic_validate_product_offs()
903 return -EINVAL; in qlcnic_validate_product_offs()
910 dev_err(&adapter->pdev->dev, in qlcnic_validate_unified_romimage()
912 return -EINVAL; in qlcnic_validate_unified_romimage()
916 dev_err(&adapter->pdev->dev, in qlcnic_validate_unified_romimage()
918 return -EINVAL; in qlcnic_validate_unified_romimage()
922 dev_err(&adapter->pdev->dev, in qlcnic_validate_unified_romimage()
924 return -EINVAL; in qlcnic_validate_unified_romimage()
928 dev_err(&adapter->pdev->dev, in qlcnic_validate_unified_romimage()
930 return -EINVAL; in qlcnic_validate_unified_romimage()
940 const u8 *unirom = adapter->fw->data; in qlcnic_get_data_desc()
943 __le32 temp; in qlcnic_get_data_desc() local
945 temp = *((__le32 *)&unirom[adapter->file_prd_off] + idx_offset); in qlcnic_get_data_desc()
946 idx = le32_to_cpu(temp); in qlcnic_get_data_desc()
953 offs = le32_to_cpu(tab_desc->findex) + in qlcnic_get_data_desc()
954 le32_to_cpu(tab_desc->entry_size) * idx; in qlcnic_get_data_desc()
968 if (adapter->ahw->fw_type == QLCNIC_UNIFIED_ROMIMAGE) in qlcnic_get_bootld_offs()
969 offs = le32_to_cpu(data_desc->findex); in qlcnic_get_bootld_offs()
971 return (u8 *)&adapter->fw->data[offs]; in qlcnic_get_bootld_offs()
982 if (adapter->ahw->fw_type == QLCNIC_UNIFIED_ROMIMAGE) in qlcnic_get_fw_offs()
983 offs = le32_to_cpu(data_desc->findex); in qlcnic_get_fw_offs()
985 return (u8 *)&adapter->fw->data[offs]; in qlcnic_get_fw_offs()
991 const u8 *unirom = adapter->fw->data; in qlcnic_get_fw_size()
996 if (adapter->ahw->fw_type == QLCNIC_UNIFIED_ROMIMAGE) in qlcnic_get_fw_size()
997 return le32_to_cpu(data_desc->size); in qlcnic_get_fw_size()
1005 const struct firmware *fw = adapter->fw; in qlcnic_get_fw_version()
1011 if (adapter->ahw->fw_type != QLCNIC_UNIFIED_ROMIMAGE) { in qlcnic_get_fw_version()
1012 version_offset = *(__le32 *)&fw->data[QLCNIC_FW_VERSION_OFFSET]; in qlcnic_get_fw_version()
1018 ver_str = fw->data + le32_to_cpu(fw_data_desc->findex) + in qlcnic_get_fw_version()
1019 le32_to_cpu(fw_data_desc->size) - 17; in qlcnic_get_fw_version()
1037 const struct firmware *fw = adapter->fw; in qlcnic_get_bios_version()
1038 u32 bios_ver, prd_off = adapter->file_prd_off; in qlcnic_get_bios_version()
1040 __le32 temp; in qlcnic_get_bios_version() local
1042 if (adapter->ahw->fw_type != QLCNIC_UNIFIED_ROMIMAGE) { in qlcnic_get_bios_version()
1043 version_offset = (u8 *)&fw->data[QLCNIC_BIOS_VERSION_OFFSET]; in qlcnic_get_bios_version()
1047 temp = *((__le32 *)(&fw->data[prd_off]) + QLCNIC_UNI_BIOS_VERSION_OFF); in qlcnic_get_bios_version()
1048 bios_ver = le32_to_cpu(temp); in qlcnic_get_bios_version()
1056 dev_info(&adapter->pdev->dev, "Resetting rom_lock\n"); in qlcnic_rom_lock_recovery()
1064 u32 heartbeat, ret = -EIO; in qlcnic_check_fw_hearbeat()
1067 adapter->heartbeat = QLC_SHARED_REG_RD32(adapter, in qlcnic_check_fw_hearbeat()
1074 if (heartbeat != adapter->heartbeat) { in qlcnic_check_fw_hearbeat()
1078 } while (--retries); in qlcnic_check_fw_hearbeat()
1086 if ((adapter->flags & QLCNIC_FW_HANG) || in qlcnic_need_fw_reset()
1092 if (adapter->need_fw_reset) in qlcnic_need_fw_reset()
1095 if (adapter->fw) in qlcnic_need_fw_reset()
1111 const struct firmware *fw = adapter->fw; in qlcnic_load_firmware()
1112 struct pci_dev *pdev = adapter->pdev; in qlcnic_load_firmware()
1114 dev_info(&pdev->dev, "loading firmware from %s\n", in qlcnic_load_firmware()
1115 fw_name[adapter->ahw->fw_type]); in qlcnic_load_firmware()
1120 size = (QLCNIC_IMAGE_START - QLCNIC_BOOTLD_START) / 8; in qlcnic_load_firmware()
1129 return -EIO; in qlcnic_load_firmware()
1144 return -EIO; in qlcnic_load_firmware()
1155 return -EIO; in qlcnic_load_firmware()
1170 size = (QLCNIC_IMAGE_START - QLCNIC_BOOTLD_START) / 8; in qlcnic_load_firmware()
1172 dev_info(&pdev->dev, in qlcnic_load_firmware()
1179 return -EIO; in qlcnic_load_firmware()
1182 return -EIO; in qlcnic_load_firmware()
1188 return -EIO; in qlcnic_load_firmware()
1205 struct pci_dev *pdev = adapter->pdev; in qlcnic_validate_firmware()
1206 const struct firmware *fw = adapter->fw; in qlcnic_validate_firmware()
1207 u8 fw_type = adapter->ahw->fw_type; in qlcnic_validate_firmware()
1211 return -EINVAL; in qlcnic_validate_firmware()
1215 val = le32_to_cpu(*(__le32 *)&fw->data[QLCNIC_FW_MAGIC_OFFSET]); in qlcnic_validate_firmware()
1217 return -EINVAL; in qlcnic_validate_firmware()
1222 if (fw->size < min_size) in qlcnic_validate_firmware()
1223 return -EINVAL; in qlcnic_validate_firmware()
1229 dev_err(&pdev->dev, in qlcnic_validate_firmware()
1232 return -EINVAL; in qlcnic_validate_firmware()
1238 dev_err(&pdev->dev, "%s: firmware bios is incompatible\n", in qlcnic_validate_firmware()
1240 return -EINVAL; in qlcnic_validate_firmware()
1252 switch (adapter->ahw->fw_type) { in qlcnic_get_next_fwtype()
1263 adapter->ahw->fw_type = fw_type; in qlcnic_get_next_fwtype()
1270 struct pci_dev *pdev = adapter->pdev; in qlcnic_request_firmware()
1273 adapter->ahw->fw_type = QLCNIC_UNKNOWN_ROMIMAGE; in qlcnic_request_firmware()
1278 if (adapter->ahw->fw_type == QLCNIC_FLASH_ROMIMAGE) { in qlcnic_request_firmware()
1279 adapter->fw = NULL; in qlcnic_request_firmware()
1281 rc = request_firmware(&adapter->fw, in qlcnic_request_firmware()
1282 fw_name[adapter->ahw->fw_type], in qlcnic_request_firmware()
1283 &pdev->dev); in qlcnic_request_firmware()
1289 release_firmware(adapter->fw); in qlcnic_request_firmware()
1300 release_firmware(adapter->fw); in qlcnic_release_firmware()
1301 adapter->fw = NULL; in qlcnic_release_firmware()