Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net/mlx5: Factor out HCA capabilities functions

Combine all HCA capabilities setters under one function
and compile out the ODP related function in case kernel
was compiled without ODP support.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>

+31 -15
+31 -15
drivers/net/ethernet/mellanox/mlx5/core/main.c
··· 467 467 int set_sz; 468 468 int err; 469 469 470 - if (!MLX5_CAP_GEN(dev, pg)) 470 + if (!IS_ENABLED(CONFIG_INFINIBAND_ON_DEMAND_PAGING) || 471 + !MLX5_CAP_GEN(dev, pg)) 471 472 return 0; 472 473 473 474 err = mlx5_core_get_caps(dev, MLX5_CAP_ODP); ··· 575 574 576 575 query_ex: 577 576 kfree(set_ctx); 577 + return err; 578 + } 579 + 580 + static int set_hca_cap(struct mlx5_core_dev *dev) 581 + { 582 + struct pci_dev *pdev = dev->pdev; 583 + int err; 584 + 585 + err = handle_hca_cap(dev); 586 + if (err) { 587 + dev_err(&pdev->dev, "handle_hca_cap failed\n"); 588 + goto out; 589 + } 590 + 591 + err = handle_hca_cap_atomic(dev); 592 + if (err) { 593 + dev_err(&pdev->dev, "handle_hca_cap_atomic failed\n"); 594 + goto out; 595 + } 596 + 597 + err = handle_hca_cap_odp(dev); 598 + if (err) { 599 + dev_err(&pdev->dev, "handle_hca_cap_odp failed\n"); 600 + goto out; 601 + } 602 + 603 + out: 578 604 return err; 579 605 } 580 606 ··· 997 969 goto reclaim_boot_pages; 998 970 } 999 971 1000 - err = handle_hca_cap(dev); 972 + err = set_hca_cap(dev); 1001 973 if (err) { 1002 - dev_err(&pdev->dev, "handle_hca_cap failed\n"); 1003 - goto reclaim_boot_pages; 1004 - } 1005 - 1006 - err = handle_hca_cap_atomic(dev); 1007 - if (err) { 1008 - dev_err(&pdev->dev, "handle_hca_cap_atomic failed\n"); 1009 - goto reclaim_boot_pages; 1010 - } 1011 - 1012 - err = handle_hca_cap_odp(dev); 1013 - if (err) { 1014 - dev_err(&pdev->dev, "handle_hca_cap_odp failed\n"); 974 + dev_err(&pdev->dev, "set_hca_cap failed\n"); 1015 975 goto reclaim_boot_pages; 1016 976 } 1017 977