Lines Matching refs:hw
60 dma_unmap_single(&alx->hw.pdev->dev, in alx_free_txbuf()
92 dma = dma_map_single(&alx->hw.pdev->dev, in alx_refill_rx_ring()
95 if (dma_mapping_error(&alx->hw.pdev->dev, dma)) { in alx_refill_rx_ring()
124 alx_write_mem16(&alx->hw, ALX_RFD_PIDX, cur); in alx_refill_rx_ring()
147 hw_read_idx = alx_read_mem16(&alx->hw, ALX_TPD_PRI0_CIDX); in alx_clean_tx_irq()
211 dma_unmap_single(&alx->hw.pdev->dev, in alx_clean_rx_irq()
268 struct alx_hw *hw = &alx->hw; in alx_poll() local
284 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_poll()
287 alx_post_write(hw); in alx_poll()
294 struct alx_hw *hw = &alx->hw; in alx_intr_handle() local
300 alx_write_mem32(hw, ALX_ISR, intr | ALX_ISR_DIS); in alx_intr_handle()
304 netif_warn(alx, hw, alx->dev, in alx_intr_handle()
331 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_intr_handle()
333 alx_write_mem32(hw, ALX_ISR, 0); in alx_intr_handle()
344 return alx_intr_handle(alx, alx_read_mem32(&alx->hw, ALX_ISR)); in alx_intr_msi()
350 struct alx_hw *hw = &alx->hw; in alx_intr_legacy() local
353 intr = alx_read_mem32(hw, ALX_ISR); in alx_intr_legacy()
363 struct alx_hw *hw = &alx->hw; in alx_init_ring_ptrs() local
369 alx_write_mem32(hw, ALX_RX_BASE_ADDR_HI, addr_hi); 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()
378 alx_write_mem32(hw, ALX_TX_BASE_ADDR_HI, addr_hi); 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()
383 alx_write_mem32(hw, ALX_SRAM9, ALX_SRAM_LOAD_PTR); in alx_init_ring_ptrs()
417 dma_unmap_single(&alx->hw.pdev->dev, in alx_free_rxring_buf()
451 static void alx_add_mc_addr(struct alx_hw *hw, const u8 *addr, u32 *mc_hash) in alx_add_mc_addr() argument
465 struct alx_hw *hw = &alx->hw; in __alx_set_rx_mode() local
471 alx_add_mc_addr(hw, ha->addr, mc_hash); in __alx_set_rx_mode()
473 alx_write_mem32(hw, ALX_HASH_TBL0, mc_hash[0]); in __alx_set_rx_mode()
474 alx_write_mem32(hw, ALX_HASH_TBL1, mc_hash[1]); in __alx_set_rx_mode()
477 hw->rx_ctrl &= ~(ALX_MAC_CTRL_MULTIALL_EN | ALX_MAC_CTRL_PROMISC_EN); in __alx_set_rx_mode()
479 hw->rx_ctrl |= ALX_MAC_CTRL_PROMISC_EN; in __alx_set_rx_mode()
481 hw->rx_ctrl |= ALX_MAC_CTRL_MULTIALL_EN; in __alx_set_rx_mode()
483 alx_write_mem32(hw, ALX_MAC_CTRL, hw->rx_ctrl); in __alx_set_rx_mode()
494 struct alx_hw *hw = &alx->hw; in alx_set_mac_address() local
504 memcpy(hw->mac_addr, addr->sa_data, netdev->addr_len); in alx_set_mac_address()
505 alx_set_macaddr(hw, hw->mac_addr); in alx_set_mac_address()
533 alx->descmem.virt = dma_zalloc_coherent(&alx->hw.pdev->dev, in alx_alloc_descriptors()
596 dma_free_coherent(&alx->hw.pdev->dev, in alx_free_rings()
604 struct alx_hw *hw = &alx->hw; in alx_config_vector_mapping() local
606 alx_write_mem32(hw, ALX_MSI_MAP_TBL1, 0); in alx_config_vector_mapping()
607 alx_write_mem32(hw, ALX_MSI_MAP_TBL2, 0); in alx_config_vector_mapping()
608 alx_write_mem32(hw, ALX_MSI_ID_MAP, 0); in alx_config_vector_mapping()
613 struct alx_hw *hw = &alx->hw; in alx_irq_enable() local
616 alx_write_mem32(hw, ALX_ISR, 0); in alx_irq_enable()
617 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_irq_enable()
618 alx_post_write(hw); in alx_irq_enable()
623 struct alx_hw *hw = &alx->hw; in alx_irq_disable() local
625 alx_write_mem32(hw, ALX_ISR, ALX_ISR_DIS); in alx_irq_disable()
626 alx_write_mem32(hw, ALX_IMR, 0); in alx_irq_disable()
627 alx_post_write(hw); in alx_irq_disable()
629 synchronize_irq(alx->hw.pdev->irq); in alx_irq_disable()
634 struct pci_dev *pdev = alx->hw.pdev; in alx_request_irq()
635 struct alx_hw *hw = &alx->hw; in alx_request_irq() local
639 msi_ctrl = (hw->imt >> 1) << ALX_MSI_RETRANS_TM_SHIFT; in alx_request_irq()
641 if (!pci_enable_msi(alx->hw.pdev)) { in alx_request_irq()
644 alx_write_mem32(hw, ALX_MSI_RETRANS_TIMER, in alx_request_irq()
651 pci_disable_msi(alx->hw.pdev); in alx_request_irq()
654 alx_write_mem32(hw, ALX_MSI_RETRANS_TIMER, 0); in alx_request_irq()
665 struct pci_dev *pdev = alx->hw.pdev; in alx_free_irq()
670 pci_disable_msi(alx->hw.pdev); in alx_free_irq()
677 struct alx_hw *hw = &alx->hw; in alx_identify_hw() local
678 int rev = alx_hw_revision(hw); in alx_identify_hw()
683 hw->max_dma_chnl = rev >= ALX_REV_B0 ? 4 : 2; in alx_identify_hw()
690 struct pci_dev *pdev = alx->hw.pdev; in alx_init_sw()
691 struct alx_hw *hw = &alx->hw; in alx_init_sw() local
700 alx->hw.lnk_patch = in alx_init_sw()
706 hw->smb_timer = 400; 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()
711 hw->imt = 200; in alx_init_sw()
713 hw->dma_chnl = hw->max_dma_chnl; in alx_init_sw()
714 hw->ith_tpd = alx->tx_ringsz / 3; in alx_init_sw()
715 hw->link_speed = SPEED_UNKNOWN; in alx_init_sw()
716 hw->duplex = DUPLEX_UNKNOWN; in alx_init_sw()
717 hw->adv_cfg = ADVERTISED_Autoneg | in alx_init_sw()
723 hw->flowctrl = ALX_FC_ANEG | ALX_FC_RX | ALX_FC_TX; in alx_init_sw()
725 hw->rx_ctrl = ALX_MAC_CTRL_WOLSPED_SWEN | in alx_init_sw()
759 struct alx_hw *hw = &alx->hw; in alx_halt() local
762 hw->link_speed = SPEED_UNKNOWN; in alx_halt()
763 hw->duplex = DUPLEX_UNKNOWN; in alx_halt()
765 alx_reset_mac(hw); in alx_halt()
768 alx_enable_aspm(hw, false, false); in alx_halt()
775 struct alx_hw *hw = &alx->hw; in alx_configure() local
777 alx_configure_basic(hw); in alx_configure()
778 alx_disable_rss(hw); in alx_configure()
781 alx_write_mem32(hw, ALX_MAC_CTRL, hw->rx_ctrl); in alx_configure()
791 alx_write_mem32(&alx->hw, ALX_ISR, ~(u32)ALX_ISR_DIS); in alx_activate()
819 alx->hw.mtu = mtu; in alx_change_mtu()
853 alx_write_mem32(&alx->hw, ALX_ISR, ~(u32)ALX_ISR_DIS); in __alx_open()
875 static const char *alx_speed_desc(struct alx_hw *hw) in alx_speed_desc() argument
877 switch (alx_speed_to_ethadv(hw->link_speed, hw->duplex)) { in alx_speed_desc()
895 struct alx_hw *hw = &alx->hw; in alx_check_link() local
904 alx_clear_phy_intr(hw); in alx_check_link()
906 old_speed = hw->link_speed; in alx_check_link()
907 old_duplex = hw->duplex; in alx_check_link()
908 err = alx_read_phy_link(hw); in alx_check_link()
914 alx_write_mem32(hw, ALX_IMR, alx->int_mask); in alx_check_link()
917 if (old_speed == hw->link_speed) in alx_check_link()
920 if (hw->link_speed != SPEED_UNKNOWN) { in alx_check_link()
922 "NIC Up: %s\n", alx_speed_desc(hw)); in alx_check_link()
923 alx_post_phy_link(hw); in alx_check_link()
924 alx_enable_aspm(hw, true, true); in alx_check_link()
925 alx_start_mac(hw); in alx_check_link()
933 err = alx_reset_mac(hw); in alx_check_link()
943 alx_enable_aspm(hw, false, true); in alx_check_link()
944 alx_post_phy_link(hw); in alx_check_link()
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()
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()
1094 alx_write_mem16(&alx->hw, ALX_TPD_PRI0_PIDX, txq->write_idx); in alx_start_xmit()
1117 struct alx_hw *hw = &alx->hw; in alx_mdio_read() local
1121 if (prtad != hw->mdio.prtad) in alx_mdio_read()
1125 err = alx_read_phy_reg(hw, addr, &val); in alx_mdio_read()
1127 err = alx_read_phy_ext(hw, devad, addr, &val); in alx_mdio_read()
1138 struct alx_hw *hw = &alx->hw; in alx_mdio_write() local
1140 if (prtad != hw->mdio.prtad) in alx_mdio_write()
1144 return alx_write_phy_reg(hw, addr, val); in alx_mdio_write()
1146 return alx_write_phy_ext(hw, devad, addr, val); in alx_mdio_write()
1156 return mdio_mii_ioctl(&alx->hw.mdio, if_mii(ifr), cmd); in alx_ioctl()
1175 struct alx_hw_stats *hw_stats = &alx->hw.stats; in alx_get_stats64()
1179 alx_update_hw_stats(&alx->hw); in alx_get_stats64()
1241 struct alx_hw *hw; in alx_probe() local
1289 spin_lock_init(&alx->hw.mdio_lock); in alx_probe()
1293 alx->hw.pdev = pdev; in alx_probe()
1296 hw = &alx->hw; in alx_probe()
1299 hw->hw_addr = pci_ioremap_bar(pdev, 0); in alx_probe()
1300 if (!hw->hw_addr) { in alx_probe()
1320 alx_reset_pcie(hw); in alx_probe()
1322 phy_configured = alx_phy_configured(hw); in alx_probe()
1325 alx_reset_phy(hw); in alx_probe()
1327 err = alx_reset_mac(hw); in alx_probe()
1335 err = alx_setup_speed_duplex(hw, hw->adv_cfg, hw->flowctrl); in alx_probe()
1346 if (alx_get_perm_macaddr(hw, hw->perm_addr)) { in alx_probe()
1350 memcpy(hw->perm_addr, netdev->dev_addr, netdev->addr_len); in alx_probe()
1353 memcpy(hw->mac_addr, hw->perm_addr, ETH_ALEN); in alx_probe()
1354 memcpy(netdev->dev_addr, hw->mac_addr, ETH_ALEN); in alx_probe()
1355 memcpy(netdev->perm_addr, hw->perm_addr, ETH_ALEN); in alx_probe()
1357 hw->mdio.prtad = 0; in alx_probe()
1358 hw->mdio.mmds = 0; in alx_probe()
1359 hw->mdio.dev = netdev; in alx_probe()
1360 hw->mdio.mode_support = MDIO_SUPPORTS_C45 | in alx_probe()
1363 hw->mdio.mdio_read = alx_mdio_read; in alx_probe()
1364 hw->mdio.mdio_write = alx_mdio_write; in alx_probe()
1366 if (!alx_get_phy_info(hw)) { in alx_probe()
1389 iounmap(hw->hw_addr); in alx_probe()
1402 struct alx_hw *hw = &alx->hw; in alx_remove() local
1408 alx_set_macaddr(hw, hw->perm_addr); in alx_remove()
1411 iounmap(hw->hw_addr); in alx_remove()
1438 struct alx_hw *hw = &alx->hw; in alx_resume() local
1440 alx_reset_phy(hw); in alx_resume()
1484 struct alx_hw *hw = &alx->hw; in alx_pci_error_slot_reset() local
1498 alx_reset_pcie(hw); in alx_pci_error_slot_reset()
1499 if (!alx_reset_mac(hw)) in alx_pci_error_slot_reset()