Re: [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device

From: Serge Semin
Date: Thu Dec 07 2023 - 09:47:21 EST


On Wed, Dec 06, 2023 at 08:19:07AM +0800, kernel test robot wrote:
> Hi Serge,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on net-next/main]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Serge-Semin/net-pcs-xpcs-Drop-sentinel-entry-from-2500basex-ifaces-list/20231205-183808
> base: net-next/main
> patch link: https://lore.kernel.org/r/20231205103559.9605-14-fancer.lancer%40gmail.com
> patch subject: [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device
> config: x86_64-kexec (https://download.01.org/0day-ci/archive/20231206/202312060845.lDDRDWET-lkp@xxxxxxxxx/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231206/202312060845.lDDRDWET-lkp@xxxxxxxxx/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202312060845.lDDRDWET-lkp@xxxxxxxxx/
>
> All errors (new ones prefixed by >>):
>
> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c: In function 'intel_mgbe_common_data':
> >> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:646:31: error: 'clk' undeclared (first use in this function)
> 646 | clk_disable_unprepare(clk);
> | ^~~
> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:646:31: note: each undeclared identifier is reported only once for each function it appears in
>
>
> vim +/clk +646 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c

Right, my series had been originally based on a branch which had some
of this driver parts fixed. I should have more thoroughly performed
the re-base process. I'll make sure it's fixed on v2.

-Serge(y)

>
> 446
> 447 static int intel_mgbe_common_data(struct pci_dev *pdev,
> 448 struct plat_stmmacenet_data *plat)
> 449 {
> 450 struct fwnode_handle *fwnode;
> 451 char clk_name[20];
> 452 int ret;
> 453 int i;
> 454
> 455 plat->pdev = pdev;
> 456 plat->phy_addr = -1;
> 457 plat->clk_csr = 5;
> 458 plat->has_gmac = 0;
> 459 plat->has_gmac4 = 1;
> 460 plat->force_sf_dma_mode = 0;
> 461 plat->flags |= (STMMAC_FLAG_TSO_EN | STMMAC_FLAG_SPH_DISABLE);
> 462
> 463 /* Multiplying factor to the clk_eee_i clock time
> 464 * period to make it closer to 100 ns. This value
> 465 * should be programmed such that the clk_eee_time_period *
> 466 * (MULT_FACT_100NS + 1) should be within 80 ns to 120 ns
> 467 * clk_eee frequency is 19.2Mhz
> 468 * clk_eee_time_period is 52ns
> 469 * 52ns * (1 + 1) = 104ns
> 470 * MULT_FACT_100NS = 1
> 471 */
> 472 plat->mult_fact_100ns = 1;
> 473
> 474 plat->rx_sched_algorithm = MTL_RX_ALGORITHM_SP;
> 475
> 476 for (i = 0; i < plat->rx_queues_to_use; i++) {
> 477 plat->rx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
> 478 plat->rx_queues_cfg[i].chan = i;
> 479
> 480 /* Disable Priority config by default */
> 481 plat->rx_queues_cfg[i].use_prio = false;
> 482
> 483 /* Disable RX queues routing by default */
> 484 plat->rx_queues_cfg[i].pkt_route = 0x0;
> 485 }
> 486
> 487 for (i = 0; i < plat->tx_queues_to_use; i++) {
> 488 plat->tx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
> 489
> 490 /* Disable Priority config by default */
> 491 plat->tx_queues_cfg[i].use_prio = false;
> 492 /* Default TX Q0 to use TSO and rest TXQ for TBS */
> 493 if (i > 0)
> 494 plat->tx_queues_cfg[i].tbs_en = 1;
> 495 }
> 496
> 497 /* FIFO size is 4096 bytes for 1 tx/rx queue */
> 498 plat->tx_fifo_size = plat->tx_queues_to_use * 4096;
> 499 plat->rx_fifo_size = plat->rx_queues_to_use * 4096;
> 500
> 501 plat->tx_sched_algorithm = MTL_TX_ALGORITHM_WRR;
> 502 plat->tx_queues_cfg[0].weight = 0x09;
> 503 plat->tx_queues_cfg[1].weight = 0x0A;
> 504 plat->tx_queues_cfg[2].weight = 0x0B;
> 505 plat->tx_queues_cfg[3].weight = 0x0C;
> 506 plat->tx_queues_cfg[4].weight = 0x0D;
> 507 plat->tx_queues_cfg[5].weight = 0x0E;
> 508 plat->tx_queues_cfg[6].weight = 0x0F;
> 509 plat->tx_queues_cfg[7].weight = 0x10;
> 510
> 511 plat->dma_cfg->pbl = 32;
> 512 plat->dma_cfg->pblx8 = true;
> 513 plat->dma_cfg->fixed_burst = 0;
> 514 plat->dma_cfg->mixed_burst = 0;
> 515 plat->dma_cfg->aal = 0;
> 516 plat->dma_cfg->dche = true;
> 517
> 518 plat->axi = devm_kzalloc(&pdev->dev, sizeof(*plat->axi),
> 519 GFP_KERNEL);
> 520 if (!plat->axi)
> 521 return -ENOMEM;
> 522
> 523 plat->axi->axi_lpi_en = 0;
> 524 plat->axi->axi_xit_frm = 0;
> 525 plat->axi->axi_wr_osr_lmt = 1;
> 526 plat->axi->axi_rd_osr_lmt = 1;
> 527 plat->axi->axi_blen[0] = 4;
> 528 plat->axi->axi_blen[1] = 8;
> 529 plat->axi->axi_blen[2] = 16;
> 530
> 531 plat->ptp_max_adj = plat->clk_ptp_rate;
> 532 plat->eee_usecs_rate = plat->clk_ptp_rate;
> 533
> 534 /* Set system clock */
> 535 sprintf(clk_name, "%s-%s", "stmmac", pci_name(pdev));
> 536
> 537 plat->stmmac_clk = clk_register_fixed_rate(&pdev->dev,
> 538 clk_name, NULL, 0,
> 539 plat->clk_ptp_rate);
> 540
> 541 if (IS_ERR(plat->stmmac_clk)) {
> 542 dev_warn(&pdev->dev, "Fail to register stmmac-clk\n");
> 543 plat->stmmac_clk = NULL;
> 544 }
> 545
> 546 ret = clk_prepare_enable(plat->stmmac_clk);
> 547 if (ret) {
> 548 clk_unregister_fixed_rate(plat->stmmac_clk);
> 549 return ret;
> 550 }
> 551
> 552 plat->ptp_clk_freq_config = intel_mgbe_ptp_clk_freq_config;
> 553
> 554 /* Set default value for multicast hash bins */
> 555 plat->multicast_filter_bins = HASH_TABLE_SIZE;
> 556
> 557 /* Set default value for unicast filter entries */
> 558 plat->unicast_filter_entries = 1;
> 559
> 560 /* Set the maxmtu to a default of JUMBO_LEN */
> 561 plat->maxmtu = JUMBO_LEN;
> 562
> 563 plat->flags |= STMMAC_FLAG_VLAN_FAIL_Q_EN;
> 564
> 565 /* Use the last Rx queue */
> 566 plat->vlan_fail_q = plat->rx_queues_to_use - 1;
> 567
> 568 /* For fixed-link setup, we allow phy-mode setting */
> 569 fwnode = dev_fwnode(&pdev->dev);
> 570 if (fwnode) {
> 571 int phy_mode;
> 572
> 573 /* "phy-mode" setting is optional. If it is set,
> 574 * we allow either sgmii or 1000base-x for now.
> 575 */
> 576 phy_mode = fwnode_get_phy_mode(fwnode);
> 577 if (phy_mode >= 0) {
> 578 if (phy_mode == PHY_INTERFACE_MODE_SGMII ||
> 579 phy_mode == PHY_INTERFACE_MODE_1000BASEX)
> 580 plat->phy_interface = phy_mode;
> 581 else
> 582 dev_warn(&pdev->dev, "Invalid phy-mode\n");
> 583 }
> 584 }
> 585
> 586 /* Intel mgbe SGMII interface uses pcs-xcps */
> 587 if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
> 588 plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
> 589 struct mdio_board_info *xpcs_info;
> 590
> 591 xpcs_info = devm_kzalloc(&pdev->dev,
> 592 sizeof(*xpcs_info) + MII_BUS_ID_SIZE,
> 593 GFP_KERNEL);
> 594 if (!xpcs_info) {
> 595 ret = -ENOMEM;
> 596 goto err_alloc_info;
> 597 }
> 598
> 599 xpcs_info->bus_id = (void *)xpcs_info + sizeof(*xpcs_info);
> 600 snprintf((char *)xpcs_info->bus_id, MII_BUS_ID_SIZE,
> 601 "stmmac-%x", plat->bus_id);
> 602
> 603 snprintf(xpcs_info->modalias, MDIO_NAME_SIZE, "dwxpcs");
> 604
> 605 xpcs_info->mdio_addr = INTEL_MGBE_XPCS_ADDR;
> 606
> 607 ret = mdiobus_register_board_info(xpcs_info, 1);
> 608 if (ret)
> 609 goto err_alloc_info;
> 610
> 611 plat->mdio_bus_data->has_xpcs = true;
> 612 plat->mdio_bus_data->xpcs_an_inband = true;
> 613 }
> 614
> 615 /* For fixed-link setup, we clear xpcs_an_inband */
> 616 if (fwnode) {
> 617 struct fwnode_handle *fixed_node;
> 618
> 619 fixed_node = fwnode_get_named_child_node(fwnode, "fixed-link");
> 620 if (fixed_node)
> 621 plat->mdio_bus_data->xpcs_an_inband = false;
> 622
> 623 fwnode_handle_put(fixed_node);
> 624 }
> 625
> 626 /* Ensure mdio bus PHY-scan skips intel serdes and pcs-xpcs */
> 627 plat->mdio_bus_data->phy_mask = 1 << INTEL_MGBE_ADHOC_ADDR;
> 628 plat->mdio_bus_data->phy_mask |= 1 << INTEL_MGBE_XPCS_ADDR;
> 629
> 630 plat->int_snapshot_num = AUX_SNAPSHOT1;
> 631
> 632 plat->crosststamp = intel_crosststamp;
> 633 plat->flags &= ~STMMAC_FLAG_INT_SNAPSHOT_EN;
> 634
> 635 /* Setup MSI vector offset specific to Intel mGbE controller */
> 636 plat->msi_mac_vec = 29;
> 637 plat->msi_lpi_vec = 28;
> 638 plat->msi_sfty_ce_vec = 27;
> 639 plat->msi_sfty_ue_vec = 26;
> 640 plat->msi_rx_base_vec = 0;
> 641 plat->msi_tx_base_vec = 1;
> 642
> 643 return 0;
> 644
> 645 err_alloc_info:
> > 646 clk_disable_unprepare(clk);
> 647 clk_unregister_fixed_rate(clk);
> 648
> 649 return ret;
> 650 }
> 651
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki