Lines Matching refs:hw
48 u16 fm10k_read_pci_cfg_word(struct fm10k_hw *hw, u32 reg) in fm10k_read_pci_cfg_word() argument
50 struct fm10k_intfc *interface = hw->back; in fm10k_read_pci_cfg_word()
53 if (FM10K_REMOVED(hw->hw_addr)) in fm10k_read_pci_cfg_word()
58 fm10k_write_flush(hw); in fm10k_read_pci_cfg_word()
63 u32 fm10k_read_reg(struct fm10k_hw *hw, int reg) in fm10k_read_reg() argument
65 u32 __iomem *hw_addr = ACCESS_ONCE(hw->hw_addr); in fm10k_read_reg()
73 struct fm10k_intfc *interface = hw->back; in fm10k_read_reg()
76 hw->hw_addr = NULL; in fm10k_read_reg()
86 struct fm10k_hw *hw = &interface->hw; in fm10k_hw_ready() local
88 fm10k_write_flush(hw); in fm10k_hw_ready()
90 return FM10K_REMOVED(hw->hw_addr) ? -ENODEV : 0; in fm10k_hw_ready()
128 if (netif_device_present(netdev) || interface->hw.hw_addr) in fm10k_detach_subtask()
142 struct fm10k_hw *hw = &interface->hw; in fm10k_reinit() local
166 err = hw->mac.ops.reset_hw(hw) ? : hw->mac.ops.init_hw(hw); in fm10k_reinit()
207 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_swpri_map() local
214 if (hw->mac.type != fm10k_mac_pf) in fm10k_configure_swpri_map()
219 fm10k_write_reg(hw, FM10K_SWPRI_MAP(i), in fm10k_configure_swpri_map()
229 struct fm10k_hw *hw = &interface->hw; in fm10k_watchdog_update_host_state() local
249 err = hw->mac.ops.get_host_state(hw, &interface->host_ready); in fm10k_watchdog_update_host_state()
317 struct fm10k_hw *hw = &interface->hw; in fm10k_update_stats() local
360 hw->mac.ops.update_hw_stats(hw, &interface->stats); in fm10k_update_stats()
362 for (i = 0; i < hw->mac.max_queues; i++) { in fm10k_update_stats()
510 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_tx_ring() local
518 fm10k_write_reg(hw, FM10K_TXDCTL(reg_idx), 0); in fm10k_configure_tx_ring()
519 fm10k_write_flush(hw); in fm10k_configure_tx_ring()
524 fm10k_write_reg(hw, FM10K_TDBAL(reg_idx), tdba & DMA_BIT_MASK(32)); in fm10k_configure_tx_ring()
525 fm10k_write_reg(hw, FM10K_TDBAH(reg_idx), tdba >> 32); in fm10k_configure_tx_ring()
526 fm10k_write_reg(hw, FM10K_TDLEN(reg_idx), size); in fm10k_configure_tx_ring()
529 fm10k_write_reg(hw, FM10K_TDH(reg_idx), 0); in fm10k_configure_tx_ring()
530 fm10k_write_reg(hw, FM10K_TDT(reg_idx), 0); in fm10k_configure_tx_ring()
541 txint = ring->q_vector->v_idx + NON_Q_VECTORS(hw); in fm10k_configure_tx_ring()
545 fm10k_write_reg(hw, FM10K_TXINT(reg_idx), txint); in fm10k_configure_tx_ring()
548 fm10k_write_reg(hw, FM10K_PFVTCTL(reg_idx), in fm10k_configure_tx_ring()
552 fm10k_write_reg(hw, FM10K_TXDCTL(reg_idx), txdctl); in fm10k_configure_tx_ring()
565 struct fm10k_hw *hw = &interface->hw; in fm10k_enable_tx_ring() local
571 if (fm10k_read_reg(hw, FM10K_TXDCTL(reg_idx)) & FM10K_TXDCTL_ENABLE) in fm10k_enable_tx_ring()
577 txdctl = fm10k_read_reg(hw, FM10K_TXDCTL(reg_idx)); in fm10k_enable_tx_ring()
614 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_rx_ring() local
624 fm10k_write_reg(hw, FM10K_RXQCTL(reg_idx), 0); in fm10k_configure_rx_ring()
625 fm10k_write_flush(hw); in fm10k_configure_rx_ring()
630 fm10k_write_reg(hw, FM10K_RDBAL(reg_idx), rdba & DMA_BIT_MASK(32)); in fm10k_configure_rx_ring()
631 fm10k_write_reg(hw, FM10K_RDBAH(reg_idx), rdba >> 32); in fm10k_configure_rx_ring()
632 fm10k_write_reg(hw, FM10K_RDLEN(reg_idx), size); in fm10k_configure_rx_ring()
635 fm10k_write_reg(hw, FM10K_RDH(reg_idx), 0); in fm10k_configure_rx_ring()
636 fm10k_write_reg(hw, FM10K_RDT(reg_idx), 0); in fm10k_configure_rx_ring()
651 fm10k_write_reg(hw, FM10K_SRRCTL(reg_idx), srrctl); in fm10k_configure_rx_ring()
661 fm10k_write_reg(hw, FM10K_RXDCTL(reg_idx), rxdctl); in fm10k_configure_rx_ring()
664 ring->vid = hw->mac.default_vid; in fm10k_configure_rx_ring()
668 rxint = ring->q_vector->v_idx + NON_Q_VECTORS(hw); in fm10k_configure_rx_ring()
672 fm10k_write_reg(hw, FM10K_RXINT(reg_idx), rxint); in fm10k_configure_rx_ring()
675 fm10k_write_reg(hw, FM10K_RXQCTL(reg_idx), rxqctl); in fm10k_configure_rx_ring()
689 struct fm10k_hw *hw = &interface->hw; in fm10k_update_rx_drop_en() local
706 fm10k_write_reg(hw, FM10K_RXDCTL(reg_idx), rxdctl); in fm10k_update_rx_drop_en()
719 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_dglort() local
725 fm10k_write_reg(hw, FM10K_RSSRK(0, i), interface->rssrk[i]); in fm10k_configure_dglort()
729 fm10k_write_reg(hw, FM10K_RETA(0, i), interface->reta[i]); in fm10k_configure_dglort()
744 fm10k_write_reg(hw, FM10K_MRQC(0), mrqc); in fm10k_configure_dglort()
750 hw->mac.ops.configure_dglort_map(hw, &dglort); in fm10k_configure_dglort()
759 hw->mac.ops.configure_dglort_map(hw, &dglort); in fm10k_configure_dglort()
772 hw->mac.ops.configure_dglort_map(hw, &dglort); in fm10k_configure_dglort()
822 struct fm10k_hw *hw = &interface->hw; in fm10k_msix_mbx_vf() local
823 struct fm10k_mbx_info *mbx = &hw->mbx; in fm10k_msix_mbx_vf()
826 fm10k_write_reg(hw, FM10K_VFITR(FM10K_MBX_VECTOR), in fm10k_msix_mbx_vf()
831 mbx->ops.process(hw, mbx); in fm10k_msix_mbx_vf()
835 hw->mac.get_host_state = 1; in fm10k_msix_mbx_vf()
925 struct fm10k_hw *hw = &interface->hw; in fm10k_report_fault() local
937 err = hw->mac.ops.get_fault(hw, type, &fault); in fm10k_report_fault()
950 struct fm10k_hw *hw = &interface->hw; in fm10k_reset_drop_on_empty() local
958 maxholdq = fm10k_read_reg(hw, FM10K_MAXHOLDQ(7)); in fm10k_reset_drop_on_empty()
960 fm10k_write_reg(hw, FM10K_MAXHOLDQ(7), maxholdq); in fm10k_reset_drop_on_empty()
965 fm10k_write_reg(hw, FM10K_RXDCTL(q), rxdctl); in fm10k_reset_drop_on_empty()
981 maxholdq = fm10k_read_reg(hw, FM10K_MAXHOLDQ(q / 32)); in fm10k_reset_drop_on_empty()
983 fm10k_write_reg(hw, FM10K_MAXHOLDQ(q / 32), maxholdq); in fm10k_reset_drop_on_empty()
990 struct fm10k_hw *hw = &interface->hw; in fm10k_msix_mbx_pf() local
991 struct fm10k_mbx_info *mbx = &hw->mbx; in fm10k_msix_mbx_pf()
995 eicr = fm10k_read_reg(hw, FM10K_EICR); in fm10k_msix_mbx_pf()
996 fm10k_write_reg(hw, FM10K_EICR, eicr & (FM10K_EICR_MAILBOX | in fm10k_msix_mbx_pf()
1008 mbx->ops.process(hw, mbx); in fm10k_msix_mbx_pf()
1021 hw->mac.dglort_map = FM10K_DGLORTMAP_NONE; in fm10k_msix_mbx_pf()
1025 hw->mac.get_host_state = 1; in fm10k_msix_mbx_pf()
1031 fm10k_write_reg(hw, FM10K_ITR(FM10K_MBX_VECTOR), in fm10k_msix_mbx_pf()
1040 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_free_irq() local
1044 hw->mbx.ops.disconnect(hw, &hw->mbx); in fm10k_mbx_free_irq()
1047 if (hw->mac.type == fm10k_mac_pf) { in fm10k_mbx_free_irq()
1048 fm10k_write_reg(hw, FM10K_EIMR, in fm10k_mbx_free_irq()
1062 fm10k_write_reg(hw, itr_reg, FM10K_ITR_MASK_SET); in fm10k_mbx_free_irq()
1067 static s32 fm10k_mbx_mac_addr(struct fm10k_hw *hw, u32 **results, in fm10k_mbx_mac_addr() argument
1070 bool vlan_override = hw->mac.vlan_override; in fm10k_mbx_mac_addr()
1071 u16 default_vid = hw->mac.default_vid; in fm10k_mbx_mac_addr()
1075 err = fm10k_msg_mac_vlan_vf(hw, results, mbx); in fm10k_mbx_mac_addr()
1079 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_mbx_mac_addr()
1082 if (is_valid_ether_addr(hw->mac.perm_addr) && in fm10k_mbx_mac_addr()
1083 memcmp(hw->mac.perm_addr, hw->mac.addr, ETH_ALEN)) in fm10k_mbx_mac_addr()
1087 if ((vlan_override != hw->mac.vlan_override) || in fm10k_mbx_mac_addr()
1088 (default_vid != hw->mac.default_vid)) in fm10k_mbx_mac_addr()
1094 static s32 fm10k_1588_msg_vf(struct fm10k_hw *hw, u32 **results, in fm10k_1588_msg_vf() argument
1106 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_1588_msg_vf()
1114 static s32 fm10k_mbx_error(struct fm10k_hw *hw, u32 **results, in fm10k_mbx_error() argument
1120 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_mbx_error()
1141 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq_vf() local
1148 err = hw->mbx.ops.register_handlers(&hw->mbx, vf_mbx_data); in fm10k_mbx_request_irq_vf()
1162 fm10k_write_reg(hw, FM10K_VFINT_MAP, itr); in fm10k_mbx_request_irq_vf()
1165 fm10k_write_reg(hw, FM10K_VFITR(entry->entry), FM10K_ITR_ENABLE); in fm10k_mbx_request_irq_vf()
1170 static s32 fm10k_lport_map(struct fm10k_hw *hw, u32 **results, in fm10k_lport_map() argument
1174 u32 dglort_map = hw->mac.dglort_map; in fm10k_lport_map()
1177 err = fm10k_msg_lport_map_pf(hw, results, mbx); in fm10k_lport_map()
1181 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_lport_map()
1184 if (dglort_map != hw->mac.dglort_map) in fm10k_lport_map()
1190 static s32 fm10k_update_pvid(struct fm10k_hw *hw, u32 **results, in fm10k_update_pvid() argument
1208 if (!fm10k_glort_valid_pf(hw, glort)) in fm10k_update_pvid()
1215 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_update_pvid()
1223 if (pvid != hw->mac.default_vid) in fm10k_update_pvid()
1226 hw->mac.default_vid = pvid; in fm10k_update_pvid()
1231 static s32 fm10k_1588_msg_pf(struct fm10k_hw *hw, u32 **results, in fm10k_1588_msg_pf() argument
1246 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_1588_msg_pf()
1260 if (!fm10k_glort_valid_pf(hw, sglort)) in fm10k_1588_msg_pf()
1277 vf_idx = (hw->mac.dglort_map & FM10K_DGLORTMAP_NONE) - sglort; in fm10k_1588_msg_pf()
1284 err = hw->iov.ops.report_timestamp(hw, &iov_data->vf_info[vf_idx], in fm10k_1588_msg_pf()
1308 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq_pf() local
1316 err = hw->mbx.ops.register_handlers(&hw->mbx, pf_mbx_data); in fm10k_mbx_request_irq_pf()
1330 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_PCIeFault), other_itr); in fm10k_mbx_request_irq_pf()
1331 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_SwitchUpDown), other_itr); in fm10k_mbx_request_irq_pf()
1332 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_SRAM), other_itr); in fm10k_mbx_request_irq_pf()
1333 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_MaxHoldTime), other_itr); in fm10k_mbx_request_irq_pf()
1334 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_VFLR), other_itr); in fm10k_mbx_request_irq_pf()
1337 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_Mailbox), mbx_itr); in fm10k_mbx_request_irq_pf()
1340 fm10k_write_reg(hw, FM10K_EIMR, FM10K_EIMR_ENABLE(PCA_FAULT) | in fm10k_mbx_request_irq_pf()
1350 fm10k_write_reg(hw, FM10K_ITR(entry->entry), FM10K_ITR_ENABLE); in fm10k_mbx_request_irq_pf()
1357 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq() local
1361 if (hw->mac.type == fm10k_mac_pf) in fm10k_mbx_request_irq()
1368 err = hw->mbx.ops.connect(hw, &hw->mbx); in fm10k_mbx_request_irq()
1382 struct fm10k_hw *hw = &interface->hw; in fm10k_qv_free_irq() local
1385 entry = &interface->msix_entries[NON_Q_VECTORS(hw) + vector]; in fm10k_qv_free_irq()
1415 struct fm10k_hw *hw = &interface->hw; in fm10k_qv_request_irq() local
1420 entry = &interface->msix_entries[NON_Q_VECTORS(hw)]; in fm10k_qv_request_irq()
1442 q_vector->itr = (hw->mac.type == fm10k_mac_pf) ? in fm10k_qv_request_irq()
1488 struct fm10k_hw *hw = &interface->hw; in fm10k_up() local
1491 hw->mac.ops.start_hw(hw); in fm10k_up()
1500 hw->mac.ops.update_int_moderator(hw); in fm10k_up()
1515 hw->mac.get_host_state = 1; in fm10k_up()
1533 struct fm10k_hw *hw = &interface->hw; in fm10k_down() local
1558 hw->mac.ops.stop_hw(hw); in fm10k_down()
1576 struct fm10k_hw *hw = &interface->hw; in fm10k_sw_init() local
1584 hw->back = interface; in fm10k_sw_init()
1585 hw->hw_addr = interface->uc_addr; in fm10k_sw_init()
1588 hw->vendor_id = pdev->vendor; in fm10k_sw_init()
1589 hw->device_id = pdev->device; in fm10k_sw_init()
1590 hw->revision_id = pdev->revision; in fm10k_sw_init()
1591 hw->subsystem_vendor_id = pdev->subsystem_vendor; in fm10k_sw_init()
1592 hw->subsystem_device_id = pdev->subsystem_device; in fm10k_sw_init()
1595 memcpy(&hw->mac.ops, fi->mac_ops, sizeof(hw->mac.ops)); in fm10k_sw_init()
1596 hw->mac.type = fi->mac; in fm10k_sw_init()
1600 memcpy(&hw->iov.ops, fi->iov_ops, sizeof(hw->iov.ops)); in fm10k_sw_init()
1605 fi->get_invariants(hw); in fm10k_sw_init()
1608 if (hw->mac.ops.get_bus_info) in fm10k_sw_init()
1609 hw->mac.ops.get_bus_info(hw); in fm10k_sw_init()
1612 if (hw->mac.ops.set_dma_mask) in fm10k_sw_init()
1613 hw->mac.ops.set_dma_mask(hw, dma_get_mask(&pdev->dev)); in fm10k_sw_init()
1625 err = hw->mac.ops.reset_hw(hw) ? : hw->mac.ops.init_hw(hw); in fm10k_sw_init()
1632 hw->mac.ops.update_hw_stats(hw, &interface->stats); in fm10k_sw_init()
1635 pci_sriov_set_totalvfs(pdev, hw->iov.total_vfs); in fm10k_sw_init()
1638 eth_random_addr(hw->mac.addr); in fm10k_sw_init()
1641 err = hw->mac.ops.read_mac_addr(hw); in fm10k_sw_init()
1649 memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len); in fm10k_sw_init()
1650 memcpy(netdev->perm_addr, hw->mac.addr, netdev->addr_len); in fm10k_sw_init()
1658 if (fm10k_read_reg(hw, FM10K_CTRL) & FM10K_CTRL_BAR4_ALLOWED) in fm10k_sw_init()
1661 hw->sw_addr = interface->sw_addr; in fm10k_sw_init()
1664 if (hw->mac.type != fm10k_mac_pf) { in fm10k_sw_init()
1708 struct fm10k_hw *hw = &interface->hw; in fm10k_slot_warn() local
1710 if (hw->mac.ops.is_slot_appropriate(hw)) in fm10k_slot_warn()
1715 (hw->bus_caps.width == fm10k_bus_width_pcie_x1 ? "x1" : in fm10k_slot_warn()
1716 hw->bus_caps.width == fm10k_bus_width_pcie_x4 ? "x4" : in fm10k_slot_warn()
1718 (hw->bus_caps.speed == fm10k_bus_speed_2500 ? "2.5GT/s" : in fm10k_slot_warn()
1719 hw->bus_caps.speed == fm10k_bus_speed_5000 ? "5.0GT/s" : in fm10k_slot_warn()
1741 struct fm10k_hw *hw; in fm10k_probe() local
1797 hw = &interface->hw; in fm10k_probe()
1841 (hw->bus.speed == fm10k_bus_speed_8000 ? "8.0GT/s" : in fm10k_probe()
1842 hw->bus.speed == fm10k_bus_speed_5000 ? "5.0GT/s" : in fm10k_probe()
1843 hw->bus.speed == fm10k_bus_speed_2500 ? "2.5GT/s" : in fm10k_probe()
1845 (hw->bus.width == fm10k_bus_width_pcie_x8 ? "x8" : in fm10k_probe()
1846 hw->bus.width == fm10k_bus_width_pcie_x4 ? "x4" : in fm10k_probe()
1847 hw->bus.width == fm10k_bus_width_pcie_x1 ? "x1" : in fm10k_probe()
1849 (hw->bus.payload == fm10k_bus_payload_128 ? "128B" : in fm10k_probe()
1850 hw->bus.payload == fm10k_bus_payload_256 ? "256B" : in fm10k_probe()
1851 hw->bus.payload == fm10k_bus_payload_512 ? "512B" : in fm10k_probe()
1949 struct fm10k_hw *hw = &interface->hw; in fm10k_resume() local
1970 hw->hw_addr = interface->uc_addr; in fm10k_resume()
1973 err = hw->mac.ops.init_hw(&interface->hw); in fm10k_resume()
1978 hw->mac.ops.rebind_hw_stats(hw, &interface->stats); in fm10k_resume()
2104 interface->hw.hw_addr = interface->uc_addr; in fm10k_io_slot_reset()
2128 struct fm10k_hw *hw = &interface->hw; in fm10k_io_resume() local
2132 hw->mac.ops.init_hw(&interface->hw); in fm10k_io_resume()
2135 hw->mac.ops.rebind_hw_stats(hw, &interface->stats); in fm10k_io_resume()