Lines Matching refs:alx

55 static void alx_free_txbuf(struct alx_priv *alx, int entry)  in alx_free_txbuf()  argument
57 struct alx_buffer *txb = &alx->txq.bufs[entry]; in alx_free_txbuf()
60 dma_unmap_single(&alx->hw.pdev->dev, in alx_free_txbuf()
73 static int alx_refill_rx_ring(struct alx_priv *alx, gfp_t gfp) in alx_refill_rx_ring() argument
75 struct alx_rx_queue *rxq = &alx->rxq; in alx_refill_rx_ring()
82 if (++next == alx->rx_ringsz) in alx_refill_rx_ring()
89 skb = __netdev_alloc_skb(alx->dev, alx->rxbuf_size, gfp); in alx_refill_rx_ring()
92 dma = dma_map_single(&alx->hw.pdev->dev, in alx_refill_rx_ring()
93 skb->data, alx->rxbuf_size, in alx_refill_rx_ring()
95 if (dma_mapping_error(&alx->hw.pdev->dev, dma)) { in alx_refill_rx_ring()
109 dma_unmap_len_set(cur_buf, size, alx->rxbuf_size); in alx_refill_rx_ring()
114 if (++next == alx->rx_ringsz) in alx_refill_rx_ring()
124 alx_write_mem16(&alx->hw, ALX_RFD_PIDX, cur); in alx_refill_rx_ring()
130 static inline int alx_tpd_avail(struct alx_priv *alx) in alx_tpd_avail() argument
132 struct alx_tx_queue *txq = &alx->txq; in alx_tpd_avail()
135 return alx->tx_ringsz + txq->read_idx - txq->write_idx - 1; in alx_tpd_avail()
139 static bool alx_clean_tx_irq(struct alx_priv *alx) in alx_clean_tx_irq() argument
141 struct alx_tx_queue *txq = &alx->txq; in alx_clean_tx_irq()
147 hw_read_idx = alx_read_mem16(&alx->hw, ALX_TPD_PRI0_CIDX); in alx_clean_tx_irq()
160 alx_free_txbuf(alx, sw_read_idx); in alx_clean_tx_irq()
162 if (++sw_read_idx == alx->tx_ringsz) in alx_clean_tx_irq()
167 netdev_completed_queue(alx->dev, total_packets, total_bytes); in alx_clean_tx_irq()
170 if (netif_queue_stopped(alx->dev) && netif_carrier_ok(alx->dev) && in alx_clean_tx_irq()
171 alx_tpd_avail(alx) > alx->tx_ringsz/4) in alx_clean_tx_irq()
172 netif_wake_queue(alx->dev); in alx_clean_tx_irq()
177 static void alx_schedule_link_check(struct alx_priv *alx) in alx_schedule_link_check() argument
179 schedule_work(&alx->link_check_wk); in alx_schedule_link_check()
182 static void alx_schedule_reset(struct alx_priv *alx) in alx_schedule_reset() argument
184 schedule_work(&alx->reset_wk); in alx_schedule_reset()
187 static int alx_clean_rx_irq(struct alx_priv *alx, int budget) in alx_clean_rx_irq() argument
189 struct alx_rx_queue *rxq = &alx->rxq; in alx_clean_rx_irq()
206 alx_schedule_reset(alx); in alx_clean_rx_irq()
211 dma_unmap_single(&alx->hw.pdev->dev, in alx_clean_rx_irq()
229 skb->protocol = eth_type_trans(skb, alx->dev); in alx_clean_rx_irq()
232 if (alx->dev->features & NETIF_F_RXCSUM && in alx_clean_rx_irq()
246 napi_gro_receive(&alx->napi, skb); in alx_clean_rx_irq()
250 if (++rxq->read_idx == alx->rx_ringsz) in alx_clean_rx_irq()
252 if (++rxq->rrd_read_idx == alx->rx_ringsz) in alx_clean_rx_irq()
256 rfd_cleaned -= alx_refill_rx_ring(alx, GFP_ATOMIC); in alx_clean_rx_irq()
260 alx_refill_rx_ring(alx, GFP_ATOMIC); in alx_clean_rx_irq()
267 struct alx_priv *alx = container_of(napi, struct alx_priv, napi); in alx_poll() local
268 struct alx_hw *hw = &alx->hw; in alx_poll()
273 tx_complete = alx_clean_tx_irq(alx); in alx_poll()
274 work = alx_clean_rx_irq(alx, budget); in alx_poll()
279 napi_complete(&alx->napi); in alx_poll()
282 spin_lock_irqsave(&alx->irq_lock, flags); in alx_poll()
283 alx->int_mask |= ALX_ISR_TX_Q0 | ALX_ISR_RX_Q0; in alx_poll()
284 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_poll()
285 spin_unlock_irqrestore(&alx->irq_lock, flags); in alx_poll()
292 static irqreturn_t alx_intr_handle(struct alx_priv *alx, u32 intr) in alx_intr_handle() argument
294 struct alx_hw *hw = &alx->hw; in alx_intr_handle()
297 spin_lock(&alx->irq_lock); in alx_intr_handle()
301 intr &= alx->int_mask; in alx_intr_handle()
304 netif_warn(alx, hw, alx->dev, in alx_intr_handle()
306 alx_schedule_reset(alx); in alx_intr_handle()
311 netdev_warn(alx->dev, "alert interrupt: 0x%x\n", intr); in alx_intr_handle()
318 alx->int_mask &= ~ALX_ISR_PHY; in alx_intr_handle()
320 alx_schedule_link_check(alx); in alx_intr_handle()
324 napi_schedule(&alx->napi); in alx_intr_handle()
326 alx->int_mask &= ~ALX_ISR_ALL_QUEUES; in alx_intr_handle()
331 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_intr_handle()
336 spin_unlock(&alx->irq_lock); in alx_intr_handle()
342 struct alx_priv *alx = data; in alx_intr_msi() local
344 return alx_intr_handle(alx, alx_read_mem32(&alx->hw, ALX_ISR)); in alx_intr_msi()
349 struct alx_priv *alx = data; in alx_intr_legacy() local
350 struct alx_hw *hw = &alx->hw; in alx_intr_legacy()
355 if (intr & ALX_ISR_DIS || !(intr & alx->int_mask)) in alx_intr_legacy()
358 return alx_intr_handle(alx, intr); in alx_intr_legacy()
361 static void alx_init_ring_ptrs(struct alx_priv *alx) in alx_init_ring_ptrs() argument
363 struct alx_hw *hw = &alx->hw; in alx_init_ring_ptrs()
364 u32 addr_hi = ((u64)alx->descmem.dma) >> 32; in alx_init_ring_ptrs()
366 alx->rxq.read_idx = 0; in alx_init_ring_ptrs()
367 alx->rxq.write_idx = 0; in alx_init_ring_ptrs()
368 alx->rxq.rrd_read_idx = 0; in alx_init_ring_ptrs()
370 alx_write_mem32(hw, ALX_RRD_ADDR_LO, alx->rxq.rrd_dma); in alx_init_ring_ptrs()
371 alx_write_mem32(hw, ALX_RRD_RING_SZ, alx->rx_ringsz); in alx_init_ring_ptrs()
372 alx_write_mem32(hw, ALX_RFD_ADDR_LO, alx->rxq.rfd_dma); in alx_init_ring_ptrs()
373 alx_write_mem32(hw, ALX_RFD_RING_SZ, alx->rx_ringsz); in alx_init_ring_ptrs()
374 alx_write_mem32(hw, ALX_RFD_BUF_SZ, alx->rxbuf_size); in alx_init_ring_ptrs()
376 alx->txq.read_idx = 0; in alx_init_ring_ptrs()
377 alx->txq.write_idx = 0; in alx_init_ring_ptrs()
379 alx_write_mem32(hw, ALX_TPD_PRI0_ADDR_LO, alx->txq.tpd_dma); in alx_init_ring_ptrs()
380 alx_write_mem32(hw, ALX_TPD_RING_SZ, alx->tx_ringsz); in alx_init_ring_ptrs()
386 static void alx_free_txring_buf(struct alx_priv *alx) in alx_free_txring_buf() argument
388 struct alx_tx_queue *txq = &alx->txq; in alx_free_txring_buf()
394 for (i = 0; i < alx->tx_ringsz; i++) in alx_free_txring_buf()
395 alx_free_txbuf(alx, i); in alx_free_txring_buf()
397 memset(txq->bufs, 0, alx->tx_ringsz * sizeof(struct alx_buffer)); in alx_free_txring_buf()
398 memset(txq->tpd, 0, alx->tx_ringsz * sizeof(struct alx_txd)); in alx_free_txring_buf()
402 netdev_reset_queue(alx->dev); in alx_free_txring_buf()
405 static void alx_free_rxring_buf(struct alx_priv *alx) in alx_free_rxring_buf() argument
407 struct alx_rx_queue *rxq = &alx->rxq; in alx_free_rxring_buf()
414 for (i = 0; i < alx->rx_ringsz; i++) { in alx_free_rxring_buf()
417 dma_unmap_single(&alx->hw.pdev->dev, in alx_free_rxring_buf()
433 static void alx_free_buffers(struct alx_priv *alx) in alx_free_buffers() argument
435 alx_free_txring_buf(alx); in alx_free_buffers()
436 alx_free_rxring_buf(alx); in alx_free_buffers()
439 static int alx_reinit_rings(struct alx_priv *alx) in alx_reinit_rings() argument
441 alx_free_buffers(alx); in alx_reinit_rings()
443 alx_init_ring_ptrs(alx); in alx_reinit_rings()
445 if (!alx_refill_rx_ring(alx, GFP_KERNEL)) in alx_reinit_rings()
464 struct alx_priv *alx = netdev_priv(netdev); in __alx_set_rx_mode() local
465 struct alx_hw *hw = &alx->hw; in __alx_set_rx_mode()
493 struct alx_priv *alx = netdev_priv(netdev); in alx_set_mac_address() local
494 struct alx_hw *hw = &alx->hw; in alx_set_mac_address()
510 static int alx_alloc_descriptors(struct alx_priv *alx) in alx_alloc_descriptors() argument
512 alx->txq.bufs = kcalloc(alx->tx_ringsz, in alx_alloc_descriptors()
515 if (!alx->txq.bufs) in alx_alloc_descriptors()
518 alx->rxq.bufs = kcalloc(alx->rx_ringsz, in alx_alloc_descriptors()
521 if (!alx->rxq.bufs) in alx_alloc_descriptors()
530 alx->descmem.size = sizeof(struct alx_txd) * alx->tx_ringsz + in alx_alloc_descriptors()
531 sizeof(struct alx_rrd) * alx->rx_ringsz + in alx_alloc_descriptors()
532 sizeof(struct alx_rfd) * alx->rx_ringsz; in alx_alloc_descriptors()
533 alx->descmem.virt = dma_zalloc_coherent(&alx->hw.pdev->dev, in alx_alloc_descriptors()
534 alx->descmem.size, in alx_alloc_descriptors()
535 &alx->descmem.dma, in alx_alloc_descriptors()
537 if (!alx->descmem.virt) in alx_alloc_descriptors()
540 alx->txq.tpd = alx->descmem.virt; in alx_alloc_descriptors()
541 alx->txq.tpd_dma = alx->descmem.dma; in alx_alloc_descriptors()
546 alx->rxq.rrd = in alx_alloc_descriptors()
547 (void *)((u8 *)alx->descmem.virt + in alx_alloc_descriptors()
548 sizeof(struct alx_txd) * alx->tx_ringsz); in alx_alloc_descriptors()
549 alx->rxq.rrd_dma = alx->descmem.dma + in alx_alloc_descriptors()
550 sizeof(struct alx_txd) * alx->tx_ringsz; in alx_alloc_descriptors()
555 alx->rxq.rfd = in alx_alloc_descriptors()
556 (void *)((u8 *)alx->descmem.virt + in alx_alloc_descriptors()
557 sizeof(struct alx_txd) * alx->tx_ringsz + in alx_alloc_descriptors()
558 sizeof(struct alx_rrd) * alx->rx_ringsz); in alx_alloc_descriptors()
559 alx->rxq.rfd_dma = alx->descmem.dma + in alx_alloc_descriptors()
560 sizeof(struct alx_txd) * alx->tx_ringsz + in alx_alloc_descriptors()
561 sizeof(struct alx_rrd) * alx->rx_ringsz; in alx_alloc_descriptors()
565 kfree(alx->txq.bufs); in alx_alloc_descriptors()
566 kfree(alx->rxq.bufs); in alx_alloc_descriptors()
570 static int alx_alloc_rings(struct alx_priv *alx) in alx_alloc_rings() argument
574 err = alx_alloc_descriptors(alx); in alx_alloc_rings()
578 alx->int_mask &= ~ALX_ISR_ALL_QUEUES; in alx_alloc_rings()
579 alx->int_mask |= ALX_ISR_TX_Q0 | ALX_ISR_RX_Q0; in alx_alloc_rings()
580 alx->tx_ringsz = alx->tx_ringsz; in alx_alloc_rings()
582 netif_napi_add(alx->dev, &alx->napi, alx_poll, 64); in alx_alloc_rings()
584 alx_reinit_rings(alx); in alx_alloc_rings()
588 static void alx_free_rings(struct alx_priv *alx) in alx_free_rings() argument
590 netif_napi_del(&alx->napi); in alx_free_rings()
591 alx_free_buffers(alx); in alx_free_rings()
593 kfree(alx->txq.bufs); in alx_free_rings()
594 kfree(alx->rxq.bufs); in alx_free_rings()
596 dma_free_coherent(&alx->hw.pdev->dev, in alx_free_rings()
597 alx->descmem.size, in alx_free_rings()
598 alx->descmem.virt, in alx_free_rings()
599 alx->descmem.dma); in alx_free_rings()
602 static void alx_config_vector_mapping(struct alx_priv *alx) in alx_config_vector_mapping() argument
604 struct alx_hw *hw = &alx->hw; in alx_config_vector_mapping()
611 static void alx_irq_enable(struct alx_priv *alx) in alx_irq_enable() argument
613 struct alx_hw *hw = &alx->hw; in alx_irq_enable()
617 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_irq_enable()
621 static void alx_irq_disable(struct alx_priv *alx) in alx_irq_disable() argument
623 struct alx_hw *hw = &alx->hw; in alx_irq_disable()
629 synchronize_irq(alx->hw.pdev->irq); in alx_irq_disable()
632 static int alx_request_irq(struct alx_priv *alx) in alx_request_irq() argument
634 struct pci_dev *pdev = alx->hw.pdev; in alx_request_irq()
635 struct alx_hw *hw = &alx->hw; in alx_request_irq()
641 if (!pci_enable_msi(alx->hw.pdev)) { in alx_request_irq()
642 alx->msi = true; in alx_request_irq()
647 alx->dev->name, alx); in alx_request_irq()
651 pci_disable_msi(alx->hw.pdev); in alx_request_irq()
656 alx->dev->name, alx); in alx_request_irq()
659 alx_config_vector_mapping(alx); in alx_request_irq()
663 static void alx_free_irq(struct alx_priv *alx) in alx_free_irq() argument
665 struct pci_dev *pdev = alx->hw.pdev; in alx_free_irq()
667 free_irq(pdev->irq, alx); in alx_free_irq()
669 if (alx->msi) { in alx_free_irq()
670 pci_disable_msi(alx->hw.pdev); in alx_free_irq()
671 alx->msi = false; in alx_free_irq()
675 static int alx_identify_hw(struct alx_priv *alx) in alx_identify_hw() argument
677 struct alx_hw *hw = &alx->hw; in alx_identify_hw()
688 static int alx_init_sw(struct alx_priv *alx) in alx_init_sw() argument
690 struct pci_dev *pdev = alx->hw.pdev; in alx_init_sw()
691 struct alx_hw *hw = &alx->hw; in alx_init_sw()
694 err = alx_identify_hw(alx); in alx_init_sw()
700 alx->hw.lnk_patch = in alx_init_sw()
707 hw->mtu = alx->dev->mtu; in alx_init_sw()
708 alx->rxbuf_size = ALIGN(ALX_RAW_MTU(hw->mtu), 8); in alx_init_sw()
709 alx->tx_ringsz = 256; in alx_init_sw()
710 alx->rx_ringsz = 512; in alx_init_sw()
712 alx->int_mask = ALX_ISR_MISC; in alx_init_sw()
714 hw->ith_tpd = alx->tx_ringsz / 3; in alx_init_sw()
747 static void alx_netif_stop(struct alx_priv *alx) in alx_netif_stop() argument
749 alx->dev->trans_start = jiffies; in alx_netif_stop()
750 if (netif_carrier_ok(alx->dev)) { in alx_netif_stop()
751 netif_carrier_off(alx->dev); in alx_netif_stop()
752 netif_tx_disable(alx->dev); in alx_netif_stop()
753 napi_disable(&alx->napi); in alx_netif_stop()
757 static void alx_halt(struct alx_priv *alx) in alx_halt() argument
759 struct alx_hw *hw = &alx->hw; in alx_halt()
761 alx_netif_stop(alx); in alx_halt()
769 alx_irq_disable(alx); in alx_halt()
770 alx_free_buffers(alx); in alx_halt()
773 static void alx_configure(struct alx_priv *alx) in alx_configure() argument
775 struct alx_hw *hw = &alx->hw; in alx_configure()
779 __alx_set_rx_mode(alx->dev); in alx_configure()
784 static void alx_activate(struct alx_priv *alx) in alx_activate() argument
787 alx_reinit_rings(alx); in alx_activate()
788 alx_configure(alx); in alx_activate()
791 alx_write_mem32(&alx->hw, ALX_ISR, ~(u32)ALX_ISR_DIS); in alx_activate()
793 alx_irq_enable(alx); in alx_activate()
795 alx_schedule_link_check(alx); in alx_activate()
798 static void alx_reinit(struct alx_priv *alx) in alx_reinit() argument
802 alx_halt(alx); in alx_reinit()
803 alx_activate(alx); in alx_reinit()
808 struct alx_priv *alx = netdev_priv(netdev); in alx_change_mtu() local
819 alx->hw.mtu = mtu; in alx_change_mtu()
820 alx->rxbuf_size = mtu > ALX_DEF_RXBUF_SIZE ? in alx_change_mtu()
824 alx_reinit(alx); in alx_change_mtu()
828 static void alx_netif_start(struct alx_priv *alx) in alx_netif_start() argument
830 netif_tx_wake_all_queues(alx->dev); in alx_netif_start()
831 napi_enable(&alx->napi); in alx_netif_start()
832 netif_carrier_on(alx->dev); in alx_netif_start()
835 static int __alx_open(struct alx_priv *alx, bool resume) in __alx_open() argument
840 netif_carrier_off(alx->dev); in __alx_open()
842 err = alx_alloc_rings(alx); in __alx_open()
846 alx_configure(alx); in __alx_open()
848 err = alx_request_irq(alx); in __alx_open()
853 alx_write_mem32(&alx->hw, ALX_ISR, ~(u32)ALX_ISR_DIS); in __alx_open()
855 alx_irq_enable(alx); in __alx_open()
858 netif_tx_start_all_queues(alx->dev); in __alx_open()
860 alx_schedule_link_check(alx); in __alx_open()
864 alx_free_rings(alx); in __alx_open()
868 static void __alx_stop(struct alx_priv *alx) in __alx_stop() argument
870 alx_halt(alx); in __alx_stop()
871 alx_free_irq(alx); in __alx_stop()
872 alx_free_rings(alx); in __alx_stop()
893 static void alx_check_link(struct alx_priv *alx) in alx_check_link() argument
895 struct alx_hw *hw = &alx->hw; in alx_check_link()
912 spin_lock_irqsave(&alx->irq_lock, flags); in alx_check_link()
913 alx->int_mask |= ALX_ISR_PHY; in alx_check_link()
914 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_check_link()
915 spin_unlock_irqrestore(&alx->irq_lock, flags); in alx_check_link()
921 netif_info(alx, link, alx->dev, in alx_check_link()
928 alx_netif_start(alx); in alx_check_link()
931 alx_netif_stop(alx); in alx_check_link()
932 netif_info(alx, link, alx->dev, "Link Down\n"); in alx_check_link()
936 alx_irq_disable(alx); in alx_check_link()
939 err = alx_reinit_rings(alx); in alx_check_link()
942 alx_configure(alx); in alx_check_link()
945 alx_irq_enable(alx); in alx_check_link()
951 alx_schedule_reset(alx); in alx_check_link()
967 struct alx_priv *alx; in alx_link_check() local
969 alx = container_of(work, struct alx_priv, link_check_wk); in alx_link_check()
972 alx_check_link(alx); in alx_link_check()
978 struct alx_priv *alx = container_of(work, struct alx_priv, reset_wk); in alx_reset() local
981 alx_reinit(alx); in alx_reset()
1004 static int alx_map_tx_skb(struct alx_priv *alx, struct sk_buff *skb) in alx_map_tx_skb() argument
1006 struct alx_tx_queue *txq = &alx->txq; in alx_map_tx_skb()
1015 dma = dma_map_single(&alx->hw.pdev->dev, skb->data, maplen, in alx_map_tx_skb()
1017 if (dma_mapping_error(&alx->hw.pdev->dev, dma)) in alx_map_tx_skb()
1031 if (++txq->write_idx == alx->tx_ringsz) in alx_map_tx_skb()
1038 dma = skb_frag_dma_map(&alx->hw.pdev->dev, frag, 0, in alx_map_tx_skb()
1040 if (dma_mapping_error(&alx->hw.pdev->dev, dma)) in alx_map_tx_skb()
1053 if (++txq->write_idx == alx->tx_ringsz) in alx_map_tx_skb()
1061 alx_free_txbuf(alx, f); in alx_map_tx_skb()
1062 if (++f == alx->tx_ringsz) in alx_map_tx_skb()
1071 struct alx_priv *alx = netdev_priv(netdev); in alx_start_xmit() local
1072 struct alx_tx_queue *txq = &alx->txq; in alx_start_xmit()
1076 if (alx_tpd_avail(alx) < tpdreq) { in alx_start_xmit()
1077 netif_stop_queue(alx->dev); in alx_start_xmit()
1087 if (alx_map_tx_skb(alx, skb) < 0) in alx_start_xmit()
1090 netdev_sent_queue(alx->dev, skb->len); in alx_start_xmit()
1094 alx_write_mem16(&alx->hw, ALX_TPD_PRI0_PIDX, txq->write_idx); in alx_start_xmit()
1096 if (alx_tpd_avail(alx) < alx->tx_ringsz/8) in alx_start_xmit()
1097 netif_stop_queue(alx->dev); in alx_start_xmit()
1108 struct alx_priv *alx = netdev_priv(dev); in alx_tx_timeout() local
1110 alx_schedule_reset(alx); in alx_tx_timeout()
1116 struct alx_priv *alx = netdev_priv(netdev); in alx_mdio_read() local
1117 struct alx_hw *hw = &alx->hw; in alx_mdio_read()
1137 struct alx_priv *alx = netdev_priv(netdev); in alx_mdio_write() local
1138 struct alx_hw *hw = &alx->hw; in alx_mdio_write()
1151 struct alx_priv *alx = netdev_priv(netdev); in alx_ioctl() local
1156 return mdio_mii_ioctl(&alx->hw.mdio, if_mii(ifr), cmd); in alx_ioctl()
1162 struct alx_priv *alx = netdev_priv(netdev); in alx_poll_controller() local
1164 if (alx->msi) in alx_poll_controller()
1165 alx_intr_msi(0, alx); in alx_poll_controller()
1167 alx_intr_legacy(0, alx); in alx_poll_controller()
1174 struct alx_priv *alx = netdev_priv(dev); in alx_get_stats64() local
1175 struct alx_hw_stats *hw_stats = &alx->hw.stats; in alx_get_stats64()
1177 spin_lock(&alx->stats_lock); in alx_get_stats64()
1179 alx_update_hw_stats(&alx->hw); in alx_get_stats64()
1215 spin_unlock(&alx->stats_lock); in alx_get_stats64()
1240 struct alx_priv *alx; in alx_probe() local
1281 netdev = alloc_etherdev(sizeof(*alx)); in alx_probe()
1288 alx = netdev_priv(netdev); in alx_probe()
1289 spin_lock_init(&alx->hw.mdio_lock); in alx_probe()
1290 spin_lock_init(&alx->irq_lock); in alx_probe()
1291 spin_lock_init(&alx->stats_lock); in alx_probe()
1292 alx->dev = netdev; in alx_probe()
1293 alx->hw.pdev = pdev; in alx_probe()
1294 alx->msg_enable = NETIF_MSG_LINK | NETIF_MSG_HW | NETIF_MSG_IFUP | in alx_probe()
1296 hw = &alx->hw; in alx_probe()
1297 pci_set_drvdata(pdev, alx); in alx_probe()
1314 err = alx_init_sw(alx); in alx_probe()
1372 INIT_WORK(&alx->link_check_wk, alx_link_check); in alx_probe()
1373 INIT_WORK(&alx->reset_wk, alx_reset); in alx_probe()
1401 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_remove() local
1402 struct alx_hw *hw = &alx->hw; in alx_remove()
1404 cancel_work_sync(&alx->link_check_wk); in alx_remove()
1405 cancel_work_sync(&alx->reset_wk); in alx_remove()
1410 unregister_netdev(alx->dev); in alx_remove()
1418 free_netdev(alx->dev); in alx_remove()
1425 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_suspend() local
1427 if (!netif_running(alx->dev)) in alx_suspend()
1429 netif_device_detach(alx->dev); in alx_suspend()
1430 __alx_stop(alx); in alx_suspend()
1437 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_resume() local
1438 struct alx_hw *hw = &alx->hw; in alx_resume()
1442 if (!netif_running(alx->dev)) in alx_resume()
1444 netif_device_attach(alx->dev); in alx_resume()
1445 return __alx_open(alx, true); in alx_resume()
1458 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_pci_error_detected() local
1459 struct net_device *netdev = alx->dev; in alx_pci_error_detected()
1468 alx_halt(alx); in alx_pci_error_detected()
1483 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_pci_error_slot_reset() local
1484 struct alx_hw *hw = &alx->hw; in alx_pci_error_slot_reset()
1511 struct alx_priv *alx = pci_get_drvdata(pdev); in alx_pci_error_resume() local
1512 struct net_device *netdev = alx->dev; in alx_pci_error_resume()
1519 alx_activate(alx); in alx_pci_error_resume()