Lines Matching refs:qede
281 qede_chip_name(qede_t *qede) in qede_chip_name() argument
283 switch (QEDE_CHIP_NUM(qede)) { in qede_chip_name()
314 qede_destroy_locks(qede_t *qede) in qede_destroy_locks() argument
316 qede_fastpath_t *fp = &qede->fp_array[0]; in qede_destroy_locks()
321 mutex_destroy(&qede->drv_lock); in qede_destroy_locks()
322 mutex_destroy(&qede->watch_lock); in qede_destroy_locks()
324 for (i = 0; i < qede->num_fp; i++, fp++) { in qede_destroy_locks()
331 for (j = 0; j < qede->num_tc; j++) { in qede_destroy_locks()
336 mutex_destroy(&qede->gld_lock); in qede_destroy_locks()
337 mutex_destroy(&qede->kstat_lock); in qede_destroy_locks()
341 qede_init_locks(qede_t *qede) in qede_init_locks() argument
343 qede_intr_context_t *intr_ctx = &qede->intr_ctx; in qede_init_locks()
344 qede_fastpath_t *fp = &qede->fp_array[0]; in qede_init_locks()
349 mutex_init(&qede->drv_lock, NULL, in qede_init_locks()
351 mutex_init(&qede->watch_lock, NULL, in qede_init_locks()
354 for (i = 0; i < qede->num_fp; i++, fp++) { in qede_init_locks()
364 for (tc = 0; tc < qede->num_tc; tc++) { in qede_init_locks()
371 mutex_init(&qede->gld_lock, NULL, in qede_init_locks()
373 mutex_init(&qede->kstat_lock, NULL, in qede_init_locks()
378 static void qede_free_io_structs(qede_t *qede) in qede_free_io_structs() argument
383 qede_alloc_io_structs(qede_t *qede) in qede_alloc_io_structs() argument
394 for (i = 0; i < qede->num_fp; i++) { in qede_alloc_io_structs()
395 fp = &qede->fp_array[i]; in qede_alloc_io_structs()
396 rx_ring = &qede->rx_array[i]; in qede_alloc_io_structs()
398 for (tc = 0; tc < qede->num_tc; tc++) { in qede_alloc_io_structs()
399 tx_array = qede->tx_array[tc]; in qede_alloc_io_structs()
412 qede_get_config_params(qede_t *qede) in qede_get_config_params() argument
414 struct ecore_dev *edev = &qede->edev; in qede_get_config_params()
416 qede_cfg_init(qede); in qede_get_config_params()
418 qede->num_tc = DEFAULT_TRFK_CLASS_COUNT; in qede_get_config_params()
419 qede->num_hwfns = edev->num_hwfns; in qede_get_config_params()
420 qede->rx_buf_count = qede->rx_ring_size; in qede_get_config_params()
421 qede->rx_buf_size = DEFAULT_RX_BUF_SIZE; in qede_get_config_params()
422 qede_print("!%s:%d: qede->num_fp = %d\n", __func__, qede->instance, in qede_get_config_params()
423 qede->num_fp); in qede_get_config_params()
425 qede->instance, qede->rx_ring_size); in qede_get_config_params()
427 qede->instance, qede->rx_buf_count); in qede_get_config_params()
429 qede->instance, qede->rx_buf_size); in qede_get_config_params()
431 qede->instance, qede->rx_copy_threshold); in qede_get_config_params()
433 qede->instance, qede->tx_ring_size); in qede_get_config_params()
435 qede->instance, qede->tx_bcopy_threshold); in qede_get_config_params()
437 qede->instance, qede->lso_enable); in qede_get_config_params()
439 qede->instance, qede->lro_enable); in qede_get_config_params()
441 qede->instance, qede->jumbo_enable); in qede_get_config_params()
443 qede->instance, qede->log_enable); in qede_get_config_params()
445 qede->instance, qede->checksum); in qede_get_config_params()
447 qede->instance, qede->ecore_debug_level); in qede_get_config_params()
449 qede->instance,qede->num_hwfns); in qede_get_config_params()
452 qede->tx_buf_size = BUF_2K_SIZE; in qede_get_config_params()
457 qede_config_debug(qede_t *qede) in qede_config_debug() argument
460 struct ecore_dev *edev = &qede->edev; in qede_config_debug()
464 dp_level = qede->ecore_debug_level; in qede_config_debug()
465 dp_module = qede->ecore_debug_module; in qede_config_debug()
472 qede_set_operating_params(qede_t *qede) in qede_set_operating_params() argument
475 qede_intr_context_t *intr_ctx = &qede->intr_ctx; in qede_set_operating_params()
478 status = qede_get_config_params(qede); in qede_set_operating_params()
483 qede_config_debug(qede); in qede_set_operating_params()
487 qede->num_fp + qede->num_hwfns; in qede_set_operating_params()
488 intr_ctx->intr_fp_vector_count = qede->num_fp - qede->num_hwfns; in qede_set_operating_params()
491 qede->ucst_total = QEDE_MAX_UCST_CNT; in qede_set_operating_params()
492 qede->ucst_avail = QEDE_MAX_UCST_CNT; in qede_set_operating_params()
493 bzero(&qede->ucst_mac[0], sizeof (qede_mac_addr_t) * qede->ucst_total); in qede_set_operating_params()
494 qede->params.multi_promisc_fl = B_FALSE; in qede_set_operating_params()
495 qede->params.promisc_fl = B_FALSE; in qede_set_operating_params()
496 qede->mc_cnt = 0; in qede_set_operating_params()
497 qede->rx_low_buffer_threshold = RX_LOW_BUFFER_THRESHOLD; in qede_set_operating_params()
504 qede_resume(qede_t *qede) in qede_resume() argument
506 mutex_enter(&qede->drv_lock); in qede_resume()
507 cmn_err(CE_NOTE, "%s:%d Enter\n", __func__, qede->instance); in qede_resume()
508 qede->qede_state = QEDE_STATE_ATTACHED; in qede_resume()
509 mutex_exit(&qede->drv_lock); in qede_resume()
526 qede_unconfig_pci(qede_t *qede) in qede_unconfig_pci() argument
528 if (qede->doorbell_handle != NULL) { in qede_unconfig_pci()
529 ddi_regs_map_free(&(qede->doorbell_handle)); in qede_unconfig_pci()
530 qede->doorbell_handle = NULL; in qede_unconfig_pci()
533 if (qede->regs_handle != NULL) { in qede_unconfig_pci()
534 ddi_regs_map_free(&qede->regs_handle); in qede_unconfig_pci()
535 qede->regs_handle = NULL; in qede_unconfig_pci()
537 if (qede->pci_cfg_handle != NULL) { in qede_unconfig_pci()
538 pci_config_teardown(&qede->pci_cfg_handle); in qede_unconfig_pci()
539 qede->pci_cfg_handle = NULL; in qede_unconfig_pci()
544 qede_config_pci(qede_t *qede) in qede_config_pci() argument
548 ret = pci_config_setup(qede->dip, &qede->pci_cfg_handle); in qede_config_pci()
551 __func__, qede->instance); in qede_config_pci()
556 ret = ddi_dev_regsize(qede->dip, 1, &qede->regview_size); in qede_config_pci()
559 __func__, qede->instance); in qede_config_pci()
564 ret = ddi_dev_regsize(qede->dip, 3, &qede->doorbell_size); in qede_config_pci()
567 __func__, qede->instance); in qede_config_pci()
574 qede->dip, in qede_config_pci()
589 &qede->regview, in qede_config_pci()
595 qede->regview_size, in qede_config_pci()
602 &qede->regs_handle); in qede_config_pci()
606 qede->instance, ret); in qede_config_pci()
610 qede->pci_bar0_base = (unsigned long)qede->regview; in qede_config_pci()
613 ret = ddi_regs_map_setup(qede->dip, in qede_config_pci()
615 &qede->doorbell, in qede_config_pci()
617 qede->doorbell_size, in qede_config_pci()
619 &qede->doorbell_handle); in qede_config_pci()
623 qede->instance, ret); in qede_config_pci()
627 qede->pci_bar2_base = (unsigned long)qede->doorbell; in qede_config_pci()
631 qede_unconfig_pci(qede); in qede_config_pci()
643 qede_t *qede = (qede_t *)edev; in qede_sp_handler() local
657 atomic_add_64((volatile uint64_t *)&qede->intrFired, 1); in qede_sp_handler()
658 qede->intrSbCnt[vect_info->vect_index]++; in qede_sp_handler()
689 qede_t *qede = (qede_t *)arg2; in qede_fp_handler() local
705 atomic_add_64((volatile uint64_t *)&qede->intrFired, 1); in qede_fp_handler()
706 qede->intrSbCnt[vect_info->vect_index]++; in qede_fp_handler()
708 mutex_enter(&fp->qede->drv_lock); in qede_fp_handler()
710 mutex_exit(&fp->qede->drv_lock); in qede_fp_handler()
718 mac_rx_ring(rx_ring->qede->mac_handle, in qede_fp_handler()
725 mac_rx(qede->mac_handle, NULL, mp); in qede_fp_handler()
729 qede->intrSbNoChangeCnt[vect_info->vect_index]++; in qede_fp_handler()
733 mutex_enter(&fp->qede->drv_lock); in qede_fp_handler()
744 mutex_exit(&fp->qede->drv_lock); in qede_fp_handler()
752 qede_disable_intr(qede_t *qede, uint32_t index) in qede_disable_intr() argument
755 qede_intr_context_t *intr_ctx = &qede->intr_ctx; in qede_disable_intr()
770 qede_enable_intr(qede_t *qede, int index) in qede_enable_intr() argument
774 qede_intr_context_t *intr_ctx = &qede->intr_ctx; in qede_enable_intr()
791 qede_disable_all_fastpath_intrs(qede_t *qede) in qede_disable_all_fastpath_intrs() argument
795 for (i = qede->num_hwfns; i <= qede->num_fp; i++) { in qede_disable_all_fastpath_intrs()
796 status = qede_disable_intr(qede, i); in qede_disable_all_fastpath_intrs()
805 qede_enable_all_fastpath_intrs(qede_t *qede) in qede_enable_all_fastpath_intrs() argument
809 for (i = qede->num_hwfns; i <= qede->num_fp; i++) { in qede_enable_all_fastpath_intrs()
810 status = qede_enable_intr(qede, i); in qede_enable_all_fastpath_intrs()
819 qede_disable_slowpath_intrs(qede_t *qede) in qede_disable_slowpath_intrs() argument
823 for (i = 0; i < qede->num_hwfns; i++) { in qede_disable_slowpath_intrs()
824 status = qede_disable_intr(qede, i); in qede_disable_slowpath_intrs()
833 qede_enable_slowpath_intrs(qede_t *qede) in qede_enable_slowpath_intrs() argument
837 for (i = 0; i < qede->num_hwfns; i++) { in qede_enable_slowpath_intrs()
838 status = qede_enable_intr(qede, i); in qede_enable_slowpath_intrs()
847 qede_prepare_edev(qede_t *qede) in qede_prepare_edev() argument
849 struct ecore_dev *edev = &qede->edev; in qede_prepare_edev()
856 edev->regview = (void *)qede->regview; in qede_prepare_edev()
857 edev->doorbells = (void *)qede->doorbell; in qede_prepare_edev()
860 strcpy(edev->name, qede->name); in qede_prepare_edev()
874 qede_config_edev(qede_t *qede) in qede_config_edev() argument
877 struct ecore_dev *edev = &qede->edev; in qede_config_edev()
880 for (i = 0; i < qede->num_hwfns; i++) { in qede_config_edev()
897 qede_unconfig_intrs(qede_t *qede) in qede_unconfig_intrs() argument
899 qede_intr_context_t *intr_ctx = &qede->intr_ctx; in qede_unconfig_intrs()
925 qede_config_intrs(qede_t *qede) in qede_config_intrs() argument
927 qede_intr_context_t *intr_ctx = &qede->intr_ctx; in qede_config_intrs()
929 struct ecore_dev *edev = &qede->edev; in qede_config_intrs()
942 vect_info->qede = qede; in qede_config_intrs()
949 if (i < qede->num_hwfns) { in qede_config_intrs()
952 arg1 = (caddr_t)&qede->edev.hwfns[i]; in qede_config_intrs()
961 (void *)&qede->fp_array[i - qede->num_hwfns]; in qede_config_intrs()
964 arg2 = (caddr_t)qede; in qede_config_intrs()
978 qede_unconfig_intrs(qede); in qede_config_intrs()
988 qede_free_intrs(qede_t *qede) in qede_free_intrs() argument
993 ASSERT(qede != NULL); in qede_free_intrs()
994 intr_ctx = &qede->intr_ctx; in qede_free_intrs()
1028 qede_alloc_intrs(qede_t *qede) in qede_alloc_intrs() argument
1033 qede_intr_context_t *intr_ctx = &qede->intr_ctx; in qede_alloc_intrs()
1035 dip = qede->dip; in qede_alloc_intrs()
1053 status = ddi_intr_get_nintrs(qede->dip, in qede_alloc_intrs()
1078 qede->num_fp = num_available - qede->num_hwfns; in qede_alloc_intrs()
1113 status = ddi_intr_alloc(qede->dip, in qede_alloc_intrs()
1162 qede_free_intrs(qede); in qede_alloc_intrs()
1168 qede_unconfig_fm(qede_t *qede) in qede_unconfig_fm() argument
1183 qede_config_fm(qede_t * qede) in qede_config_fm() argument
1201 ddi_fm_init(qede->dip, &qede->fm_cap, &iblk); in qede_config_fm()
1203 if (DDI_FM_EREPORT_CAP(qede->fm_cap) || in qede_config_fm()
1204 DDI_FM_ERRCB_CAP(qede->fm_cap)) { in qede_config_fm()
1205 pci_ereport_setup(qede->dip); in qede_config_fm()
1208 if (DDI_FM_ERRCB_CAP(qede->fm_cap)) { in qede_config_fm()
1209 ddi_fm_handler_register(qede->dip, in qede_config_fm()
1210 qede_fm_err_cb, (void *)qede); in qede_config_fm()
1217 qede_dma_mem_alloc(qede_t *qede, in qede_dma_mem_alloc() argument
1232 err = ddi_dma_alloc_handle(qede->dip, in qede_dma_mem_alloc()
1237 "ddi_dma_alloc_handle FAILED: %d", qede->instance, err); in qede_dma_mem_alloc()
1250 qede->instance, err, size); in qede_dma_mem_alloc()
1260 qede->instance, err, size); in qede_dma_mem_alloc()
1278 qede->instance, err); in qede_dma_mem_alloc()
1313 qede_vport_stop(qede_t *qede) in qede_vport_stop() argument
1315 struct ecore_dev *edev = &qede->edev; in qede_vport_stop()
1322 if (qede->vport_state[i] != in qede_vport_stop()
1324 qede_info(qede, "vport %d not started", i); in qede_vport_stop()
1339 qede->vport_state[i] = in qede_vport_stop()
1347 qede_get_active_rss_params(qede_t *qede, u8 hwfn_id) in qede_get_active_rss_params() argument
1361 if (qede->num_fp > 1) { in qede_get_active_rss_params()
1362 qede_info(qede, "Configuring RSS parameters"); in qede_get_active_rss_params()
1365 qede_info(qede, "RSS configuration not needed"); in qede_get_active_rss_params()
1389 fp = &qede->fp_array[i % qede->num_fp]; in qede_get_active_rss_params()
1393 bcopy(&rss_params, &qede->rss_params[hwfn_id], sizeof (rss_params)); in qede_get_active_rss_params()
1398 qede_vport_update(qede_t *qede, in qede_vport_update() argument
1401 struct ecore_dev *edev = &qede->edev; in qede_vport_update()
1435 vport_params = &qede->vport_params[i]; in qede_vport_update()
1494 if (qede->lro_enable && new_state) { in qede_vport_update()
1496 __func__, qede->instance); in qede_vport_update()
1512 tpa_params.tpa_min_size_to_start = qede->mtu/2; in qede_vport_update()
1513 tpa_params.tpa_min_size_to_cont = qede->mtu/2; in qede_vport_update()
1520 if (qede_get_active_rss_params(qede, i /* hwfn id */)) { in qede_vport_update()
1521 vport_params->rss_params = &qede->rss_params[i]; in qede_vport_update()
1545 qede_vport_start(qede_t *qede) in qede_vport_start() argument
1547 struct ecore_dev *edev = &qede->edev; in qede_vport_start()
1555 if ((qede->vport_state[i] != in qede_vport_start()
1557 (qede->vport_state[i] != in qede_vport_start()
1572 params.mtu = qede->mtu; in qede_vport_start()
1583 qede->vport_state[i] = QEDE_VPORT_STARTED; in qede_vport_start()
1604 qede_fastpath_stop_queues(qede_t *qede) in qede_fastpath_stop_queues() argument
1616 ASSERT(qede != NULL); in qede_fastpath_stop_queues()
1619 edev = &qede->edev; in qede_fastpath_stop_queues()
1621 status = qede_vport_update(qede, QEDE_VPORT_OFF); in qede_fastpath_stop_queues()
1628 for (i = 0; i < qede->num_fp; i++) { in qede_fastpath_stop_queues()
1629 fp = &qede->fp_array[i]; in qede_fastpath_stop_queues()
1632 for (j = 0; j < qede->num_tc; j++) { in qede_fastpath_stop_queues()
1669 status = qede_vport_stop(qede); in qede_fastpath_stop_queues()
1682 qede_fastpath_start_queues(qede_t *qede) in qede_fastpath_start_queues() argument
1697 ASSERT(qede != NULL); in qede_fastpath_start_queues()
1699 edev = &qede->edev; in qede_fastpath_start_queues()
1701 status = qede_vport_start(qede); in qede_fastpath_start_queues()
1708 for (i = 0; i < qede->num_fp; i++) { in qede_fastpath_start_queues()
1709 fp = &qede->fp_array[i]; in qede_fastpath_start_queues()
1724 qede->rx_buf_size, in qede_fastpath_start_queues()
1746 for (j = 0; j < qede->num_tc; j++) { in qede_fastpath_start_queues()
1790 status = qede_vport_update(qede, QEDE_VPORT_ON); in qede_fastpath_start_queues()
1839 qede_free_rx_buffers_legacy(qede_t *qede, qede_rx_buf_area_t *rx_buf_area) in qede_free_rx_buffers_legacy() argument
1899 if (atomic_cas_32(&qede->detach_unsafe, 2, 2)) { in qede_free_rx_buffers_legacy()
1900 atomic_dec_32(&qede->detach_unsafe); in qede_free_rx_buffers_legacy()
1908 qede_free_rx_buffers(qede_t *qede, qede_rx_ring_t *rx_ring) in qede_free_rx_buffers() argument
1912 qede_free_rx_buffers_legacy(qede, rx_buf_area); in qede_free_rx_buffers()
1916 qede_free_rx_ring_phys(qede_t *qede, qede_fastpath_t *fp) in qede_free_rx_ring_phys() argument
1920 ASSERT(qede != NULL); in qede_free_rx_ring_phys()
1927 qede_free_rx_buffers(qede, rx_ring); in qede_free_rx_ring_phys()
1931 ecore_chain_free(&qede->edev, &rx_ring->rx_bd_ring); in qede_free_rx_ring_phys()
1936 ecore_chain_free(&qede->edev, &rx_ring->rx_cqe_ring); in qede_free_rx_ring_phys()
1951 qede_init_bd(qede_t *qede, qede_rx_ring_t *rx_ring) in qede_init_bd() argument
1967 "rx_bd_ring", __func__, qede->instance); in qede_init_bd()
2082 qede_info(rx_ring->qede, "!%s(%d): Failed to take" in qede_replenish_rx_buffers()
2084 __func__, rx_ring->qede->instance); in qede_replenish_rx_buffers()
2093 qede_info(rx_ring->qede, "!%s(%d): bd = null", in qede_replenish_rx_buffers()
2094 __func__, rx_ring->qede->instance); in qede_replenish_rx_buffers()
2137 qede_info(rx_ring->qede, "ERROR: num_entries (%d)" in qede_put_to_passive_list()
2153 qede_t *qede = rx_ring->qede; in qede_recycle_rx_buffer() local
2191 mutex_enter(&qede->drv_lock); in qede_recycle_rx_buffer()
2198 qede_free_rx_buffers_legacy(qede, rx_buf_area); in qede_recycle_rx_buffer()
2201 mutex_exit(&qede->drv_lock); in qede_recycle_rx_buffer()
2204 qede_info(rx_ring->qede, "rx_buffer %p" in qede_recycle_rx_buffer()
2215 qede_t *qede = rx_ring->qede; in qede_recycle_copied_rx_buffer() local
2223 qede_info(qede, "!%s(%d): rx_buffer->ref_cnt = 0", in qede_recycle_copied_rx_buffer()
2224 __func__, qede->instance); in qede_recycle_copied_rx_buffer()
2252 qede_info(rx_ring->qede, "Free up rx_buffer %p, index %d" in qede_recycle_copied_rx_buffer()
2261 mutex_enter(&qede->drv_lock); in qede_recycle_copied_rx_buffer()
2262 qede_free_rx_buffers_legacy(qede, rx_buf_area); in qede_recycle_copied_rx_buffer()
2263 mutex_exit(&qede->drv_lock); in qede_recycle_copied_rx_buffer()
2267 qede_info(rx_ring->qede, "rx_buffer %p" in qede_recycle_copied_rx_buffer()
2275 qede_alloc_rx_buffers(qede_t *qede, qede_rx_ring_t *rx_ring) in qede_alloc_rx_buffers() argument
2281 int page_size = (int)ddi_ptob(qede->dip, 1); in qede_alloc_rx_buffers()
2310 ret = qede_dma_mem_alloc(qede, in qede_alloc_rx_buffers()
2344 qede_warn(qede, "desballoc() failed, index %d", in qede_alloc_rx_buffers()
2363 ret = qede_init_bd(qede, rx_ring); in qede_alloc_rx_buffers()
2372 qede_free_rx_buffers(qede, rx_ring); in qede_alloc_rx_buffers()
2377 qede_alloc_rx_ring_phys(qede_t *qede, qede_fastpath_t *fp) in qede_alloc_rx_ring_phys() argument
2383 ASSERT(qede != NULL); in qede_alloc_rx_ring_phys()
2388 atomic_inc_32(&qede->detach_unsafe); in qede_alloc_rx_ring_phys()
2394 qede_info(qede, "!%s(%d): Cannot alloc rx_buf_area", in qede_alloc_rx_ring_phys()
2395 __func__, qede->instance); in qede_alloc_rx_ring_phys()
2403 if (ecore_chain_alloc(&qede->edev, in qede_alloc_rx_ring_phys()
2407 qede->rx_ring_size, in qede_alloc_rx_ring_phys()
2417 if (ecore_chain_alloc(&qede->edev, in qede_alloc_rx_ring_phys()
2421 qede->rx_ring_size, in qede_alloc_rx_ring_phys()
2431 if (qede_alloc_rx_buffers(qede, rx_ring) != DDI_SUCCESS) { in qede_alloc_rx_ring_phys()
2433 __func__, qede->instance); in qede_alloc_rx_ring_phys()
2440 qede_free_tx_bd_ring(qede_t *qede, qede_fastpath_t *fp) in qede_free_tx_bd_ring() argument
2445 ASSERT(qede != NULL); in qede_free_tx_bd_ring()
2448 for (i = 0; i < qede->num_tc; i++) { in qede_free_tx_bd_ring()
2452 ecore_chain_free(&qede->edev, &tx_ring->tx_bd_ring); in qede_free_tx_bd_ring()
2463 qede_alloc_tx_bd_ring(qede_t *qede, qede_tx_ring_t *tx_ring) in qede_alloc_tx_bd_ring() argument
2467 ret = ecore_chain_alloc(&qede->edev, in qede_alloc_tx_bd_ring()
2477 __func__, qede->instance); in qede_alloc_tx_bd_ring()
2521 qede_alloc_tx_bcopy_buffers(qede_t *qede, qede_tx_ring_t *tx_ring) in qede_alloc_tx_bcopy_buffers() argument
2524 int page_size = (int)ddi_ptob(qede->dip, 1); in qede_alloc_tx_bcopy_buffers()
2537 if (qede->tx_buf_size > page_size) { in qede_alloc_tx_bcopy_buffers()
2538 size = qede->tx_buf_size; in qede_alloc_tx_bcopy_buffers()
2543 size = sizeof (qede_tx_bcopy_pkt_t) * qede->tx_ring_size; in qede_alloc_tx_bcopy_buffers()
2546 qede_warn(qede, "!%s(%d): Failed to allocate bcopy_list", in qede_alloc_tx_bcopy_buffers()
2547 __func__, qede->instance); in qede_alloc_tx_bcopy_buffers()
2560 for (i = 0; i < qede->tx_ring_size; i++) { in qede_alloc_tx_bcopy_buffers()
2562 ret = qede_dma_mem_alloc(qede, in qede_alloc_tx_bcopy_buffers()
2563 qede->tx_buf_size, in qede_alloc_tx_bcopy_buffers()
2591 qede_free_tx_dma_handles(qede_t *qede, qede_tx_ring_t *tx_ring) in qede_free_tx_dma_handles() argument
2603 qede_info(qede, "dmah_entry %p, handle is NULL", in qede_free_tx_dma_handles()
2619 qede_alloc_tx_dma_handles(qede_t *qede, qede_tx_ring_t *tx_ring) in qede_alloc_tx_dma_handles() argument
2626 size = sizeof (qede_dma_handle_entry_t) * qede->tx_ring_size; in qede_alloc_tx_dma_handles()
2629 qede_warn(qede, "!%s(%d): Failed to allocated dmah_list", in qede_alloc_tx_dma_handles()
2630 __func__, qede->instance); in qede_alloc_tx_dma_handles()
2647 for (i = 0; i < qede->tx_ring_size; i++) { in qede_alloc_tx_dma_handles()
2648 ret = ddi_dma_alloc_handle(qede->dip, in qede_alloc_tx_dma_handles()
2656 __func__, qede->instance, i); in qede_alloc_tx_dma_handles()
2670 qede_alloc_tx_ring_phys(qede_t *qede, qede_fastpath_t *fp) in qede_alloc_tx_ring_phys() argument
2678 ASSERT(qede != NULL); in qede_alloc_tx_ring_phys()
2681 for (i = 0; i < qede->num_tc; i++) { in qede_alloc_tx_ring_phys()
2683 tx_ring->bd_ring_size = qede->tx_ring_size; in qede_alloc_tx_ring_phys()
2688 ret = qede_alloc_tx_bd_ring(qede, tx_ring); in qede_alloc_tx_ring_phys()
2691 __func__, qede->instance, qede_get_ddi_fail(ret)); in qede_alloc_tx_ring_phys()
2698 ret = qede_alloc_tx_bcopy_buffers(qede, tx_ring); in qede_alloc_tx_ring_phys()
2701 "buffers", __func__, qede->instance); in qede_alloc_tx_ring_phys()
2710 ret = qede_alloc_tx_dma_handles(qede, tx_ring); in qede_alloc_tx_ring_phys()
2713 "handles", __func__, qede->instance); in qede_alloc_tx_ring_phys()
2720 size = sizeof (qede_tx_recycle_list_t) * qede->tx_ring_size; in qede_alloc_tx_ring_phys()
2723 qede_warn(qede, "!%s(%d): Failed to allocate" in qede_alloc_tx_ring_phys()
2724 " tx_recycle_list", __func__, qede->instance); in qede_alloc_tx_ring_phys()
2738 qede_free_sb_phys(qede_t *qede, qede_fastpath_t *fp) in qede_free_sb_phys() argument
2746 qede_alloc_sb_phys(qede_t *qede, qede_fastpath_t *fp) in qede_alloc_sb_phys() argument
2750 struct ecore_dev *edev = &qede->edev; in qede_alloc_sb_phys()
2755 ASSERT(qede != NULL); in qede_alloc_sb_phys()
2767 p_hwfn = &edev->hwfns[sb_id % qede->num_hwfns]; in qede_alloc_sb_phys()
2770 status = qede_dma_mem_alloc(qede, in qede_alloc_sb_phys()
2781 qede_info(qede, "Failed to allocate status_block dma mem"); in qede_alloc_sb_phys()
2803 qede_free_tx_ring_phys(qede_t *qede, qede_fastpath_t *fp) in qede_free_tx_ring_phys() argument
2808 for (i = 0; i < qede->num_tc; i++) { in qede_free_tx_ring_phys()
2810 qede_free_tx_dma_handles(qede, tx_ring); in qede_free_tx_ring_phys()
2812 qede_free_tx_bd_ring(qede, fp); in qede_free_tx_ring_phys()
2817 * qede->tx_ring_size); in qede_free_tx_ring_phys()
2823 qede_fastpath_free_phys_mem(qede_t *qede) in qede_fastpath_free_phys_mem() argument
2828 for (i = 0; i < qede->num_fp; i++) { in qede_fastpath_free_phys_mem()
2829 fp = &qede->fp_array[i]; in qede_fastpath_free_phys_mem()
2831 qede_free_rx_ring_phys(qede, fp); in qede_fastpath_free_phys_mem()
2832 qede_free_tx_ring_phys(qede, fp); in qede_fastpath_free_phys_mem()
2833 qede_free_sb_phys(qede, fp); in qede_fastpath_free_phys_mem()
2842 qede_save_fp_dma_handles(qede_t *qede, qede_fastpath_t *fp) in qede_save_fp_dma_handles() argument
2851 ret = qede_osal_find_dma_handle_for_block(qede, in qede_save_fp_dma_handles()
2856 "rx_bd_ring, addr %p", __func__, qede->instance, in qede_save_fp_dma_handles()
2862 ret = qede_osal_find_dma_handle_for_block(qede, in qede_save_fp_dma_handles()
2867 "rx_cqe_ring, addr %p", __func__, qede->instance, in qede_save_fp_dma_handles()
2872 ret = qede_osal_find_dma_handle_for_block(qede, in qede_save_fp_dma_handles()
2877 "rx_cqe pbl, addr %p", __func__, qede->instance, in qede_save_fp_dma_handles()
2883 for (i = 0; i < qede->num_tc; i++) { in qede_save_fp_dma_handles()
2886 ret = qede_osal_find_dma_handle_for_block(qede, in qede_save_fp_dma_handles()
2892 qede->instance, in qede_save_fp_dma_handles()
2897 ret = qede_osal_find_dma_handle_for_block(qede, in qede_save_fp_dma_handles()
2902 "tx_bd pbl, addr %p", __func__, qede->instance, in qede_save_fp_dma_handles()
2913 qede_fastpath_alloc_phys_mem(qede_t *qede) in qede_fastpath_alloc_phys_mem() argument
2918 for (i = 0; i < qede->num_fp; i++) { in qede_fastpath_alloc_phys_mem()
2919 fp = &qede->fp_array[i]; in qede_fastpath_alloc_phys_mem()
2921 status = qede_alloc_sb_phys(qede, fp); in qede_fastpath_alloc_phys_mem()
2926 status = qede_alloc_rx_ring_phys(qede, fp); in qede_fastpath_alloc_phys_mem()
2931 status = qede_alloc_tx_ring_phys(qede, fp); in qede_fastpath_alloc_phys_mem()
2935 status = qede_save_fp_dma_handles(qede, fp); in qede_fastpath_alloc_phys_mem()
2942 qede_fastpath_free_phys_mem(qede); in qede_fastpath_alloc_phys_mem()
2947 qede_fastpath_config(qede_t *qede) in qede_fastpath_config() argument
2956 ASSERT(qede != NULL); in qede_fastpath_config()
2958 num_fp = qede->num_fp; in qede_fastpath_config()
2959 num_hwfns = qede->num_hwfns; in qede_fastpath_config()
2961 vect_info = &qede->intr_ctx.intr_vect_info[num_hwfns]; in qede_fastpath_config()
2962 fp = &qede->fp_array[0]; in qede_fastpath_config()
2963 tx_ring = &qede->tx_array[0][0]; in qede_fastpath_config()
2966 fp->sb_info = &qede->sb_array[i]; in qede_fastpath_config()
2967 fp->qede = qede; in qede_fastpath_config()
2988 rx_ring = &qede->rx_array[i]; in qede_fastpath_config()
2991 rx_ring->rx_buf_count = qede->rx_buf_count; in qede_fastpath_config()
2992 rx_ring->rx_buf_size = qede->rx_buf_size; in qede_fastpath_config()
2993 rx_ring->qede = qede; in qede_fastpath_config()
2995 rx_ring->rx_copy_threshold = qede->rx_copy_threshold; in qede_fastpath_config()
2997 qede->rx_low_buffer_threshold; in qede_fastpath_config()
3001 for (j = 0; j < qede->num_tc; j++) { in qede_fastpath_config()
3002 tx_ring = &qede->tx_array[j][i]; in qede_fastpath_config()
3004 tx_ring->qede = qede; in qede_fastpath_config()
3007 tx_ring->tx_queue_index = i * qede->num_fp + in qede_fastpath_config()
3009 tx_ring->tx_buf_size = qede->tx_buf_size; in qede_fastpath_config()
3010 tx_ring->tx_ring_size = qede->tx_ring_size; in qede_fastpath_config()
3013 tx_ring->pm_handle = qede->pm_handle; in qede_fastpath_config()
3017 qede->doorbell; in qede_fastpath_config()
3019 qede->doorbell_handle; in qede_fastpath_config()
3031 qede_configure_link(qede_t *qede, bool op) in qede_configure_link() argument
3033 struct ecore_dev *edev = &qede->edev; in qede_configure_link()
3040 qede_info(qede, "Configuring link for hwfn#%d", i); in qede_configure_link()
3044 qede_info(qede, "Cannot reserver ptt from ecore"); in qede_configure_link()
3065 qede_stop(qede_t *qede) in qede_stop() argument
3069 ASSERT(mutex_owned(&qede->drv_lock)); in qede_stop()
3070 qede->qede_state = QEDE_STATE_STOPPING; in qede_stop()
3072 mac_link_update(qede->mac_handle, LINK_STATE_DOWN); in qede_stop()
3074 qede_disable_all_fastpath_intrs(qede); in qede_stop()
3075 status = qede_configure_link(qede, false /* Re-Set */); in qede_stop()
3079 __func__, qede->instance); in qede_stop()
3082 qede_clear_filters(qede); in qede_stop()
3083 status = qede_fastpath_stop_queues(qede); in qede_stop()
3089 qede); in qede_stop()
3093 qede_fastpath_free_phys_mem(qede); in qede_stop()
3095 qede->qede_state = QEDE_STATE_STOPPED; in qede_stop()
3097 cmn_err(CE_WARN, "qede_stop SUCCESS =%p\n", qede); in qede_stop()
3105 qede_start(qede_t *qede) in qede_start() argument
3109 ASSERT(mutex_owned(&qede->drv_lock)); in qede_start()
3111 qede->qede_state = QEDE_STATE_STARTING; in qede_start()
3113 mac_link_update(qede->mac_handle, LINK_STATE_DOWN); in qede_start()
3119 if (qede_fastpath_config(qede) != DDI_SUCCESS) { in qede_start()
3122 __func__, qede->instance); in qede_start()
3131 status = qede_fastpath_alloc_phys_mem(qede); in qede_start()
3134 " failed qede=%p\n", qede); in qede_start()
3138 status = qede_fastpath_start_queues(qede); in qede_start()
3141 " failed qede=%p\n", qede); in qede_start()
3145 cmn_err(CE_NOTE, "qede_start fp_start_queues qede=%p\n", qede); in qede_start()
3147 status = qede_configure_link(qede, true /* Set */); in qede_start()
3150 __func__, qede->instance); in qede_start()
3157 if (qede_set_filter_rx_mode(qede, in qede_start()
3160 __func__, qede->instance); in qede_start()
3164 status = qede_enable_all_fastpath_intrs(qede); in qede_start()
3168 __func__, qede->instance); in qede_start()
3171 qede->qede_state = QEDE_STATE_STARTED; in qede_start()
3173 __func__, qede->instance); in qede_start()
3178 (void) qede_fastpath_stop_queues(qede); in qede_start()
3180 qede_fastpath_free_phys_mem(qede); in qede_start()
3185 qede_free_attach_resources(qede_t *qede) in qede_free_attach_resources() argument
3190 edev = &qede->edev; in qede_free_attach_resources()
3192 if (qede->attach_resources & QEDE_ECORE_HW_INIT) { in qede_free_attach_resources()
3195 __func__, qede->instance); in qede_free_attach_resources()
3197 qede->attach_resources &= ~QEDE_ECORE_HW_INIT; in qede_free_attach_resources()
3200 if (qede->attach_resources & QEDE_SP_INTR_ENBL) { in qede_free_attach_resources()
3201 status = qede_disable_slowpath_intrs(qede); in qede_free_attach_resources()
3204 __func__, qede->instance); in qede_free_attach_resources()
3206 qede->attach_resources &= ~QEDE_SP_INTR_ENBL; in qede_free_attach_resources()
3208 if (qede->attach_resources & QEDE_KSTAT_INIT) { in qede_free_attach_resources()
3209 qede_kstat_fini(qede); in qede_free_attach_resources()
3210 qede->attach_resources &= ~QEDE_KSTAT_INIT; in qede_free_attach_resources()
3214 if (qede->attach_resources & QEDE_GLD_INIT) { in qede_free_attach_resources()
3215 status = mac_unregister(qede->mac_handle); in qede_free_attach_resources()
3218 __func__, qede->instance); in qede_free_attach_resources()
3220 qede->attach_resources &= ~QEDE_GLD_INIT; in qede_free_attach_resources()
3223 if (qede->attach_resources & QEDE_EDEV_CONFIG) { in qede_free_attach_resources()
3225 qede->attach_resources &= ~QEDE_EDEV_CONFIG; in qede_free_attach_resources()
3228 if (qede->attach_resources & QEDE_INTR_CONFIG) { in qede_free_attach_resources()
3229 qede_unconfig_intrs(qede); in qede_free_attach_resources()
3230 qede->attach_resources &= ~QEDE_INTR_CONFIG; in qede_free_attach_resources()
3233 if (qede->attach_resources & QEDE_INTR_ALLOC) { in qede_free_attach_resources()
3234 qede_free_intrs(qede); in qede_free_attach_resources()
3235 qede->attach_resources &= ~QEDE_INTR_ALLOC; in qede_free_attach_resources()
3238 if (qede->attach_resources & QEDE_INIT_LOCKS) { in qede_free_attach_resources()
3239 qede_destroy_locks(qede); in qede_free_attach_resources()
3240 qede->attach_resources &= ~QEDE_INIT_LOCKS; in qede_free_attach_resources()
3243 if (qede->attach_resources & QEDE_IO_STRUCT_ALLOC) { in qede_free_attach_resources()
3244 qede_free_io_structs(qede); in qede_free_attach_resources()
3245 qede->attach_resources &= ~QEDE_IO_STRUCT_ALLOC; in qede_free_attach_resources()
3248 if (qede->attach_resources & QEDE_CALLBACK) { in qede_free_attach_resources()
3251 status = ddi_cb_unregister(qede->callback_hdl); in qede_free_attach_resources()
3254 qede->attach_resources &= ~QEDE_CALLBACK; in qede_free_attach_resources()
3257 if (qede->attach_resources & QEDE_ECORE_HW_PREP) { in qede_free_attach_resources()
3259 qede->attach_resources &= ~QEDE_ECORE_HW_PREP; in qede_free_attach_resources()
3262 if (qede->attach_resources & QEDE_PCI) { in qede_free_attach_resources()
3263 qede_unconfig_pci(qede); in qede_free_attach_resources()
3264 qede->attach_resources &= ~QEDE_PCI; in qede_free_attach_resources()
3267 if (qede->attach_resources & QEDE_FM) { in qede_free_attach_resources()
3268 qede_unconfig_fm(qede); in qede_free_attach_resources()
3269 qede->attach_resources &= ~QEDE_FM; in qede_free_attach_resources()
3275 (void) qede_osal_cleanup(qede); in qede_free_attach_resources()
3277 if (qede->attach_resources & QEDE_STRUCT_ALLOC) { in qede_free_attach_resources()
3278 ddi_set_driver_private(qede->dip, NULL); in qede_free_attach_resources()
3279 qede->attach_resources &= ~QEDE_STRUCT_ALLOC; in qede_free_attach_resources()
3280 kmem_free(qede, sizeof (qede_t)); in qede_free_attach_resources()
3288 qede_suspend(qede_t *qede) in qede_suspend() argument
3291 ASSERT(mutex_owned(&qede->drv_lock)); in qede_suspend()
3299 qede_t *qede; in qede_attach() local
3319 qede = (qede_t * )ddi_get_driver_private(dip); in qede_attach()
3320 if (qede == NULL || qede->dip != dip) { in qede_attach()
3326 mutex_enter(&qede->drv_lock); in qede_attach()
3327 if (qede->qede_state != QEDE_STATE_SUSPENDED) { in qede_attach()
3328 mutex_exit(&qede->drv_lock); in qede_attach()
3332 if (qede_resume(qede) != DDI_SUCCESS) { in qede_attach()
3334 __func__, qede->instance); in qede_attach()
3335 mutex_exit(&qede->drv_lock); in qede_attach()
3339 qede->qede_state = QEDE_STATE_ATTACHED; in qede_attach()
3340 mutex_exit(&qede->drv_lock); in qede_attach()
3350 if ((qede = kmem_zalloc(sizeof (qede_t), KM_SLEEP)) == NULL) { in qede_attach()
3356 qede->attach_resources |= QEDE_STRUCT_ALLOC; in qede_attach()
3357 ddi_set_driver_private(dip, qede); in qede_attach()
3358 qede->dip = dip; in qede_attach()
3359 qede->instance = instance; in qede_attach()
3360 snprintf(qede->name, sizeof (qede->name), "qede%d", instance); in qede_attach()
3361 edev = &qede->edev; in qede_attach()
3363 if (qede_config_fm(qede) != DDI_SUCCESS) { in qede_attach()
3366 qede->attach_resources |= QEDE_FM; in qede_attach()
3371 if (qede_config_pci(qede) != DDI_SUCCESS) { in qede_attach()
3374 qede->attach_resources |= QEDE_PCI; in qede_attach()
3381 mutex_init(&qede->mem_list.mem_list_lock, NULL, in qede_attach()
3383 mutex_init(&qede->phys_mem_list.lock, NULL, in qede_attach()
3385 QEDE_INIT_LIST_HEAD(&qede->mem_list.mem_list_head); in qede_attach()
3386 QEDE_INIT_LIST_HEAD(&qede->phys_mem_list.head); in qede_attach()
3387 QEDE_INIT_LIST_HEAD(&qede->mclist.head); in qede_attach()
3394 if (qede_prepare_edev(qede) != ECORE_SUCCESS) { in qede_attach()
3399 qede->num_hwfns = edev->num_hwfns; in qede_attach()
3400 qede->num_tc = 1; in qede_attach()
3401 memcpy(qede->ether_addr, edev->hwfns->hw_info.hw_mac_addr, in qede_attach()
3403 qede_info(qede, "Interface mac_addr : " MAC_STRING, in qede_attach()
3404 MACTOSTR(qede->ether_addr)); in qede_attach()
3405 qede->attach_resources |= QEDE_ECORE_HW_PREP; in qede_attach()
3407 if (qede_set_operating_params(qede) != DDI_SUCCESS) { in qede_attach()
3410 qede->attach_resources |= QEDE_SET_PARAMS; in qede_attach()
3412 if (ddi_cb_register(qede->dip, in qede_attach()
3413 qede->callback_flags, in qede_attach()
3415 qede, in qede_attach()
3417 &qede->callback_hdl)) { in qede_attach()
3420 qede->attach_resources |= QEDE_CALLBACK; in qede_attach()
3422 qede_cfg_reset(qede); in qede_attach()
3424 if (qede_alloc_intrs(qede)) { in qede_attach()
3430 qede->attach_resources |= QEDE_INTR_ALLOC; in qede_attach()
3432 if (qede_config_intrs(qede)) { in qede_attach()
3437 qede->attach_resources |= QEDE_INTR_CONFIG; in qede_attach()
3439 if (qede_alloc_io_structs(qede) != DDI_SUCCESS) { in qede_attach()
3445 qede->attach_resources |= QEDE_IO_STRUCT_ALLOC; in qede_attach()
3448 qede_init_locks(qede); in qede_attach()
3449 qede->attach_resources |= QEDE_INIT_LOCKS; in qede_attach()
3452 if (qede_config_edev(qede)) { in qede_attach()
3457 qede->attach_resources |= QEDE_EDEV_CONFIG; in qede_attach()
3459 if (qede_kstat_init(qede) == B_FALSE) { in qede_attach()
3465 qede->attach_resources |= QEDE_KSTAT_INIT; in qede_attach()
3467 if (qede_gld_init(qede) == B_FALSE) { in qede_attach()
3473 qede->attach_resources |= QEDE_GLD_INIT; in qede_attach()
3475 if (qede_enable_slowpath_intrs(qede)) { in qede_attach()
3481 qede->attach_resources |= QEDE_SP_INTR_ENBL; in qede_attach()
3484 qede->attach_resources); in qede_attach()
3492 hw_init_params.int_mode = qede->intr_ctx.intr_mode; in qede_attach()
3507 qede->attach_resources |= QEDE_ECORE_HW_INIT; in qede_attach()
3508 qede->qede_state = QEDE_STATE_ATTACHED; in qede_attach()
3510 qede->detach_unsafe = 0; in qede_attach()
3512 snprintf(qede->version, in qede_attach()
3513 sizeof (qede->version), in qede_attach()
3519 snprintf(qede->versionFW, in qede_attach()
3520 sizeof (qede->versionFW), in qede_attach()
3527 p_hwfn = &qede->edev.hwfns[0]; in qede_attach()
3533 memset(&qede->link_input_params, 0, in qede_attach()
3535 memcpy(&qede->link_input_params.default_link_params, in qede_attach()
3540 ecore_mcp_get_mfw_ver(p_hwfn, p_ptt, &qede->mfw_ver, NULL); in qede_attach()
3544 snprintf(qede->versionMFW, in qede_attach()
3545 sizeof (qede->versionMFW), in qede_attach()
3547 (qede->mfw_ver >> 24) & 0xFF, in qede_attach()
3548 (qede->mfw_ver >> 16) & 0xFF, in qede_attach()
3549 (qede->mfw_ver >> 8) & 0xFF, in qede_attach()
3550 qede->mfw_ver & 0xFF); in qede_attach()
3552 snprintf(qede->chip_name, in qede_attach()
3553 sizeof (qede->chip_name), in qede_attach()
3557 snprintf(qede->chipID, in qede_attach()
3558 sizeof (qede->chipID), in qede_attach()
3560 qede->edev.chip_num); in qede_attach()
3562 *qede->bus_dev_func = 0; in qede_attach()
3567 rc = ddi_prop_lookup_int_array(DDI_DEV_T_ANY, qede->dip, in qede_attach()
3571 snprintf(qede->bus_dev_func, in qede_attach()
3572 sizeof (qede->bus_dev_func), in qede_attach()
3582 qede->pci_func = (uint8_t) PCI_REG_FUNC_G(props[0]); in qede_attach()
3588 rc = ddi_prop_lookup_int_array(DDI_DEV_T_ANY, qede->dip, in qede_attach()
3594 rc = ddi_prop_lookup_int_array(DDI_DEV_T_ANY, qede->dip, in qede_attach()
3602 snprintf(qede->vendor_device, in qede_attach()
3603 sizeof (qede->vendor_device), in qede_attach()
3609 snprintf(qede->intrAlloc, in qede_attach()
3610 sizeof (qede->intrAlloc), "%d %s", in qede_attach()
3611 (qede->intr_ctx.intr_type_in_use == DDI_INTR_TYPE_FIXED) in qede_attach()
3613 qede->intr_ctx.intr_vect_allocated, in qede_attach()
3614 (qede->intr_ctx.intr_type_in_use == DDI_INTR_TYPE_MSIX) in qede_attach()
3616 (qede->intr_ctx.intr_type_in_use == DDI_INTR_TYPE_MSI) in qede_attach()
3620 __func__, qede->instance, qede, qede->chip_name, in qede_attach()
3621 qede->vendor_device,qede->intrAlloc); in qede_attach()
3624 __func__, qede->instance, qede->version, in qede_attach()
3625 qede->versionFW, qede->versionMFW); in qede_attach()
3631 cmn_err(CE_WARN, "%s:%d failed %x\n", __func__, qede->instance, in qede_attach()
3632 qede->attach_resources); in qede_attach()
3633 (void)qede_free_attach_resources(qede); in qede_attach()
3641 qede_t *qede; in qede_detach() local
3645 qede = (qede_t *)ddi_get_driver_private(dip); in qede_detach()
3646 if ((qede == NULL) || (qede->dip != dip)) { in qede_detach()
3654 mutex_enter(&qede->drv_lock); in qede_detach()
3655 status = qede_suspend(qede); in qede_detach()
3657 mutex_exit(&qede->drv_lock); in qede_detach()
3661 qede->qede_state = QEDE_STATE_SUSPENDED; in qede_detach()
3662 mutex_exit(&qede->drv_lock); in qede_detach()
3666 mutex_enter(&qede->drv_lock); in qede_detach()
3667 if (qede->qede_state == QEDE_STATE_STARTED) { in qede_detach()
3668 qede->plumbed = 0; in qede_detach()
3669 status = qede_stop(qede); in qede_detach()
3671 qede->qede_state = QEDE_STATE_FAILED; in qede_detach()
3672 mutex_exit(&qede->drv_lock); in qede_detach()
3676 mutex_exit(&qede->drv_lock); in qede_detach()
3677 if (qede->detach_unsafe) { in qede_detach()
3683 while ((qede->detach_unsafe) && (count < 100)) { in qede_detach()
3687 if (qede->detach_unsafe) { in qede_detach()
3688 qede_info(qede, "!%s(%d) : Buffers still with" in qede_detach()
3690 qede->name, qede->instance); in qede_detach()
3694 qede_free_attach_resources(qede); in qede_detach()
3703 qede_t *qede = (qede_t *)ddi_get_driver_private(dip); in qede_quiesce() local
3704 struct ecore_dev *edev = &qede->edev; in qede_quiesce()
3709 mac_link_update(qede->mac_handle, LINK_STATE_DOWN); in qede_quiesce()