.. | .. |
---|
851 | 851 | rp_pdev = pci_get_domain_bus_and_slot(0, 0, devfn); |
---|
852 | 852 | if (rp_pdev && rp_pdev->subordinate) { |
---|
853 | 853 | bus = rp_pdev->subordinate->number; |
---|
| 854 | + pci_dev_put(rp_pdev); |
---|
854 | 855 | return pci_get_domain_bus_and_slot(0, bus, 0); |
---|
855 | 856 | } |
---|
856 | 857 | |
---|
| 858 | + pci_dev_put(rp_pdev); |
---|
857 | 859 | return NULL; |
---|
858 | 860 | } |
---|
859 | 861 | |
---|
.. | .. |
---|
870 | 872 | struct ixgbe_adapter *adapter = hw->back; |
---|
871 | 873 | struct pci_dev *pdev = adapter->pdev; |
---|
872 | 874 | struct pci_dev *func0_pdev; |
---|
| 875 | + bool has_mii = false; |
---|
873 | 876 | |
---|
874 | 877 | /* For the C3000 family of SoCs (x550em_a) the internal ixgbe devices |
---|
875 | 878 | * are always downstream of root ports @ 0000:00:16.0 & 0000:00:17.0 |
---|
.. | .. |
---|
880 | 883 | func0_pdev = ixgbe_get_first_secondary_devfn(PCI_DEVFN(0x16, 0)); |
---|
881 | 884 | if (func0_pdev) { |
---|
882 | 885 | if (func0_pdev == pdev) |
---|
883 | | - return true; |
---|
884 | | - else |
---|
885 | | - return false; |
---|
| 886 | + has_mii = true; |
---|
| 887 | + goto out; |
---|
886 | 888 | } |
---|
887 | 889 | func0_pdev = ixgbe_get_first_secondary_devfn(PCI_DEVFN(0x17, 0)); |
---|
888 | 890 | if (func0_pdev == pdev) |
---|
889 | | - return true; |
---|
| 891 | + has_mii = true; |
---|
890 | 892 | |
---|
891 | | - return false; |
---|
| 893 | +out: |
---|
| 894 | + pci_dev_put(func0_pdev); |
---|
| 895 | + return has_mii; |
---|
892 | 896 | } |
---|
893 | 897 | |
---|
894 | 898 | /** |
---|