diff options
| -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 */ |
