Lines Matching refs:apc
67 static int mana_up(struct mana_port_context *apc);
68 static int mana_down(struct mana_port_context *apc);
95 struct mana_port_context *apc = if_getsoftc(ifp); in mana_ifmedia_status() local
97 if (!apc) { in mana_ifmedia_status()
102 MANA_APC_LOCK_LOCK(apc); in mana_ifmedia_status()
107 if (!apc->port_is_up) { in mana_ifmedia_status()
108 MANA_APC_LOCK_UNLOCK(apc); in mana_ifmedia_status()
109 mana_dbg(NULL, "Port %u link is down\n", apc->port_idx); in mana_ifmedia_status()
116 MANA_APC_LOCK_UNLOCK(apc); in mana_ifmedia_status()
122 struct mana_port_context *apc = if_getsoftc(ifp); in mana_get_counter() local
123 struct mana_port_stats *stats = &apc->port_stats; in mana_get_counter()
150 mana_restart(struct mana_port_context *apc) in mana_restart() argument
154 MANA_APC_LOCK_LOCK(apc); in mana_restart()
155 if (apc->port_is_up) in mana_restart()
156 mana_down(apc); in mana_restart()
158 rc = mana_up(apc); in mana_restart()
159 MANA_APC_LOCK_UNLOCK(apc); in mana_restart()
167 struct mana_port_context *apc = if_getsoftc(ifp); in mana_ioctl() local
187 MANA_APC_LOCK_LOCK(apc); in mana_ioctl()
188 if (apc->port_is_up) in mana_ioctl()
189 mana_down(apc); in mana_ioctl()
191 apc->frame_size = new_mtu + 18; in mana_ioctl()
195 rc = mana_up(apc); in mana_ioctl()
196 MANA_APC_LOCK_UNLOCK(apc); in mana_ioctl()
202 MANA_APC_LOCK_LOCK(apc); in mana_ioctl()
203 if (!apc->port_is_up) in mana_ioctl()
204 rc = mana_up(apc); in mana_ioctl()
205 MANA_APC_LOCK_UNLOCK(apc); in mana_ioctl()
209 MANA_APC_LOCK_LOCK(apc); in mana_ioctl()
210 if (apc->port_is_up) in mana_ioctl()
211 mana_down(apc); in mana_ioctl()
212 MANA_APC_LOCK_UNLOCK(apc); in mana_ioctl()
218 MANA_APC_LOCK_LOCK(apc); in mana_ioctl()
267 MANA_APC_LOCK_UNLOCK(apc); in mana_ioctl()
279 MANA_APC_LOCK_UNLOCK(apc); in mana_ioctl()
288 MANA_APC_LOCK_UNLOCK(apc); in mana_ioctl()
296 rc = ifmedia_ioctl(ifp, ifr, &apc->media, command); in mana_ioctl()
303 memcpy(ifrk->ifrk_key, apc->hashkey, MANA_HASH_KEY_SIZE); in mana_ioctl()
349 mana_tx_map_mbuf(struct mana_port_context *apc, in mana_tx_map_mbuf() argument
354 struct gdma_dev *gd = apc->ac->gdma_dev; in mana_tx_map_mbuf()
359 err = bus_dmamap_load_mbuf_sg(apc->tx_buf_tag, tx_info->dma_map, in mana_tx_map_mbuf()
376 err = bus_dmamap_load_mbuf_sg(apc->tx_buf_tag, in mana_tx_map_mbuf()
389 bus_dmamap_sync(apc->tx_buf_tag, tx_info->dma_map, in mana_tx_map_mbuf()
397 mana_tx_unmap_mbuf(struct mana_port_context *apc, in mana_tx_unmap_mbuf() argument
400 bus_dmamap_sync(apc->tx_buf_tag, tx_info->dma_map, in mana_tx_unmap_mbuf()
402 bus_dmamap_unload(apc->tx_buf_tag, tx_info->dma_map); in mana_tx_unmap_mbuf()
410 mana_load_rx_mbuf(struct mana_port_context *apc, struct mana_rxq *rxq, in mana_load_rx_mbuf() argument
440 err = bus_dmamap_load_mbuf_sg(apc->rx_buf_tag, rx_oob->dma_map, in mana_load_rx_mbuf()
450 bus_dmamap_sync(apc->rx_buf_tag, rx_oob->dma_map, in mana_load_rx_mbuf()
457 rx_oob->sgl[0].mem_key = apc->ac->gdma_dev->gpa_mkey; in mana_load_rx_mbuf()
467 mana_unload_rx_mbuf(struct mana_port_context *apc, struct mana_rxq *rxq, in mana_unload_rx_mbuf() argument
470 bus_dmamap_sync(apc->rx_buf_tag, rx_oob->dma_map, in mana_unload_rx_mbuf()
472 bus_dmamap_unload(apc->rx_buf_tag, rx_oob->dma_map); in mana_unload_rx_mbuf()
494 struct mana_port_context *apc = if_getsoftc(ndev); in mana_xmit() local
495 struct mana_port_stats *port_stats = &apc->port_stats; in mana_xmit()
496 struct gdma_dev *gd = apc->ac->gdma_dev; in mana_xmit()
507 cq = &apc->tx_qp[txq->idx].tx_cq; in mana_xmit()
515 if (!apc->port_is_up || in mana_xmit()
523 if_setdrvflagbits(apc->ndev, IFF_DRV_OACTIVE, 0); in mana_xmit()
532 % apc->num_queues; in mana_xmit()
547 err = mana_tx_map_mbuf(apc, tx_info, &mbuf, &pkg, tx_stats); in mana_xmit()
631 mana_tx_unmap_mbuf(apc, tx_info); in mana_xmit()
670 struct mana_port_context *apc = if_getsoftc(ndev); in mana_xmit_taskfunc() local
672 while (!drbr_empty(ndev, txq->txq_br) && apc->port_is_up && in mana_xmit_taskfunc()
804 struct mana_port_context *apc = if_getsoftc(ifp); in mana_start_xmit() local
810 if (unlikely((!apc->port_is_up) || in mana_start_xmit()
818 counter_u64_add_protected(apc->port_stats.tx_drops, 1); in mana_start_xmit()
826 counter_u64_add_protected(apc->port_stats.tx_drops, 1); in mana_start_xmit()
834 txq_id = apc->indir_table[(hash) & MANA_INDIRECT_TABLE_MASK] % in mana_start_xmit()
835 apc->num_queues; in mana_start_xmit()
837 txq_id = m->m_pkthdr.flowid % apc->num_queues; in mana_start_xmit()
840 if (apc->enable_tx_altq) in mana_start_xmit()
841 txq_id = apc->tx_qp[txq_id].txq.alt_txq_idx; in mana_start_xmit()
843 txq = &apc->tx_qp[txq_id].txq; in mana_start_xmit()
865 mana_cleanup_port_context(struct mana_port_context *apc) in mana_cleanup_port_context() argument
867 bus_dma_tag_destroy(apc->tx_buf_tag); in mana_cleanup_port_context()
868 bus_dma_tag_destroy(apc->rx_buf_tag); in mana_cleanup_port_context()
869 apc->rx_buf_tag = NULL; in mana_cleanup_port_context()
871 free(apc->rxqs, M_DEVBUF); in mana_cleanup_port_context()
872 apc->rxqs = NULL; in mana_cleanup_port_context()
874 mana_free_counters((counter_u64_t *)&apc->port_stats, in mana_cleanup_port_context()
879 mana_init_port_context(struct mana_port_context *apc) in mana_init_port_context() argument
881 device_t dev = apc->ac->gdma_dev->gdma_context->dev; in mana_init_port_context()
898 &apc->tx_buf_tag); in mana_init_port_context()
915 &apc->rx_buf_tag); in mana_init_port_context()
921 apc->rxqs = mallocarray(apc->num_queues, sizeof(struct mana_rxq *), in mana_init_port_context()
1022 mana_query_vport_cfg(struct mana_port_context *apc, uint32_t vport_index, in mana_query_vport_cfg() argument
1034 err = mana_send_request(apc->ac, &req, sizeof(req), &resp, in mana_query_vport_cfg()
1051 apc->port_handle = resp.vport; in mana_query_vport_cfg()
1052 memcpy(apc->mac_addr, resp.mac_addr, ETHER_ADDR_LEN); in mana_query_vport_cfg()
1058 mana_uncfg_vport(struct mana_port_context *apc) in mana_uncfg_vport() argument
1060 apc->vport_use_count--; in mana_uncfg_vport()
1061 if (apc->vport_use_count < 0) { in mana_uncfg_vport()
1064 apc->vport_use_count); in mana_uncfg_vport()
1069 mana_cfg_vport(struct mana_port_context *apc, uint32_t protection_dom_id, in mana_cfg_vport() argument
1094 if (apc->vport_use_count > 0) { in mana_cfg_vport()
1097 apc->vport_use_count++; in mana_cfg_vport()
1101 req.vport = apc->port_handle; in mana_cfg_vport()
1105 err = mana_send_request(apc->ac, &req, sizeof(req), &resp, in mana_cfg_vport()
1108 if_printf(apc->ndev, "Failed to configure vPort: %d\n", err); in mana_cfg_vport()
1115 if_printf(apc->ndev, "Failed to configure vPort: %d, 0x%x\n", in mana_cfg_vport()
1123 apc->tx_shortform_allowed = resp.short_form_allowed; in mana_cfg_vport()
1124 apc->tx_vp_offset = resp.tx_vport_offset; in mana_cfg_vport()
1126 if_printf(apc->ndev, "Configured vPort %ju PD %u DB %u\n", in mana_cfg_vport()
1127 apc->port_handle, protection_dom_id, doorbell_pg_id); in mana_cfg_vport()
1131 mana_uncfg_vport(apc); in mana_cfg_vport()
1137 mana_cfg_vport_steering(struct mana_port_context *apc, in mana_cfg_vport_steering() argument
1145 if_t ndev = apc->ndev; in mana_cfg_vport_steering()
1156 req->vport = apc->port_handle; in mana_cfg_vport_steering()
1160 req->rss_enable = apc->rss_state; in mana_cfg_vport_steering()
1164 req->default_rxobj = apc->default_rxobj; in mana_cfg_vport_steering()
1167 memcpy(&req->hashkey, apc->hashkey, MANA_HASH_KEY_SIZE); in mana_cfg_vport_steering()
1171 memcpy(req_indir_tab, apc->rxobj_table, in mana_cfg_vport_steering()
1175 err = mana_send_request(apc->ac, req, req_buf_size, &resp, in mana_cfg_vport_steering()
1196 apc->port_handle, num_entries); in mana_cfg_vport_steering()
1204 mana_create_wq_obj(struct mana_port_context *apc, in mana_create_wq_obj() argument
1212 if_t ndev = apc->ndev; in mana_create_wq_obj()
1226 err = mana_send_request(apc->ac, &req, sizeof(req), &resp, in mana_create_wq_obj()
1259 mana_destroy_wq_obj(struct mana_port_context *apc, uint32_t wq_type, in mana_destroy_wq_obj() argument
1264 if_t ndev = apc->ndev; in mana_destroy_wq_obj()
1272 err = mana_send_request(apc->ac, &req, sizeof(req), &resp, in mana_destroy_wq_obj()
1340 mana_fence_rq(struct mana_port_context *apc, struct mana_rxq *rxq) in mana_fence_rq() argument
1352 err = mana_send_request(apc->ac, &req, sizeof(req), &resp, in mana_fence_rq()
1355 if_printf(apc->ndev, "Failed to fence RQ %u: %d\n", in mana_fence_rq()
1362 if_printf(apc->ndev, "Failed to fence RQ %u: %d, 0x%x\n", in mana_fence_rq()
1371 if_printf(apc->ndev, "Failed to fence RQ %u: timed out\n", in mana_fence_rq()
1380 mana_fence_rqs(struct mana_port_context *apc) in mana_fence_rqs() argument
1386 for (rxq_idx = 0; rxq_idx < apc->num_queues; rxq_idx++) { in mana_fence_rqs()
1387 rxq = apc->rxqs[rxq_idx]; in mana_fence_rqs()
1388 err = mana_fence_rq(apc, rxq); in mana_fence_rqs()
1425 struct mana_port_context *apc; in mana_poll_tx_cq() local
1438 apc = if_getsoftc(ndev); in mana_poll_tx_cq()
1520 mana_tx_unmap_mbuf(apc, tx_info); in mana_poll_tx_cq()
1553 if (txq_full && apc->port_is_up && avail_space >= MAX_TX_WQE_SIZE) { in mana_poll_tx_cq()
1559 apc->port_is_up && avail_space >= MAX_TX_WQE_SIZE) { in mana_poll_tx_cq()
1561 if_setdrvflagbits(apc->ndev, IFF_DRV_RUNNING, in mana_poll_tx_cq()
1623 struct mana_port_context *apc; in mana_rx_mbuf() local
1627 apc = if_getsoftc(ndev); in mana_rx_mbuf()
1713 counter_u64_add_protected(apc->port_stats.rx_packets, 1); in mana_rx_mbuf()
1715 counter_u64_add_protected(apc->port_stats.rx_bytes, pkt_len); in mana_rx_mbuf()
1726 struct mana_port_context *apc; in mana_process_rx_cqe() local
1736 apc = if_getsoftc(ndev); in mana_process_rx_cqe()
1737 counter_u64_add(apc->port_stats.rx_drops, 1); in mana_process_rx_cqe()
1776 apc = if_getsoftc(ndev); in mana_process_rx_cqe()
1781 mana_unload_rx_mbuf(apc, rxq, rxbuf_oob, false); in mana_process_rx_cqe()
1784 err = mana_load_rx_mbuf(apc, rxq, rxbuf_oob, true); in mana_process_rx_cqe()
1796 mana_load_rx_mbuf(apc, rxq, rxbuf_oob, false); in mana_process_rx_cqe()
1913 mana_deinit_cq(struct mana_port_context *apc, struct mana_cq *cq) in mana_deinit_cq() argument
1915 struct gdma_dev *gd = apc->ac->gdma_dev; in mana_deinit_cq()
1935 mana_deinit_txq(struct mana_port_context *apc, struct mana_txq *txq) in mana_deinit_txq() argument
1937 struct gdma_dev *gd = apc->ac->gdma_dev; in mana_deinit_txq()
1961 drbr_flush(apc->ndev, txq->txq_br); in mana_deinit_txq()
1982 mana_tx_unmap_mbuf(apc, txbuf_info); in mana_deinit_txq()
1998 mana_destroy_txq(struct mana_port_context *apc) in mana_destroy_txq() argument
2002 if (!apc->tx_qp) in mana_destroy_txq()
2005 for (i = 0; i < apc->num_queues; i++) { in mana_destroy_txq()
2006 mana_destroy_wq_obj(apc, GDMA_SQ, apc->tx_qp[i].tx_object); in mana_destroy_txq()
2008 mana_deinit_cq(apc, &apc->tx_qp[i].tx_cq); in mana_destroy_txq()
2010 mana_deinit_txq(apc, &apc->tx_qp[i].txq); in mana_destroy_txq()
2013 free(apc->tx_qp, M_DEVBUF); in mana_destroy_txq()
2014 apc->tx_qp = NULL; in mana_destroy_txq()
2018 mana_create_txq(struct mana_port_context *apc, if_t net) in mana_create_txq() argument
2020 struct mana_context *ac = apc->ac; in mana_create_txq()
2033 apc->tx_qp = mallocarray(apc->num_queues, sizeof(struct mana_tx_qp), in mana_create_txq()
2050 for (i = 0; i < apc->num_queues; i++) { in mana_create_txq()
2051 apc->tx_qp[i].tx_object = INVALID_MANA_HANDLE; in mana_create_txq()
2054 txq = &apc->tx_qp[i].txq; in mana_create_txq()
2057 txq->vp_offset = apc->tx_vp_offset; in mana_create_txq()
2070 cq = &apc->tx_qp[i].tx_cq; in mana_create_txq()
2097 err = mana_create_wq_obj(apc, apc->port_handle, GDMA_SQ, in mana_create_txq()
2098 &wq_spec, &cq_spec, &apc->tx_qp[i].tx_object); in mana_create_txq()
2150 "mana txq p%u-tx%d", apc->port_idx, i); in mana_create_txq()
2164 if (apc->last_tx_cq_bind_cpu < 0) in mana_create_txq()
2165 apc->last_tx_cq_bind_cpu = CPU_FIRST(); in mana_create_txq()
2166 cq->cpu = apc->last_tx_cq_bind_cpu; in mana_create_txq()
2167 apc->last_tx_cq_bind_cpu = CPU_NEXT(apc->last_tx_cq_bind_cpu); in mana_create_txq()
2169 if (apc->bind_cleanup_thread_cpu) { in mana_create_txq()
2175 apc->port_idx, txq->idx, cq->cpu); in mana_create_txq()
2179 apc->port_idx, txq->idx); in mana_create_txq()
2187 mana_destroy_txq(apc); in mana_create_txq()
2192 mana_destroy_rxq(struct mana_port_context *apc, struct mana_rxq *rxq, in mana_destroy_rxq() argument
2195 struct gdma_context *gc = apc->ac->gdma_dev->gdma_context; in mana_destroy_rxq()
2209 mana_destroy_wq_obj(apc, GDMA_RQ, rxq->rxobj); in mana_destroy_rxq()
2211 mana_deinit_cq(apc, &rxq->rx_cq); in mana_destroy_rxq()
2223 mana_unload_rx_mbuf(apc, rxq, rx_oob, true); in mana_destroy_rxq()
2225 bus_dmamap_destroy(apc->rx_buf_tag, rx_oob->dma_map); in mana_destroy_rxq()
2238 mana_alloc_rx_wqe(struct mana_port_context *apc, in mana_alloc_rx_wqe() argument
2257 err = bus_dmamap_create(apc->rx_buf_tag, 0, in mana_alloc_rx_wqe()
2266 err = mana_load_rx_mbuf(apc, rxq, rx_oob, true); in mana_alloc_rx_wqe()
2271 bus_dmamap_destroy(apc->rx_buf_tag, rx_oob->dma_map); in mana_alloc_rx_wqe()
2310 mana_create_rxq(struct mana_port_context *apc, uint32_t rxq_idx, in mana_create_rxq() argument
2313 struct gdma_dev *gd = apc->ac->gdma_dev; in mana_create_rxq()
2335 rxq->datasize = ALIGN(apc->frame_size, MCLBYTES); in mana_create_rxq()
2344 err = mana_alloc_rx_wqe(apc, rxq, &rq_size, &cq_size); in mana_create_rxq()
2400 err = mana_create_wq_obj(apc, apc->port_handle, GDMA_RQ, in mana_create_rxq()
2434 if (apc->last_rx_cq_bind_cpu < 0) in mana_create_rxq()
2435 apc->last_rx_cq_bind_cpu = CPU_FIRST(); in mana_create_rxq()
2436 cq->cpu = apc->last_rx_cq_bind_cpu; in mana_create_rxq()
2437 apc->last_rx_cq_bind_cpu = CPU_NEXT(apc->last_rx_cq_bind_cpu); in mana_create_rxq()
2439 if (apc->bind_cleanup_thread_cpu) { in mana_create_rxq()
2445 apc->port_idx, rxq->rxq_idx, cq->cpu); in mana_create_rxq()
2449 apc->port_idx, rxq->rxq_idx); in mana_create_rxq()
2459 mana_destroy_rxq(apc, rxq, false); in mana_create_rxq()
2462 mana_deinit_cq(apc, cq); in mana_create_rxq()
2468 mana_add_rx_queues(struct mana_port_context *apc, if_t ndev) in mana_add_rx_queues() argument
2470 struct mana_context *ac = apc->ac; in mana_add_rx_queues()
2475 for (i = 0; i < apc->num_queues; i++) { in mana_add_rx_queues()
2476 rxq = mana_create_rxq(apc, i, &ac->eqs[i], ndev); in mana_add_rx_queues()
2482 apc->rxqs[i] = rxq; in mana_add_rx_queues()
2485 apc->default_rxobj = apc->rxqs[0]->rxobj; in mana_add_rx_queues()
2491 mana_destroy_vport(struct mana_port_context *apc) in mana_destroy_vport() argument
2496 for (rxq_idx = 0; rxq_idx < apc->num_queues; rxq_idx++) { in mana_destroy_vport()
2497 rxq = apc->rxqs[rxq_idx]; in mana_destroy_vport()
2501 mana_destroy_rxq(apc, rxq, true); in mana_destroy_vport()
2502 apc->rxqs[rxq_idx] = NULL; in mana_destroy_vport()
2505 mana_destroy_txq(apc); in mana_destroy_vport()
2507 mana_uncfg_vport(apc); in mana_destroy_vport()
2511 mana_create_vport(struct mana_port_context *apc, if_t net) in mana_create_vport() argument
2513 struct gdma_dev *gd = apc->ac->gdma_dev; in mana_create_vport()
2516 apc->default_rxobj = INVALID_MANA_HANDLE; in mana_create_vport()
2518 err = mana_cfg_vport(apc, gd->pdid, gd->doorbell); in mana_create_vport()
2522 return mana_create_txq(apc, net); in mana_create_vport()
2526 static void mana_rss_table_init(struct mana_port_context *apc) in mana_rss_table_init() argument
2531 apc->indir_table[i] = i % apc->num_queues; in mana_rss_table_init()
2534 int mana_config_rss(struct mana_port_context *apc, enum TRI_STATE rx, in mana_config_rss() argument
2543 queue_idx = apc->indir_table[i]; in mana_config_rss()
2544 apc->rxobj_table[i] = apc->rxqs[queue_idx]->rxobj; in mana_config_rss()
2548 err = mana_cfg_vport_steering(apc, rx, true, update_hash, update_tab); in mana_config_rss()
2552 mana_fence_rqs(apc); in mana_config_rss()
2560 struct mana_port_context *apc = if_getsoftc(ndev); in mana_init_port() local
2562 int port_idx = apc->port_idx; in mana_init_port()
2566 err = mana_init_port_context(apc); in mana_init_port()
2570 err = mana_query_vport_cfg(apc, port_idx, &max_txq, &max_rxq, in mana_init_port()
2579 if (apc->max_queues > max_queues) in mana_init_port()
2580 apc->max_queues = max_queues; in mana_init_port()
2582 if (apc->num_queues > apc->max_queues) in mana_init_port()
2583 apc->num_queues = apc->max_queues; in mana_init_port()
2588 bus_dma_tag_destroy(apc->rx_buf_tag); in mana_init_port()
2589 apc->rx_buf_tag = NULL; in mana_init_port()
2590 free(apc->rxqs, M_DEVBUF); in mana_init_port()
2591 apc->rxqs = NULL; in mana_init_port()
2598 struct mana_port_context *apc = if_getsoftc(ndev); in mana_alloc_queues() local
2601 err = mana_create_vport(apc, ndev); in mana_alloc_queues()
2605 err = mana_add_rx_queues(apc, ndev); in mana_alloc_queues()
2609 apc->rss_state = apc->num_queues > 1 ? TRI_STATE_TRUE : TRI_STATE_FALSE; in mana_alloc_queues()
2611 mana_rss_table_init(apc); in mana_alloc_queues()
2613 err = mana_config_rss(apc, TRI_STATE_TRUE, true, true); in mana_alloc_queues()
2620 mana_destroy_vport(apc); in mana_alloc_queues()
2625 mana_up(struct mana_port_context *apc) in mana_up() argument
2631 err = mana_alloc_queues(apc->ndev); in mana_up()
2638 mana_sysctl_add_queues(apc); in mana_up()
2640 apc->port_is_up = true; in mana_up()
2645 if_link_state_change(apc->ndev, LINK_STATE_UP); in mana_up()
2646 if_setdrvflagbits(apc->ndev, IFF_DRV_RUNNING, IFF_DRV_OACTIVE); in mana_up()
2655 struct mana_port_context *apc = (struct mana_port_context *)arg; in mana_init() local
2657 MANA_APC_LOCK_LOCK(apc); in mana_init()
2658 if (!apc->port_is_up) { in mana_init()
2659 mana_up(apc); in mana_init()
2661 MANA_APC_LOCK_UNLOCK(apc); in mana_init()
2667 struct mana_port_context *apc = if_getsoftc(ndev); in mana_dealloc_queues() local
2671 if (apc->port_is_up) in mana_dealloc_queues()
2682 for (i = 0; i < apc->num_queues; i++) { in mana_dealloc_queues()
2683 txq = &apc->tx_qp[i].txq; in mana_dealloc_queues()
2685 struct mana_cq *tx_cq = &apc->tx_qp[i].tx_cq; in mana_dealloc_queues()
2686 struct mana_cq *rx_cq = &(apc->rxqs[i]->rx_cq); in mana_dealloc_queues()
2702 apc->rss_state = TRI_STATE_FALSE; in mana_dealloc_queues()
2703 err = mana_config_rss(apc, TRI_STATE_FALSE, false, false); in mana_dealloc_queues()
2709 mana_destroy_vport(apc); in mana_dealloc_queues()
2715 mana_down(struct mana_port_context *apc) in mana_down() argument
2719 apc->port_st_save = apc->port_is_up; in mana_down()
2720 apc->port_is_up = false; in mana_down()
2725 if (apc->port_st_save) { in mana_down()
2726 if_setdrvflagbits(apc->ndev, IFF_DRV_OACTIVE, in mana_down()
2728 if_link_state_change(apc->ndev, LINK_STATE_DOWN); in mana_down()
2730 mana_sysctl_free_queues(apc); in mana_down()
2732 err = mana_dealloc_queues(apc->ndev); in mana_down()
2734 if_printf(apc->ndev, in mana_down()
2745 struct mana_port_context *apc = if_getsoftc(ndev); in mana_detach() local
2750 if (!apc) in mana_detach()
2753 MANA_APC_LOCK_LOCK(apc); in mana_detach()
2754 err = mana_down(apc); in mana_detach()
2755 MANA_APC_LOCK_UNLOCK(apc); in mana_detach()
2757 mana_cleanup_port_context(apc); in mana_detach()
2759 MANA_APC_LOCK_DESTROY(apc); in mana_detach()
2761 free(apc, M_DEVBUF); in mana_detach()
2771 struct mana_port_context *apc; in mana_probe_port() local
2779 apc = malloc(sizeof(*apc), M_DEVBUF, M_WAITOK | M_ZERO); in mana_probe_port()
2780 apc->ac = ac; in mana_probe_port()
2781 apc->ndev = ndev; in mana_probe_port()
2782 apc->max_queues = gc->max_num_queues; in mana_probe_port()
2783 apc->num_queues = min_t(unsigned int, in mana_probe_port()
2785 apc->port_handle = INVALID_MANA_HANDLE; in mana_probe_port()
2786 apc->port_idx = port_idx; in mana_probe_port()
2787 apc->frame_size = DEFAULT_FRAME_SIZE; in mana_probe_port()
2788 apc->last_tx_cq_bind_cpu = -1; in mana_probe_port()
2789 apc->last_rx_cq_bind_cpu = -1; in mana_probe_port()
2790 apc->vport_use_count = 0; in mana_probe_port()
2792 MANA_APC_LOCK_INIT(apc); in mana_probe_port()
2796 if_setsoftc(ndev, apc); in mana_probe_port()
2808 mana_rss_key_fill(apc->hashkey, MANA_HASH_KEY_SIZE); in mana_probe_port()
2839 ifmedia_init(&apc->media, IFM_IMASK, in mana_probe_port()
2841 ifmedia_add(&apc->media, IFM_ETHER | IFM_AUTO, 0, NULL); in mana_probe_port()
2842 ifmedia_set(&apc->media, IFM_ETHER | IFM_AUTO); in mana_probe_port()
2844 ether_ifattach(ndev, apc->mac_addr); in mana_probe_port()
2847 mana_alloc_counters((counter_u64_t *)&apc->port_stats, in mana_probe_port()
2849 mana_sysctl_add_port(apc); in mana_probe_port()
2857 free(apc, M_DEVBUF); in mana_probe_port()