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()
174 if (hw->mac.type == fm10k_mac_vf) { in fm10k_reinit()
175 if (is_valid_ether_addr(hw->mac.perm_addr)) { in fm10k_reinit()
176 ether_addr_copy(hw->mac.addr, hw->mac.perm_addr); in fm10k_reinit()
177 ether_addr_copy(netdev->perm_addr, hw->mac.perm_addr); in fm10k_reinit()
178 ether_addr_copy(netdev->dev_addr, hw->mac.perm_addr); in fm10k_reinit()
182 if (hw->mac.vlan_override) in fm10k_reinit()
222 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_swpri_map() local
229 if (hw->mac.type != fm10k_mac_pf) in fm10k_configure_swpri_map()
234 fm10k_write_reg(hw, FM10K_SWPRI_MAP(i), in fm10k_configure_swpri_map()
244 struct fm10k_hw *hw = &interface->hw; in fm10k_watchdog_update_host_state() local
264 err = hw->mac.ops.get_host_state(hw, &interface->host_ready); in fm10k_watchdog_update_host_state()
330 struct fm10k_hw *hw = &interface->hw; in fm10k_update_stats() local
391 hw->mac.ops.update_hw_stats(hw, &interface->stats); in fm10k_update_stats()
393 for (i = 0; i < hw->mac.max_queues; i++) { in fm10k_update_stats()
541 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_tx_ring() local
549 fm10k_write_reg(hw, FM10K_TXDCTL(reg_idx), 0); in fm10k_configure_tx_ring()
550 fm10k_write_flush(hw); in fm10k_configure_tx_ring()
555 fm10k_write_reg(hw, FM10K_TDBAL(reg_idx), tdba & DMA_BIT_MASK(32)); in fm10k_configure_tx_ring()
556 fm10k_write_reg(hw, FM10K_TDBAH(reg_idx), tdba >> 32); in fm10k_configure_tx_ring()
557 fm10k_write_reg(hw, FM10K_TDLEN(reg_idx), size); in fm10k_configure_tx_ring()
560 fm10k_write_reg(hw, FM10K_TDH(reg_idx), 0); in fm10k_configure_tx_ring()
561 fm10k_write_reg(hw, FM10K_TDT(reg_idx), 0); in fm10k_configure_tx_ring()
572 txint = ring->q_vector->v_idx + NON_Q_VECTORS(hw); in fm10k_configure_tx_ring()
576 fm10k_write_reg(hw, FM10K_TXINT(reg_idx), txint); in fm10k_configure_tx_ring()
579 fm10k_write_reg(hw, FM10K_PFVTCTL(reg_idx), in fm10k_configure_tx_ring()
583 fm10k_write_reg(hw, FM10K_TXDCTL(reg_idx), txdctl); in fm10k_configure_tx_ring()
596 struct fm10k_hw *hw = &interface->hw; in fm10k_enable_tx_ring() local
602 if (fm10k_read_reg(hw, FM10K_TXDCTL(reg_idx)) & FM10K_TXDCTL_ENABLE) in fm10k_enable_tx_ring()
608 txdctl = fm10k_read_reg(hw, FM10K_TXDCTL(reg_idx)); in fm10k_enable_tx_ring()
645 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_rx_ring() local
655 fm10k_write_reg(hw, FM10K_RXQCTL(reg_idx), 0); in fm10k_configure_rx_ring()
656 fm10k_write_flush(hw); in fm10k_configure_rx_ring()
661 fm10k_write_reg(hw, FM10K_RDBAL(reg_idx), rdba & DMA_BIT_MASK(32)); in fm10k_configure_rx_ring()
662 fm10k_write_reg(hw, FM10K_RDBAH(reg_idx), rdba >> 32); in fm10k_configure_rx_ring()
663 fm10k_write_reg(hw, FM10K_RDLEN(reg_idx), size); in fm10k_configure_rx_ring()
666 fm10k_write_reg(hw, FM10K_RDH(reg_idx), 0); in fm10k_configure_rx_ring()
667 fm10k_write_reg(hw, FM10K_RDT(reg_idx), 0); in fm10k_configure_rx_ring()
682 fm10k_write_reg(hw, FM10K_SRRCTL(reg_idx), srrctl); in fm10k_configure_rx_ring()
692 fm10k_write_reg(hw, FM10K_RXDCTL(reg_idx), rxdctl); in fm10k_configure_rx_ring()
695 ring->vid = hw->mac.default_vid; in fm10k_configure_rx_ring()
698 if (test_bit(hw->mac.default_vid, interface->active_vlans)) in fm10k_configure_rx_ring()
703 rxint = ring->q_vector->v_idx + NON_Q_VECTORS(hw); in fm10k_configure_rx_ring()
707 fm10k_write_reg(hw, FM10K_RXINT(reg_idx), rxint); in fm10k_configure_rx_ring()
710 fm10k_write_reg(hw, FM10K_RXQCTL(reg_idx), rxqctl); in fm10k_configure_rx_ring()
724 struct fm10k_hw *hw = &interface->hw; in fm10k_update_rx_drop_en() local
741 fm10k_write_reg(hw, FM10K_RXDCTL(reg_idx), rxdctl); in fm10k_update_rx_drop_en()
754 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_dglort() local
760 fm10k_write_reg(hw, FM10K_RSSRK(0, i), interface->rssrk[i]); in fm10k_configure_dglort()
764 fm10k_write_reg(hw, FM10K_RETA(0, i), interface->reta[i]); in fm10k_configure_dglort()
779 fm10k_write_reg(hw, FM10K_MRQC(0), mrqc); in fm10k_configure_dglort()
785 hw->mac.ops.configure_dglort_map(hw, &dglort); in fm10k_configure_dglort()
794 hw->mac.ops.configure_dglort_map(hw, &dglort); in fm10k_configure_dglort()
807 hw->mac.ops.configure_dglort_map(hw, &dglort); in fm10k_configure_dglort()
857 struct fm10k_hw *hw = &interface->hw; in fm10k_msix_mbx_vf() local
858 struct fm10k_mbx_info *mbx = &hw->mbx; in fm10k_msix_mbx_vf()
861 fm10k_write_reg(hw, FM10K_VFITR(FM10K_MBX_VECTOR), in fm10k_msix_mbx_vf()
866 mbx->ops.process(hw, mbx); in fm10k_msix_mbx_vf()
870 hw->mac.get_host_state = 1; in fm10k_msix_mbx_vf()
903 struct fm10k_hw *hw = &interface->hw; in fm10k_handle_fault() local
972 hw->iov.ops.reset_lport(hw, vf_info); in fm10k_handle_fault()
973 hw->iov.ops.reset_resources(hw, vf_info); in fm10k_handle_fault()
976 hw->iov.ops.set_lport(hw, vf_info, vf, in fm10k_handle_fault()
980 vf_info->mbx.ops.connect(hw, &vf_info->mbx); in fm10k_handle_fault()
986 struct fm10k_hw *hw = &interface->hw; in fm10k_report_fault() local
998 err = hw->mac.ops.get_fault(hw, type, &fault); in fm10k_report_fault()
1011 struct fm10k_hw *hw = &interface->hw; in fm10k_reset_drop_on_empty() local
1019 maxholdq = fm10k_read_reg(hw, FM10K_MAXHOLDQ(7)); in fm10k_reset_drop_on_empty()
1021 fm10k_write_reg(hw, FM10K_MAXHOLDQ(7), maxholdq); in fm10k_reset_drop_on_empty()
1026 fm10k_write_reg(hw, FM10K_RXDCTL(q), rxdctl); in fm10k_reset_drop_on_empty()
1042 maxholdq = fm10k_read_reg(hw, FM10K_MAXHOLDQ(q / 32)); in fm10k_reset_drop_on_empty()
1044 fm10k_write_reg(hw, FM10K_MAXHOLDQ(q / 32), maxholdq); in fm10k_reset_drop_on_empty()
1051 struct fm10k_hw *hw = &interface->hw; in fm10k_msix_mbx_pf() local
1052 struct fm10k_mbx_info *mbx = &hw->mbx; in fm10k_msix_mbx_pf()
1056 eicr = fm10k_read_reg(hw, FM10K_EICR); in fm10k_msix_mbx_pf()
1057 fm10k_write_reg(hw, FM10K_EICR, eicr & (FM10K_EICR_MAILBOX | in fm10k_msix_mbx_pf()
1069 mbx->ops.process(hw, mbx); in fm10k_msix_mbx_pf()
1082 hw->mac.dglort_map = FM10K_DGLORTMAP_NONE; in fm10k_msix_mbx_pf()
1086 hw->mac.get_host_state = 1; in fm10k_msix_mbx_pf()
1092 fm10k_write_reg(hw, FM10K_ITR(FM10K_MBX_VECTOR), in fm10k_msix_mbx_pf()
1101 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_free_irq() local
1105 hw->mbx.ops.disconnect(hw, &hw->mbx); in fm10k_mbx_free_irq()
1108 if (hw->mac.type == fm10k_mac_pf) { in fm10k_mbx_free_irq()
1109 fm10k_write_reg(hw, FM10K_EIMR, in fm10k_mbx_free_irq()
1123 fm10k_write_reg(hw, itr_reg, FM10K_ITR_MASK_SET); in fm10k_mbx_free_irq()
1128 static s32 fm10k_mbx_mac_addr(struct fm10k_hw *hw, u32 **results, in fm10k_mbx_mac_addr() argument
1131 bool vlan_override = hw->mac.vlan_override; in fm10k_mbx_mac_addr()
1132 u16 default_vid = hw->mac.default_vid; in fm10k_mbx_mac_addr()
1136 err = fm10k_msg_mac_vlan_vf(hw, results, mbx); in fm10k_mbx_mac_addr()
1140 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_mbx_mac_addr()
1143 if (is_valid_ether_addr(hw->mac.perm_addr) && in fm10k_mbx_mac_addr()
1144 memcmp(hw->mac.perm_addr, hw->mac.addr, ETH_ALEN)) in fm10k_mbx_mac_addr()
1148 if ((vlan_override != hw->mac.vlan_override) || in fm10k_mbx_mac_addr()
1149 (default_vid != hw->mac.default_vid)) in fm10k_mbx_mac_addr()
1155 static s32 fm10k_1588_msg_vf(struct fm10k_hw *hw, u32 **results, in fm10k_1588_msg_vf() argument
1167 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_1588_msg_vf()
1175 static s32 fm10k_mbx_error(struct fm10k_hw *hw, u32 **results, in fm10k_mbx_error() argument
1181 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_mbx_error()
1202 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq_vf() local
1209 err = hw->mbx.ops.register_handlers(&hw->mbx, vf_mbx_data); in fm10k_mbx_request_irq_vf()
1223 fm10k_write_reg(hw, FM10K_VFINT_MAP, itr); in fm10k_mbx_request_irq_vf()
1226 fm10k_write_reg(hw, FM10K_VFITR(entry->entry), FM10K_ITR_ENABLE); in fm10k_mbx_request_irq_vf()
1231 static s32 fm10k_lport_map(struct fm10k_hw *hw, u32 **results, in fm10k_lport_map() argument
1235 u32 dglort_map = hw->mac.dglort_map; in fm10k_lport_map()
1238 err = fm10k_msg_lport_map_pf(hw, results, mbx); in fm10k_lport_map()
1242 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_lport_map()
1245 if (dglort_map != hw->mac.dglort_map) in fm10k_lport_map()
1251 static s32 fm10k_update_pvid(struct fm10k_hw *hw, u32 **results, in fm10k_update_pvid() argument
1269 if (!fm10k_glort_valid_pf(hw, glort)) in fm10k_update_pvid()
1276 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_update_pvid()
1284 if (pvid != hw->mac.default_vid) in fm10k_update_pvid()
1287 hw->mac.default_vid = pvid; in fm10k_update_pvid()
1292 static s32 fm10k_1588_msg_pf(struct fm10k_hw *hw, u32 **results, in fm10k_1588_msg_pf() argument
1307 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_1588_msg_pf()
1321 if (!fm10k_glort_valid_pf(hw, sglort)) in fm10k_1588_msg_pf()
1338 vf_idx = (hw->mac.dglort_map & FM10K_DGLORTMAP_NONE) - sglort; in fm10k_1588_msg_pf()
1345 err = hw->iov.ops.report_timestamp(hw, &iov_data->vf_info[vf_idx], in fm10k_1588_msg_pf()
1369 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq_pf() local
1377 err = hw->mbx.ops.register_handlers(&hw->mbx, pf_mbx_data); in fm10k_mbx_request_irq_pf()
1391 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_PCIeFault), other_itr); in fm10k_mbx_request_irq_pf()
1392 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_SwitchUpDown), other_itr); in fm10k_mbx_request_irq_pf()
1393 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_SRAM), other_itr); in fm10k_mbx_request_irq_pf()
1394 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_MaxHoldTime), other_itr); in fm10k_mbx_request_irq_pf()
1395 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_VFLR), other_itr); in fm10k_mbx_request_irq_pf()
1398 fm10k_write_reg(hw, FM10K_INT_MAP(fm10k_int_Mailbox), mbx_itr); in fm10k_mbx_request_irq_pf()
1401 fm10k_write_reg(hw, FM10K_EIMR, FM10K_EIMR_ENABLE(PCA_FAULT) | in fm10k_mbx_request_irq_pf()
1411 fm10k_write_reg(hw, FM10K_ITR(entry->entry), FM10K_ITR_ENABLE); in fm10k_mbx_request_irq_pf()
1418 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq() local
1422 if (hw->mac.type == fm10k_mac_pf) in fm10k_mbx_request_irq()
1429 err = hw->mbx.ops.connect(hw, &hw->mbx); in fm10k_mbx_request_irq()
1443 struct fm10k_hw *hw = &interface->hw; in fm10k_qv_free_irq() local
1446 entry = &interface->msix_entries[NON_Q_VECTORS(hw) + vector]; in fm10k_qv_free_irq()
1476 struct fm10k_hw *hw = &interface->hw; in fm10k_qv_request_irq() local
1481 entry = &interface->msix_entries[NON_Q_VECTORS(hw)]; in fm10k_qv_request_irq()
1503 q_vector->itr = (hw->mac.type == fm10k_mac_pf) ? in fm10k_qv_request_irq()
1549 struct fm10k_hw *hw = &interface->hw; in fm10k_up() local
1552 hw->mac.ops.start_hw(hw); in fm10k_up()
1561 hw->mac.ops.update_int_moderator(hw); in fm10k_up()
1576 hw->mac.get_host_state = 1; in fm10k_up()
1594 struct fm10k_hw *hw = &interface->hw; in fm10k_down() local
1619 hw->mac.ops.stop_hw(hw); in fm10k_down()
1638 struct fm10k_hw *hw = &interface->hw; in fm10k_sw_init() local
1646 hw->back = interface; in fm10k_sw_init()
1647 hw->hw_addr = interface->uc_addr; in fm10k_sw_init()
1650 hw->vendor_id = pdev->vendor; in fm10k_sw_init()
1651 hw->device_id = pdev->device; in fm10k_sw_init()
1652 hw->revision_id = pdev->revision; in fm10k_sw_init()
1653 hw->subsystem_vendor_id = pdev->subsystem_vendor; in fm10k_sw_init()
1654 hw->subsystem_device_id = pdev->subsystem_device; in fm10k_sw_init()
1657 memcpy(&hw->mac.ops, fi->mac_ops, sizeof(hw->mac.ops)); in fm10k_sw_init()
1658 hw->mac.type = fi->mac; in fm10k_sw_init()
1662 memcpy(&hw->iov.ops, fi->iov_ops, sizeof(hw->iov.ops)); in fm10k_sw_init()
1667 fi->get_invariants(hw); in fm10k_sw_init()
1670 if (hw->mac.ops.get_bus_info) in fm10k_sw_init()
1671 hw->mac.ops.get_bus_info(hw); in fm10k_sw_init()
1674 if (hw->mac.ops.set_dma_mask) in fm10k_sw_init()
1675 hw->mac.ops.set_dma_mask(hw, dma_get_mask(&pdev->dev)); in fm10k_sw_init()
1687 err = hw->mac.ops.reset_hw(hw) ? : hw->mac.ops.init_hw(hw); in fm10k_sw_init()
1694 hw->mac.ops.update_hw_stats(hw, &interface->stats); in fm10k_sw_init()
1697 pci_sriov_set_totalvfs(pdev, hw->iov.total_vfs); in fm10k_sw_init()
1700 eth_random_addr(hw->mac.addr); in fm10k_sw_init()
1703 err = hw->mac.ops.read_mac_addr(hw); in fm10k_sw_init()
1711 memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len); in fm10k_sw_init()
1712 memcpy(netdev->perm_addr, hw->mac.addr, netdev->addr_len); in fm10k_sw_init()
1720 if (fm10k_read_reg(hw, FM10K_CTRL) & FM10K_CTRL_BAR4_ALLOWED) in fm10k_sw_init()
1723 hw->sw_addr = interface->sw_addr; in fm10k_sw_init()
1726 if (hw->mac.type != fm10k_mac_pf) { in fm10k_sw_init()
1771 struct fm10k_hw *hw = &interface->hw; in fm10k_slot_warn() local
1809 hw->bus.width, in fm10k_slot_warn()
1814 (hw->bus.payload == fm10k_bus_payload_128 ? "128B" : in fm10k_slot_warn()
1815 hw->bus.payload == fm10k_bus_payload_256 ? "256B" : in fm10k_slot_warn()
1816 hw->bus.payload == fm10k_bus_payload_512 ? "512B" : in fm10k_slot_warn()
1819 switch (hw->bus_caps.speed) { in fm10k_slot_warn()
1822 expected_gts = 2 * hw->bus_caps.width; in fm10k_slot_warn()
1826 expected_gts = 4 * hw->bus_caps.width; in fm10k_slot_warn()
1830 expected_gts = 8 * hw->bus_caps.width; in fm10k_slot_warn()
1844 (hw->bus_caps.speed == fm10k_bus_speed_2500 ? "2.5GT/s " : in fm10k_slot_warn()
1845 hw->bus_caps.speed == fm10k_bus_speed_5000 ? "5.0GT/s " : in fm10k_slot_warn()
1846 hw->bus_caps.speed == fm10k_bus_speed_8000 ? "8.0GT/s " : ""), in fm10k_slot_warn()
1847 hw->bus_caps.width); in fm10k_slot_warn()
2049 struct fm10k_hw *hw = &interface->hw; in fm10k_resume() local
2070 hw->hw_addr = interface->uc_addr; in fm10k_resume()
2073 err = hw->mac.ops.init_hw(&interface->hw); in fm10k_resume()
2078 hw->mac.ops.rebind_hw_stats(hw, &interface->stats); in fm10k_resume()
2223 interface->hw.hw_addr = interface->uc_addr; in fm10k_io_slot_reset()
2247 struct fm10k_hw *hw = &interface->hw; in fm10k_io_resume() local
2251 hw->mac.ops.init_hw(&interface->hw); in fm10k_io_resume()
2254 hw->mac.ops.rebind_hw_stats(hw, &interface->stats); in fm10k_io_resume()