Lines Matching defs:pf
24 static void enetc4_get_port_caps(struct enetc_pf *pf)
26 struct enetc_hw *hw = &pf->si->hw;
30 pf->caps.num_vsi = (val & ECAPR1_NUM_VSI) >> 24;
31 pf->caps.num_msix = ((val & ECAPR1_NUM_MSIX) >> 12) + 1;
34 pf->caps.num_rx_bdr = (val & ECAPR2_NUM_RX_BDR) >> 16;
35 pf->caps.num_tx_bdr = val & ECAPR2_NUM_TX_BDR;
38 pf->caps.half_duplex = (val & PMCAPR_HD) ? 1 : 0;
41 pf->caps.mac_filter_num = val & PSIMAFCAPR_NUM_MAC_AFTE;
119 static void enetc4_pf_clear_maft_entries(struct enetc_pf *pf)
123 for (i = 0; i < pf->num_mfe; i++)
124 ntmp_maft_delete_entry(&pf->si->ntmp_user, i);
126 pf->num_mfe = 0;
129 static int enetc4_pf_add_maft_entries(struct enetc_pf *pf,
140 err = ntmp_maft_add_entry(&pf->si->ntmp_user, i, &maft);
142 pf->num_mfe = i;
147 pf->num_mfe = mac_cnt;
152 enetc4_pf_clear_maft_entries(pf);
157 static int enetc4_pf_set_uc_exact_filter(struct enetc_pf *pf)
159 int max_num_mfe = pf->caps.mac_filter_num;
161 struct net_device *ndev = pf->si->ndev;
162 struct enetc_hw *hw = &pf->si->hw;
175 enetc4_pf_clear_maft_entries(pf);
202 enetc4_pf_clear_maft_entries(pf);
204 if (!enetc4_pf_add_maft_entries(pf, mac_tbl, i))
217 static void enetc4_pf_set_mac_hash_filter(struct enetc_pf *pf, int type)
219 struct net_device *ndev = pf->si->ndev;
221 struct enetc_hw *hw = &pf->si->hw;
226 mac_filter = &pf->mac_filter[UC];
236 mac_filter = &pf->mac_filter[MC];
247 static void enetc4_pf_set_mac_filter(struct enetc_pf *pf, int type)
255 if (type & ENETC_MAC_FILTER_TYPE_UC && enetc4_pf_set_uc_exact_filter(pf)) {
257 enetc4_pf_set_mac_hash_filter(pf, ENETC_MAC_FILTER_TYPE_UC);
259 enetc4_pf_clear_maft_entries(pf);
263 enetc4_pf_set_mac_hash_filter(pf, ENETC_MAC_FILTER_TYPE_MC);
273 struct enetc_pf *pf = enetc_si_priv(si);
275 pf->si = si;
276 pf->total_vfs = pci_sriov_get_totalvfs(si->pdev);
277 pf->ops = &enetc4_pf_ops;
279 enetc4_get_port_caps(pf);
298 static void enetc4_default_rings_allocation(struct enetc_pf *pf)
300 struct enetc_hw *hw = &pf->si->hw;
305 if (pf->caps.num_rx_bdr < ENETC_SI_MAX_RING_NUM + pf->caps.num_vsi)
306 num_rx_bdr = pf->caps.num_rx_bdr - pf->caps.num_vsi;
310 if (pf->caps.num_tx_bdr < ENETC_SI_MAX_RING_NUM + pf->caps.num_vsi)
311 num_tx_bdr = pf->caps.num_tx_bdr - pf->caps.num_vsi;
318 num_rx_bdr = pf->caps.num_rx_bdr - num_rx_bdr;
319 rx_rem = num_rx_bdr % pf->caps.num_vsi;
320 num_rx_bdr = num_rx_bdr / pf->caps.num_vsi;
322 num_tx_bdr = pf->caps.num_tx_bdr - num_tx_bdr;
323 tx_rem = num_tx_bdr % pf->caps.num_vsi;
324 num_tx_bdr = num_tx_bdr / pf->caps.num_vsi;
326 for (i = 0; i < pf->caps.num_vsi; i++) {
334 static void enetc4_allocate_si_rings(struct enetc_pf *pf)
336 enetc4_default_rings_allocation(pf);
351 static void enetc4_set_default_si_vlan_promisc(struct enetc_pf *pf)
353 struct enetc_hw *hw = &pf->si->hw;
354 int num_si = pf->caps.num_vsi + 1;
363 static void enetc4_set_si_msix_num(struct enetc_pf *pf)
365 struct enetc_hw *hw = &pf->si->hw;
369 total_si = pf->caps.num_vsi + 1;
371 num_msix = pf->caps.num_msix / total_si +
372 pf->caps.num_msix % total_si - 1;
376 num_msix = pf->caps.num_msix / total_si - 1;
378 for (i = 0; i < pf->caps.num_vsi; i++)
382 static void enetc4_enable_all_si(struct enetc_pf *pf)
384 struct enetc_hw *hw = &pf->si->hw;
385 int num_si = pf->caps.num_vsi + 1;
396 static void enetc4_configure_port_si(struct enetc_pf *pf)
398 struct enetc_hw *hw = &pf->si->hw;
400 enetc4_allocate_si_rings(pf);
405 enetc4_set_default_si_vlan_promisc(pf);
410 enetc4_set_si_msix_num(pf);
412 enetc4_enable_all_si(pf);
426 static void enetc4_set_trx_frame_size(struct enetc_pf *pf)
428 struct enetc_si *si = pf->si;
436 static void enetc4_enable_trx(struct enetc_pf *pf)
438 struct enetc_hw *hw = &pf->si->hw;
444 static void enetc4_configure_port(struct enetc_pf *pf)
446 enetc4_configure_port_si(pf);
447 enetc4_set_trx_frame_size(pf);
448 enetc_set_default_rss_key(pf);
449 enetc4_enable_trx(pf);
467 static int enetc4_pf_init(struct enetc_pf *pf)
469 struct device *dev = &pf->si->pdev->dev;
473 err = enetc_setup_mac_addresses(dev->of_node, pf);
479 err = enetc4_init_ntmp_user(pf->si);
485 enetc4_configure_port(pf);
490 static void enetc4_pf_free(struct enetc_pf *pf)
492 enetc4_free_ntmp_user(pf->si);
498 struct enetc_pf *pf = enetc_si_priv(si);
521 enetc4_pf_clear_maft_entries(pf);
528 enetc4_pf_set_mac_filter(pf, type);
577 struct enetc_pf *pf = phylink_to_enetc_pf(config);
579 return pf->pcs;
582 static void enetc4_mac_config(struct enetc_pf *pf, unsigned int mode,
585 struct enetc_ndev_priv *priv = netdev_priv(pf->si->ndev);
586 struct enetc_si *si = pf->si;
628 struct enetc_pf *pf = phylink_to_enetc_pf(config);
630 enetc4_mac_config(pf, mode, state->interface);
660 static void enetc4_set_rgmii_mac(struct enetc_pf *pf, int speed, int duplex)
662 struct enetc_si *si = pf->si;
688 static void enetc4_set_rmii_mac(struct enetc_pf *pf, int speed, int duplex)
690 struct enetc_si *si = pf->si;
713 static void enetc4_set_hd_flow_control(struct enetc_pf *pf, bool enable)
715 struct enetc_si *si = pf->si;
718 if (!pf->caps.half_duplex)
729 static void enetc4_set_rx_pause(struct enetc_pf *pf, bool rx_pause)
731 struct enetc_si *si = pf->si;
742 static void enetc4_set_tx_pause(struct enetc_pf *pf, int num_rxbdr, bool tx_pause)
746 struct enetc_hw *hw = &pf->si->hw;
781 enetc_port_mac_wr(pf->si, ENETC4_PM_PAUSE_QUANTA(0), init_quanta);
782 enetc_port_mac_wr(pf->si, ENETC4_PM_PAUSE_THRESH(0), refresh_quanta);
787 static void enetc4_enable_mac(struct enetc_pf *pf, bool en)
789 struct enetc_si *si = pf->si;
804 struct enetc_pf *pf = phylink_to_enetc_pf(config);
805 struct enetc_si *si = pf->si;
814 enetc4_set_rgmii_mac(pf, speed, duplex);
817 enetc4_set_rmii_mac(pf, speed, duplex);
836 enetc4_set_hd_flow_control(pf, hd_fc);
837 enetc4_set_tx_pause(pf, priv->num_rx_rings, tx_pause);
838 enetc4_set_rx_pause(pf, rx_pause);
839 enetc4_enable_mac(pf, true);
846 struct enetc_pf *pf = phylink_to_enetc_pf(config);
848 enetc4_enable_mac(pf, false);
868 struct enetc_pf *pf = enetc_si_priv(priv->si);
872 err = of_get_phy_mode(node, &pf->if_mode);
878 err = enetc_mdiobus_create(pf, node);
893 enetc_mdiobus_destroy(pf);
900 struct enetc_pf *pf = enetc_si_priv(priv->si);
903 enetc_mdiobus_destroy(pf);
1010 struct enetc_pf *pf;
1013 err = enetc_pci_probe(pdev, KBUILD_MODNAME, sizeof(*pf));
1039 pf = enetc_si_priv(si);
1040 err = enetc4_pf_init(pf);
1055 enetc4_pf_free(pf);
1063 struct enetc_pf *pf = enetc_si_priv(si);
1067 enetc4_pf_free(pf);