diff options
Diffstat (limited to 'drivers/net/sfc')
-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 40c0d931b182..6b2e4402ec57 100644 --- a/drivers/net/sfc/net_driver.h +++ b/drivers/net/sfc/net_driver.h | |||
@@ -649,6 +649,7 @@ union efx_multicast_hash { | |||
649 | * struct efx_nic - an Efx NIC | 649 | * struct efx_nic - an Efx NIC |
650 | * @name: Device name (net device name or bus id before net device registered) | 650 | * @name: Device name (net device name or bus id before net device registered) |
651 | * @pci_dev: The PCI device | 651 | * @pci_dev: The PCI device |
652 | * @port_num: Index of this host port within the controller | ||
652 | * @type: Controller type attributes | 653 | * @type: Controller type attributes |
653 | * @legacy_irq: IRQ number | 654 | * @legacy_irq: IRQ number |
654 | * @workqueue: Workqueue for port reconfigures and the HW monitor. | 655 | * @workqueue: Workqueue for port reconfigures and the HW monitor. |
@@ -732,6 +733,7 @@ union efx_multicast_hash { | |||
732 | struct efx_nic { | 733 | struct efx_nic { |
733 | char name[IFNAMSIZ]; | 734 | char name[IFNAMSIZ]; |
734 | struct pci_dev *pci_dev; | 735 | struct pci_dev *pci_dev; |
736 | unsigned port_num; | ||
735 | const struct efx_nic_type *type; | 737 | const struct efx_nic_type *type; |
736 | int legacy_irq; | 738 | int legacy_irq; |
737 | struct workqueue_struct *workqueue; | 739 | struct workqueue_struct *workqueue; |
@@ -834,7 +836,7 @@ static inline const char *efx_dev_name(struct efx_nic *efx) | |||
834 | 836 | ||
835 | static inline unsigned int efx_port_num(struct efx_nic *efx) | 837 | static inline unsigned int efx_port_num(struct efx_nic *efx) |
836 | { | 838 | { |
837 | return PCI_FUNC(efx->pci_dev->devfn); | 839 | return efx->port_num; |
838 | } | 840 | } |
839 | 841 | ||
840 | /** | 842 | /** |
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 */ |