diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/sfc/net_driver.h | 4 | ||||
-rw-r--r-- | drivers/net/sfc/siena.c | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/sfc/net_driver.h b/drivers/net/sfc/net_driver.h index 2e6fd89f2a72..5fffd9abffde 100644 --- a/drivers/net/sfc/net_driver.h +++ b/drivers/net/sfc/net_driver.h | |||
@@ -645,6 +645,7 @@ union efx_multicast_hash { | |||
645 | * struct efx_nic - an Efx NIC | 645 | * struct efx_nic - an Efx NIC |
646 | * @name: Device name (net device name or bus id before net device registered) | 646 | * @name: Device name (net device name or bus id before net device registered) |
647 | * @pci_dev: The PCI device | 647 | * @pci_dev: The PCI device |
648 | * @port_num: Index of this host port within the controller | ||
648 | * @type: Controller type attributes | 649 | * @type: Controller type attributes |
649 | * @legacy_irq: IRQ number | 650 | * @legacy_irq: IRQ number |
650 | * @workqueue: Workqueue for port reconfigures and the HW monitor. | 651 | * @workqueue: Workqueue for port reconfigures and the HW monitor. |
@@ -728,6 +729,7 @@ union efx_multicast_hash { | |||
728 | struct efx_nic { | 729 | struct efx_nic { |
729 | char name[IFNAMSIZ]; | 730 | char name[IFNAMSIZ]; |
730 | struct pci_dev *pci_dev; | 731 | struct pci_dev *pci_dev; |
732 | unsigned port_num; | ||
731 | const struct efx_nic_type *type; | 733 | const struct efx_nic_type *type; |
732 | int legacy_irq; | 734 | int legacy_irq; |
733 | struct workqueue_struct *workqueue; | 735 | struct workqueue_struct *workqueue; |
@@ -830,7 +832,7 @@ static inline const char *efx_dev_name(struct efx_nic *efx) | |||
830 | 832 | ||
831 | static inline unsigned int efx_port_num(struct efx_nic *efx) | 833 | static inline unsigned int efx_port_num(struct efx_nic *efx) |
832 | { | 834 | { |
833 | return PCI_FUNC(efx->pci_dev->devfn); | 835 | return efx->port_num; |
834 | } | 836 | } |
835 | 837 | ||
836 | /** | 838 | /** |
diff --git a/drivers/net/sfc/siena.c b/drivers/net/sfc/siena.c index 727b4228e081..7ecd255a7cc0 100644 --- a/drivers/net/sfc/siena.c +++ b/drivers/net/sfc/siena.c | |||
@@ -206,6 +206,7 @@ static int siena_probe_nic(struct efx_nic *efx) | |||
206 | { | 206 | { |
207 | struct siena_nic_data *nic_data; | 207 | struct siena_nic_data *nic_data; |
208 | bool already_attached = 0; | 208 | bool already_attached = 0; |
209 | efx_oword_t reg; | ||
209 | int rc; | 210 | int rc; |
210 | 211 | ||
211 | /* Allocate storage for hardware specific data */ | 212 | /* Allocate storage for hardware specific data */ |
@@ -220,6 +221,9 @@ static int siena_probe_nic(struct efx_nic *efx) | |||
220 | goto fail1; | 221 | goto fail1; |
221 | } | 222 | } |
222 | 223 | ||
224 | efx_reado(efx, ®, FR_AZ_CS_DEBUG); | ||
225 | efx->port_num = EFX_OWORD_FIELD(reg, FRF_CZ_CS_PORT_NUM) - 1; | ||
226 | |||
223 | efx_mcdi_init(efx); | 227 | efx_mcdi_init(efx); |
224 | 228 | ||
225 | /* Recover from a failed assertion before probing */ | 229 | /* Recover from a failed assertion before probing */ |