• Home
  • Raw
  • Download

Lines Matching refs:alx

72 static int alx_refill_rx_ring(struct alx_priv *alx, gfp_t gfp)  in alx_refill_rx_ring()  argument
74 struct alx_rx_queue *rxq = alx->qnapi[0]->rxq; in alx_refill_rx_ring()
81 if (++next == alx->rx_ringsz) in alx_refill_rx_ring()
97 skb = __netdev_alloc_skb(alx->dev, alx->rxbuf_size + 64, gfp); in alx_refill_rx_ring()
104 dma = dma_map_single(&alx->hw.pdev->dev, in alx_refill_rx_ring()
105 skb->data, alx->rxbuf_size, in alx_refill_rx_ring()
107 if (dma_mapping_error(&alx->hw.pdev->dev, dma)) { in alx_refill_rx_ring()
121 dma_unmap_len_set(cur_buf, size, alx->rxbuf_size); in alx_refill_rx_ring()
126 if (++next == alx->rx_ringsz) in alx_refill_rx_ring()
136 alx_write_mem16(&alx->hw, ALX_RFD_PIDX, cur); in alx_refill_rx_ring()
142 static struct alx_tx_queue *alx_tx_queue_mapping(struct alx_priv *alx, in alx_tx_queue_mapping() argument
147 if (r_idx >= alx->num_txq) in alx_tx_queue_mapping()
148 r_idx = r_idx % alx->num_txq; in alx_tx_queue_mapping()
150 return alx->qnapi[r_idx]->txq; in alx_tx_queue_mapping()
167 struct alx_priv *alx; in alx_clean_tx_irq() local
173 alx = netdev_priv(txq->netdev); in alx_clean_tx_irq()
177 hw_read_idx = alx_read_mem16(&alx->hw, txq->c_reg); in alx_clean_tx_irq()
200 if (netif_tx_queue_stopped(tx_queue) && netif_carrier_ok(alx->dev) && in alx_clean_tx_irq()
207 static void alx_schedule_link_check(struct alx_priv *alx) in alx_schedule_link_check() argument
209 schedule_work(&alx->link_check_wk); in alx_schedule_link_check()
212 static void alx_schedule_reset(struct alx_priv *alx) in alx_schedule_reset() argument
214 schedule_work(&alx->reset_wk); in alx_schedule_reset()
219 struct alx_priv *alx; in alx_clean_rx_irq() local
226 alx = netdev_priv(rxq->netdev); in alx_clean_rx_irq()
238 alx_schedule_reset(alx); in alx_clean_rx_irq()
264 if (alx->dev->features & NETIF_F_RXCSUM && in alx_clean_rx_irq()
288 rfd_cleaned -= alx_refill_rx_ring(alx, GFP_ATOMIC); in alx_clean_rx_irq()
292 alx_refill_rx_ring(alx, GFP_ATOMIC); in alx_clean_rx_irq()
300 struct alx_priv *alx = np->alx; in alx_poll() local
301 struct alx_hw *hw = &alx->hw; in alx_poll()
317 if (alx->hw.pdev->msix_enabled) { in alx_poll()
320 spin_lock_irqsave(&alx->irq_lock, flags); in alx_poll()
321 alx->int_mask |= ALX_ISR_TX_Q0 | ALX_ISR_RX_Q0; in alx_poll()
322 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_poll()
323 spin_unlock_irqrestore(&alx->irq_lock, flags); in alx_poll()
331 static bool alx_intr_handle_misc(struct alx_priv *alx, u32 intr) in alx_intr_handle_misc() argument
333 struct alx_hw *hw = &alx->hw; in alx_intr_handle_misc()
336 netif_warn(alx, hw, alx->dev, in alx_intr_handle_misc()
338 alx_schedule_reset(alx); in alx_intr_handle_misc()
343 netdev_warn(alx->dev, "alert interrupt: 0x%x\n", intr); in alx_intr_handle_misc()
350 alx->int_mask &= ~ALX_ISR_PHY; in alx_intr_handle_misc()
351 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_intr_handle_misc()
352 alx_schedule_link_check(alx); in alx_intr_handle_misc()
358 static irqreturn_t alx_intr_handle(struct alx_priv *alx, u32 intr) in alx_intr_handle() argument
360 struct alx_hw *hw = &alx->hw; in alx_intr_handle()
362 spin_lock(&alx->irq_lock); in alx_intr_handle()
366 intr &= alx->int_mask; in alx_intr_handle()
368 if (alx_intr_handle_misc(alx, intr)) in alx_intr_handle()
372 napi_schedule(&alx->qnapi[0]->napi); in alx_intr_handle()
374 alx->int_mask &= ~ALX_ISR_ALL_QUEUES; in alx_intr_handle()
375 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_intr_handle()
381 spin_unlock(&alx->irq_lock); in alx_intr_handle()
388 struct alx_hw *hw = &np->alx->hw; in alx_intr_msix_ring()
402 struct alx_priv *alx = data; in alx_intr_msix_misc() local
403 struct alx_hw *hw = &alx->hw; in alx_intr_msix_misc()
411 intr &= (alx->int_mask & ~ALX_ISR_ALL_QUEUES); in alx_intr_msix_misc()
413 if (alx_intr_handle_misc(alx, intr)) in alx_intr_msix_misc()
427 struct alx_priv *alx = data; in alx_intr_msi() local
429 return alx_intr_handle(alx, alx_read_mem32(&alx->hw, ALX_ISR)); in alx_intr_msi()
434 struct alx_priv *alx = data; in alx_intr_legacy() local
435 struct alx_hw *hw = &alx->hw; in alx_intr_legacy()
440 if (intr & ALX_ISR_DIS || !(intr & alx->int_mask)) in alx_intr_legacy()
443 return alx_intr_handle(alx, intr); in alx_intr_legacy()
451 static void alx_init_ring_ptrs(struct alx_priv *alx) in alx_init_ring_ptrs() argument
453 struct alx_hw *hw = &alx->hw; in alx_init_ring_ptrs()
454 u32 addr_hi = ((u64)alx->descmem.dma) >> 32; in alx_init_ring_ptrs()
458 for (i = 0; i < alx->num_napi; i++) { in alx_init_ring_ptrs()
459 np = alx->qnapi[i]; in alx_init_ring_ptrs()
478 alx_write_mem32(hw, ALX_TPD_RING_SZ, alx->tx_ringsz); in alx_init_ring_ptrs()
481 alx_write_mem32(hw, ALX_RRD_RING_SZ, alx->rx_ringsz); in alx_init_ring_ptrs()
482 alx_write_mem32(hw, ALX_RFD_RING_SZ, alx->rx_ringsz); in alx_init_ring_ptrs()
483 alx_write_mem32(hw, ALX_RFD_BUF_SZ, alx->rxbuf_size); in alx_init_ring_ptrs()
534 static void alx_free_buffers(struct alx_priv *alx) in alx_free_buffers() argument
538 for (i = 0; i < alx->num_txq; i++) in alx_free_buffers()
539 if (alx->qnapi[i] && alx->qnapi[i]->txq) in alx_free_buffers()
540 alx_free_txring_buf(alx->qnapi[i]->txq); in alx_free_buffers()
542 if (alx->qnapi[0] && alx->qnapi[0]->rxq) in alx_free_buffers()
543 alx_free_rxring_buf(alx->qnapi[0]->rxq); in alx_free_buffers()
546 static int alx_reinit_rings(struct alx_priv *alx) in alx_reinit_rings() argument
548 alx_free_buffers(alx); in alx_reinit_rings()
550 alx_init_ring_ptrs(alx); in alx_reinit_rings()
552 if (!alx_refill_rx_ring(alx, GFP_KERNEL)) in alx_reinit_rings()
571 struct alx_priv *alx = netdev_priv(netdev); in __alx_set_rx_mode() local
572 struct alx_hw *hw = &alx->hw; in __alx_set_rx_mode()
600 struct alx_priv *alx = netdev_priv(netdev); in alx_set_mac_address() local
601 struct alx_hw *hw = &alx->hw; in alx_set_mac_address()
617 static int alx_alloc_tx_ring(struct alx_priv *alx, struct alx_tx_queue *txq, in alx_alloc_tx_ring() argument
624 txq->tpd = alx->descmem.virt + offset; in alx_alloc_tx_ring()
625 txq->tpd_dma = alx->descmem.dma + offset; in alx_alloc_tx_ring()
631 static int alx_alloc_rx_ring(struct alx_priv *alx, struct alx_rx_queue *rxq, in alx_alloc_rx_ring() argument
638 rxq->rrd = alx->descmem.virt + offset; in alx_alloc_rx_ring()
639 rxq->rrd_dma = alx->descmem.dma + offset; in alx_alloc_rx_ring()
642 rxq->rfd = alx->descmem.virt + offset; in alx_alloc_rx_ring()
643 rxq->rfd_dma = alx->descmem.dma + offset; in alx_alloc_rx_ring()
649 static int alx_alloc_rings(struct alx_priv *alx) in alx_alloc_rings() argument
659 alx->descmem.size = sizeof(struct alx_txd) * alx->tx_ringsz * in alx_alloc_rings()
660 alx->num_txq + in alx_alloc_rings()
661 sizeof(struct alx_rrd) * alx->rx_ringsz + in alx_alloc_rings()
662 sizeof(struct alx_rfd) * alx->rx_ringsz; in alx_alloc_rings()
663 alx->descmem.virt = dma_alloc_coherent(&alx->hw.pdev->dev, in alx_alloc_rings()
664 alx->descmem.size, in alx_alloc_rings()
665 &alx->descmem.dma, GFP_KERNEL); in alx_alloc_rings()
666 if (!alx->descmem.virt) in alx_alloc_rings()
673 for (i = 0; i < alx->num_txq; i++) { in alx_alloc_rings()
674 offset = alx_alloc_tx_ring(alx, alx->qnapi[i]->txq, offset); in alx_alloc_rings()
676 netdev_err(alx->dev, "Allocation of tx buffer failed!\n"); in alx_alloc_rings()
681 offset = alx_alloc_rx_ring(alx, alx->qnapi[0]->rxq, offset); in alx_alloc_rings()
683 netdev_err(alx->dev, "Allocation of rx buffer failed!\n"); in alx_alloc_rings()
690 static void alx_free_rings(struct alx_priv *alx) in alx_free_rings() argument
694 alx_free_buffers(alx); in alx_free_rings()
696 for (i = 0; i < alx->num_txq; i++) in alx_free_rings()
697 if (alx->qnapi[i] && alx->qnapi[i]->txq) in alx_free_rings()
698 kfree(alx->qnapi[i]->txq->bufs); in alx_free_rings()
700 if (alx->qnapi[0] && alx->qnapi[0]->rxq) in alx_free_rings()
701 kfree(alx->qnapi[0]->rxq->bufs); in alx_free_rings()
703 if (alx->descmem.virt) in alx_free_rings()
704 dma_free_coherent(&alx->hw.pdev->dev, in alx_free_rings()
705 alx->descmem.size, in alx_free_rings()
706 alx->descmem.virt, in alx_free_rings()
707 alx->descmem.dma); in alx_free_rings()
710 static void alx_free_napis(struct alx_priv *alx) in alx_free_napis() argument
715 for (i = 0; i < alx->num_napi; i++) { in alx_free_napis()
716 np = alx->qnapi[i]; in alx_free_napis()
724 alx->qnapi[i] = NULL; in alx_free_napis()
739 static int alx_alloc_napis(struct alx_priv *alx) in alx_alloc_napis() argument
746 alx->int_mask &= ~ALX_ISR_ALL_QUEUES; in alx_alloc_napis()
749 for (i = 0; i < alx->num_napi; i++) { in alx_alloc_napis()
754 np->alx = alx; in alx_alloc_napis()
755 netif_napi_add(alx->dev, &np->napi, alx_poll, 64); in alx_alloc_napis()
756 alx->qnapi[i] = np; in alx_alloc_napis()
760 for (i = 0; i < alx->num_txq; i++) { in alx_alloc_napis()
761 np = alx->qnapi[i]; in alx_alloc_napis()
770 txq->count = alx->tx_ringsz; in alx_alloc_napis()
771 txq->netdev = alx->dev; in alx_alloc_napis()
772 txq->dev = &alx->hw.pdev->dev; in alx_alloc_napis()
774 alx->int_mask |= tx_vect_mask[i]; in alx_alloc_napis()
778 np = alx->qnapi[0]; in alx_alloc_napis()
784 rxq->np = alx->qnapi[0]; in alx_alloc_napis()
786 rxq->count = alx->rx_ringsz; in alx_alloc_napis()
787 rxq->netdev = alx->dev; in alx_alloc_napis()
788 rxq->dev = &alx->hw.pdev->dev; in alx_alloc_napis()
790 alx->int_mask |= rx_vect_mask[0]; in alx_alloc_napis()
795 netdev_err(alx->dev, "error allocating internal structures\n"); in alx_alloc_napis()
796 alx_free_napis(alx); in alx_alloc_napis()
807 static void alx_config_vector_mapping(struct alx_priv *alx) in alx_config_vector_mapping() argument
809 struct alx_hw *hw = &alx->hw; in alx_config_vector_mapping()
813 if (alx->hw.pdev->msix_enabled) { in alx_config_vector_mapping()
815 for (i = 0, vector = 1; i < alx->num_txq; i++, vector++) { in alx_config_vector_mapping()
830 static int alx_enable_msix(struct alx_priv *alx) in alx_enable_msix() argument
838 err = pci_alloc_irq_vectors(alx->hw.pdev, num_vec, num_vec, in alx_enable_msix()
841 netdev_warn(alx->dev, "Enabling MSI-X interrupts failed!\n"); in alx_enable_msix()
845 alx->num_vec = num_vec; in alx_enable_msix()
846 alx->num_napi = num_vec - 1; in alx_enable_msix()
847 alx->num_txq = num_txq; in alx_enable_msix()
848 alx->num_rxq = num_rxq; in alx_enable_msix()
853 static int alx_request_msix(struct alx_priv *alx) in alx_request_msix() argument
855 struct net_device *netdev = alx->dev; in alx_request_msix()
858 err = request_irq(pci_irq_vector(alx->hw.pdev, 0), alx_intr_msix_misc, in alx_request_msix()
859 0, netdev->name, alx); in alx_request_msix()
863 for (i = 0; i < alx->num_napi; i++) { in alx_request_msix()
864 struct alx_napi *np = alx->qnapi[i]; in alx_request_msix()
881 err = request_irq(pci_irq_vector(alx->hw.pdev, vector), in alx_request_msix()
889 free_irq(pci_irq_vector(alx->hw.pdev, free_vector++), alx); in alx_request_msix()
893 free_irq(pci_irq_vector(alx->hw.pdev,free_vector++), in alx_request_msix()
894 alx->qnapi[i]); in alx_request_msix()
900 static int alx_init_intr(struct alx_priv *alx) in alx_init_intr() argument
904 ret = pci_alloc_irq_vectors(alx->hw.pdev, 1, 1, in alx_init_intr()
909 alx->num_vec = 1; in alx_init_intr()
910 alx->num_napi = 1; in alx_init_intr()
911 alx->num_txq = 1; in alx_init_intr()
912 alx->num_rxq = 1; in alx_init_intr()
916 static void alx_irq_enable(struct alx_priv *alx) in alx_irq_enable() argument
918 struct alx_hw *hw = &alx->hw; in alx_irq_enable()
923 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_irq_enable()
926 if (alx->hw.pdev->msix_enabled) { in alx_irq_enable()
928 for (i = 0; i < alx->num_vec; i++) in alx_irq_enable()
933 static void alx_irq_disable(struct alx_priv *alx) in alx_irq_disable() argument
935 struct alx_hw *hw = &alx->hw; in alx_irq_disable()
942 if (alx->hw.pdev->msix_enabled) { in alx_irq_disable()
943 for (i = 0; i < alx->num_vec; i++) { in alx_irq_disable()
945 synchronize_irq(pci_irq_vector(alx->hw.pdev, i)); in alx_irq_disable()
948 synchronize_irq(pci_irq_vector(alx->hw.pdev, 0)); in alx_irq_disable()
952 static int alx_realloc_resources(struct alx_priv *alx) in alx_realloc_resources() argument
956 alx_free_rings(alx); in alx_realloc_resources()
957 alx_free_napis(alx); in alx_realloc_resources()
958 pci_free_irq_vectors(alx->hw.pdev); in alx_realloc_resources()
960 err = alx_init_intr(alx); in alx_realloc_resources()
964 err = alx_alloc_napis(alx); in alx_realloc_resources()
968 err = alx_alloc_rings(alx); in alx_realloc_resources()
975 static int alx_request_irq(struct alx_priv *alx) in alx_request_irq() argument
977 struct pci_dev *pdev = alx->hw.pdev; in alx_request_irq()
978 struct alx_hw *hw = &alx->hw; in alx_request_irq()
984 if (alx->hw.pdev->msix_enabled) { in alx_request_irq()
986 err = alx_request_msix(alx); in alx_request_irq()
991 err = alx_realloc_resources(alx); in alx_request_irq()
996 if (alx->hw.pdev->msi_enabled) { in alx_request_irq()
1000 alx->dev->name, alx); in alx_request_irq()
1005 pci_free_irq_vectors(alx->hw.pdev); in alx_request_irq()
1010 alx->dev->name, alx); in alx_request_irq()
1013 alx_config_vector_mapping(alx); in alx_request_irq()
1015 netdev_err(alx->dev, "IRQ registration failed!\n"); in alx_request_irq()
1019 static void alx_free_irq(struct alx_priv *alx) in alx_free_irq() argument
1021 struct pci_dev *pdev = alx->hw.pdev; in alx_free_irq()
1024 free_irq(pci_irq_vector(pdev, 0), alx); in alx_free_irq()
1025 if (alx->hw.pdev->msix_enabled) { in alx_free_irq()
1026 for (i = 0; i < alx->num_napi; i++) in alx_free_irq()
1027 free_irq(pci_irq_vector(pdev, i + 1), alx->qnapi[i]); in alx_free_irq()
1033 static int alx_identify_hw(struct alx_priv *alx) in alx_identify_hw() argument
1035 struct alx_hw *hw = &alx->hw; in alx_identify_hw()
1046 static int alx_init_sw(struct alx_priv *alx) in alx_init_sw() argument
1048 struct pci_dev *pdev = alx->hw.pdev; in alx_init_sw()
1049 struct alx_hw *hw = &alx->hw; in alx_init_sw()
1052 err = alx_identify_hw(alx); in alx_init_sw()
1058 alx->hw.lnk_patch = in alx_init_sw()
1065 hw->mtu = alx->dev->mtu; in alx_init_sw()
1066 alx->rxbuf_size = ALX_MAX_FRAME_LEN(hw->mtu); in alx_init_sw()
1068 alx->dev->min_mtu = 34; in alx_init_sw()
1069 alx->dev->max_mtu = ALX_MAX_FRAME_LEN(ALX_MAX_FRAME_SIZE); in alx_init_sw()
1070 alx->tx_ringsz = 256; in alx_init_sw()
1071 alx->rx_ringsz = 512; in alx_init_sw()
1073 alx->int_mask = ALX_ISR_MISC; in alx_init_sw()
1075 hw->ith_tpd = alx->tx_ringsz / 3; in alx_init_sw()
1108 static void alx_netif_stop(struct alx_priv *alx) in alx_netif_stop() argument
1112 netif_trans_update(alx->dev); in alx_netif_stop()
1113 if (netif_carrier_ok(alx->dev)) { in alx_netif_stop()
1114 netif_carrier_off(alx->dev); in alx_netif_stop()
1115 netif_tx_disable(alx->dev); in alx_netif_stop()
1116 for (i = 0; i < alx->num_napi; i++) in alx_netif_stop()
1117 napi_disable(&alx->qnapi[i]->napi); in alx_netif_stop()
1121 static void alx_halt(struct alx_priv *alx) in alx_halt() argument
1123 struct alx_hw *hw = &alx->hw; in alx_halt()
1125 alx_netif_stop(alx); in alx_halt()
1133 alx_irq_disable(alx); in alx_halt()
1134 alx_free_buffers(alx); in alx_halt()
1137 static void alx_configure(struct alx_priv *alx) in alx_configure() argument
1139 struct alx_hw *hw = &alx->hw; in alx_configure()
1143 __alx_set_rx_mode(alx->dev); in alx_configure()
1148 static void alx_activate(struct alx_priv *alx) in alx_activate() argument
1151 alx_reinit_rings(alx); in alx_activate()
1152 alx_configure(alx); in alx_activate()
1155 alx_write_mem32(&alx->hw, ALX_ISR, ~(u32)ALX_ISR_DIS); in alx_activate()
1157 alx_irq_enable(alx); in alx_activate()
1159 alx_schedule_link_check(alx); in alx_activate()
1162 static void alx_reinit(struct alx_priv *alx) in alx_reinit() argument
1166 alx_halt(alx); in alx_reinit()
1167 alx_activate(alx); in alx_reinit()
1172 struct alx_priv *alx = netdev_priv(netdev); in alx_change_mtu() local
1176 alx->hw.mtu = mtu; in alx_change_mtu()
1177 alx->rxbuf_size = max(max_frame, ALX_DEF_RXBUF_SIZE); in alx_change_mtu()
1180 alx_reinit(alx); in alx_change_mtu()
1184 static void alx_netif_start(struct alx_priv *alx) in alx_netif_start() argument
1188 netif_tx_wake_all_queues(alx->dev); in alx_netif_start()
1189 for (i = 0; i < alx->num_napi; i++) in alx_netif_start()
1190 napi_enable(&alx->qnapi[i]->napi); in alx_netif_start()
1191 netif_carrier_on(alx->dev); in alx_netif_start()
1194 static int __alx_open(struct alx_priv *alx, bool resume) in __alx_open() argument
1198 err = alx_enable_msix(alx); in __alx_open()
1200 err = alx_init_intr(alx); in __alx_open()
1206 netif_carrier_off(alx->dev); in __alx_open()
1208 err = alx_alloc_napis(alx); in __alx_open()
1212 err = alx_alloc_rings(alx); in __alx_open()
1216 alx_configure(alx); in __alx_open()
1218 err = alx_request_irq(alx); in __alx_open()
1226 alx_reinit_rings(alx); in __alx_open()
1228 netif_set_real_num_tx_queues(alx->dev, alx->num_txq); in __alx_open()
1229 netif_set_real_num_rx_queues(alx->dev, alx->num_rxq); in __alx_open()
1232 alx_write_mem32(&alx->hw, ALX_ISR, ~(u32)ALX_ISR_DIS); in __alx_open()
1234 alx_irq_enable(alx); in __alx_open()
1237 netif_tx_start_all_queues(alx->dev); in __alx_open()
1239 alx_schedule_link_check(alx); in __alx_open()
1243 alx_free_rings(alx); in __alx_open()
1244 alx_free_napis(alx); in __alx_open()
1246 pci_free_irq_vectors(alx->hw.pdev); in __alx_open()
1250 static void __alx_stop(struct alx_priv *alx) in __alx_stop() argument
1252 alx_halt(alx); in __alx_stop()
1253 alx_free_irq(alx); in __alx_stop()
1254 alx_free_rings(alx); in __alx_stop()
1255 alx_free_napis(alx); in __alx_stop()
1276 static void alx_check_link(struct alx_priv *alx) in alx_check_link() argument
1278 struct alx_hw *hw = &alx->hw; in alx_check_link()
1293 spin_lock_irqsave(&alx->irq_lock, flags); in alx_check_link()
1294 alx->int_mask |= ALX_ISR_PHY; in alx_check_link()
1295 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_check_link()
1296 spin_unlock_irqrestore(&alx->irq_lock, flags); in alx_check_link()
1302 netif_info(alx, link, alx->dev, in alx_check_link()
1309 alx_netif_start(alx); in alx_check_link()
1312 alx_netif_stop(alx); in alx_check_link()
1313 netif_info(alx, link, alx->dev, "Link Down\n"); in alx_check_link()
1317 alx_irq_disable(alx); in alx_check_link()
1320 err = alx_reinit_rings(alx); in alx_check_link()
1323 alx_configure(alx); in alx_check_link()
1326 alx_irq_enable(alx); in alx_check_link()
1332 alx_schedule_reset(alx); in alx_check_link()
1348 struct alx_priv *alx; in alx_link_check() local
1350 alx = container_of(work, struct alx_priv, link_check_wk); in alx_link_check()
1353 alx_check_link(alx); in alx_link_check()
1359 struct alx_priv *alx = container_of(work, struct alx_priv, reset_wk); in alx_reset() local
1362 alx_reinit(alx); in alx_reset()
1510 struct alx_priv *alx; in alx_start_xmit_ring() local
1514 alx = netdev_priv(txq->netdev); in alx_start_xmit_ring()
1537 alx_write_mem16(&alx->hw, txq->p_reg, txq->write_idx); in alx_start_xmit_ring()
1552 struct alx_priv *alx = netdev_priv(netdev); in alx_start_xmit() local
1553 return alx_start_xmit_ring(skb, alx_tx_queue_mapping(alx, skb)); in alx_start_xmit()
1558 struct alx_priv *alx = netdev_priv(dev); in alx_tx_timeout() local
1560 alx_schedule_reset(alx); in alx_tx_timeout()
1566 struct alx_priv *alx = netdev_priv(netdev); in alx_mdio_read() local
1567 struct alx_hw *hw = &alx->hw; in alx_mdio_read()
1587 struct alx_priv *alx = netdev_priv(netdev); in alx_mdio_write() local
1588 struct alx_hw *hw = &alx->hw; in alx_mdio_write()
1601 struct alx_priv *alx = netdev_priv(netdev); in alx_ioctl() local
1606 return mdio_mii_ioctl(&alx->hw.mdio, if_mii(ifr), cmd); in alx_ioctl()
1612 struct alx_priv *alx = netdev_priv(netdev); in alx_poll_controller() local
1615 if (alx->hw.pdev->msix_enabled) { in alx_poll_controller()
1616 alx_intr_msix_misc(0, alx); in alx_poll_controller()
1617 for (i = 0; i < alx->num_txq; i++) in alx_poll_controller()
1618 alx_intr_msix_ring(0, alx->qnapi[i]); in alx_poll_controller()
1619 } else if (alx->hw.pdev->msi_enabled) in alx_poll_controller()
1620 alx_intr_msi(0, alx); in alx_poll_controller()
1622 alx_intr_legacy(0, alx); in alx_poll_controller()
1629 struct alx_priv *alx = netdev_priv(dev); in alx_get_stats64() local
1630 struct alx_hw_stats *hw_stats = &alx->hw.stats; in alx_get_stats64()
1632 spin_lock(&alx->stats_lock); in alx_get_stats64()
1634 alx_update_hw_stats(&alx->hw); in alx_get_stats64()
1670 spin_unlock(&alx->stats_lock); in alx_get_stats64()
1693 struct alx_priv *alx; in alx_probe() local
1733 netdev = alloc_etherdev_mqs(sizeof(*alx), in alx_probe()
1741 alx = netdev_priv(netdev); in alx_probe()
1742 spin_lock_init(&alx->hw.mdio_lock); in alx_probe()
1743 spin_lock_init(&alx->irq_lock); in alx_probe()
1744 spin_lock_init(&alx->stats_lock); in alx_probe()
1745 alx->dev = netdev; in alx_probe()
1746 alx->hw.pdev = pdev; in alx_probe()
1747 alx->msg_enable = NETIF_MSG_LINK | NETIF_MSG_HW | NETIF_MSG_IFUP | in alx_probe()
1749 hw = &alx->hw; in alx_probe()
1750 pci_set_drvdata(pdev, alx); in alx_probe()
1767 err = alx_init_sw(alx); in alx_probe()
1829 INIT_WORK(&alx->link_check_wk, alx_link_check); in alx_probe()
1830 INIT_WORK(&alx->reset_wk, alx_reset); in alx_probe()
1858 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_remove() local
1859 struct alx_hw *hw = &alx->hw; in alx_remove()
1861 cancel_work_sync(&alx->link_check_wk); in alx_remove()
1862 cancel_work_sync(&alx->reset_wk); in alx_remove()
1867 unregister_netdev(alx->dev); in alx_remove()
1874 free_netdev(alx->dev); in alx_remove()
1880 struct alx_priv *alx = dev_get_drvdata(dev); in alx_suspend() local
1882 if (!netif_running(alx->dev)) in alx_suspend()
1884 netif_device_detach(alx->dev); in alx_suspend()
1885 __alx_stop(alx); in alx_suspend()
1891 struct alx_priv *alx = dev_get_drvdata(dev); in alx_resume() local
1892 struct alx_hw *hw = &alx->hw; in alx_resume()
1897 if (!netif_running(alx->dev)) in alx_resume()
1899 netif_device_attach(alx->dev); in alx_resume()
1902 err = __alx_open(alx, true); in alx_resume()
1918 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_pci_error_detected() local
1919 struct net_device *netdev = alx->dev; in alx_pci_error_detected()
1928 alx_halt(alx); in alx_pci_error_detected()
1943 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_pci_error_slot_reset() local
1944 struct alx_hw *hw = &alx->hw; in alx_pci_error_slot_reset()
1969 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_pci_error_resume() local
1970 struct net_device *netdev = alx->dev; in alx_pci_error_resume()
1977 alx_activate(alx); in alx_pci_error_resume()