aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/sfc/net_driver.h4
-rw-r--r--drivers/net/sfc/siena.c4
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 {
728struct efx_nic { 729struct 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
831static inline unsigned int efx_port_num(struct efx_nic *efx) 833static 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, &reg, 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 */