sfc: Decouple NIC revision number from Falcon PCI revision number
Subsystems (2)
PATCH 9/12 sfc: Decouple NIC revision number from Falcon PCI revision number
Signed-off-by Ben Hutchings <[email protected]>
--- drivers/net/sfc/efx.c | 4 +- drivers/net/sfc/ethtool.c | 2 +- drivers/net/sfc/falcon.c | 68 ++++++++++++++++++---------------------- drivers/net/sfc/falcon.h | 16 +++++----- drivers/net/sfc/falcon_xmac.c | 2 +- drivers/net/sfc/net_driver.h | 2 + drivers/net/sfc/selftest.c | 2 +- drivers/net/sfc/workarounds.h | 4 +- 8 files changed, 48 insertions(+), 52 deletions(-)
drivers/net/sfc/efx.c +2 -2
@@ -1863,9 +1863,9 @@ void efx_schedule_reset(struct efx_nic *efx, enum reset_type type)/* PCI device ID table */ static struct pci_device_id efx_pci_table[]__devinitdata = { {PCI_DEVICE (EFX_VENDID_SFC ,FALCON_A_P_DEVID ), - .driver_data = (unsigned long ) &falcon_a_nic_type}, + .driver_data = (unsigned long ) &falcon_a1_nic_type}, {PCI_DEVICE (EFX_VENDID_SFC ,FALCON_B_P_DEVID ), - .driver_data = (unsigned long ) &falcon_b_nic_type}, + .driver_data = (unsigned long ) &falcon_b0_nic_type}, {0 }/* end of list */ };
drivers/net/sfc/ethtool.c +1 -1
@@ -683,7 +683,7 @@ static int efx_ethtool_set_pauseparam(struct net_device *net_dev,* and fix it be cycling transmit flow control on this end. */ reset = (wanted_fc &EFX_FC_TX ) && !(efx->wanted_fc &EFX_FC_TX );if (EFX_WORKAROUND_11482 (efx) && reset) { -if (falcon_rev (efx) ==FALCON_REV_B0 ) { +if (efx_nic_rev (efx) ==EFX_REV_FALCON_B0 ) {/* Recover by resetting the EM block */ if (efx->link_state.up)falcon_drain_tx_fifo (efx);
drivers/net/sfc/falcon.c +31 -37
222 lines not on this page · raw message
drivers/net/sfc/falcon.h +8 -8
@@ -19,15 +19,15 @@* Falcon hardware control */ -enum falcon_revision { -FALCON_REV_A0 =0 , -FALCON_REV_A1 =1 , -FALCON_REV_B0 =2 , +enum { +EFX_REV_FALCON_A0 =0 , +EFX_REV_FALCON_A1 =1 , +EFX_REV_FALCON_B0 =2 , }; -static inline int falcon_rev (struct efx_nic *efx) +static inline int efx_nic_rev (struct efx_nic *efx) { -return efx->pci_dev->revision; +return efx->type->revision; }/**
@@ -95,8 +95,8 @@ static inline struct falcon_board *falcon_board(struct efx_nic *efx)return &data->board; } -extern struct efx_nic_type falcon_a_nic_type; -extern struct efx_nic_type falcon_b_nic_type; +extern struct efx_nic_type falcon_a1_nic_type; +extern struct efx_nic_type falcon_b0_nic_type;/************************************************************************** *
drivers/net/sfc/falcon_xmac.c +1 -1
@@ -89,7 +89,7 @@ static void falcon_mask_status_intr(struct efx_nic *efx, bool enable) {efx_oword_t reg; -if ((falcon_rev (efx) !=FALCON_REV_B0 ) ||LOOPBACK_INTERNAL (efx)) +if ((efx_nic_rev (efx) !=EFX_REV_FALCON_B0 ) ||LOOPBACK_INTERNAL (efx))return ;/* We expect xgmii faults if the wireside link is up */
drivers/net/sfc/net_driver.h +2 -0
@@ -844,6 +844,7 @@ static inline const char *efx_dev_name(struct efx_nic *efx)/** * struct efx_nic_type - Efx device type definition * @default_mac_ops: efx_mac_operations to set at startup +* @revision: Hardware architecture revision * @mem_map_size: Memory BAR mapped size * @txd_ptr_tbl_base: TX descriptor ring base address * @rxd_ptr_tbl_base: RX descriptor ring base address
@@ -860,6 +861,7 @@ static inline const char *efx_dev_name(struct efx_nic *efx)struct efx_nic_type {struct efx_mac_operations *default_mac_ops; +int revision;unsigned int mem_map_size;unsigned int txd_ptr_tbl_base;unsigned int rxd_ptr_tbl_base;
drivers/net/sfc/selftest.c +1 -1
@@ -125,7 +125,7 @@ static int efx_test_chip(struct efx_nic *efx, struct efx_self_tests *tests)int rc;/* Not supported on A-series silicon */ -if (falcon_rev (efx) <FALCON_REV_B0 ) +if (efx_nic_rev (efx) <EFX_REV_FALCON_B0 )return 0 ; rc =falcon_test_registers (efx);
drivers/net/sfc/workarounds.h +2 -2
@@ -16,8 +16,8 @@*/ #define EFX_WORKAROUND_ALWAYS (efx) 1 -#define EFX_WORKAROUND_FALCON_A (efx) (falcon_rev(efx) <= FALCON_REV_A1) -#define EFX_WORKAROUND_FALCON_AB (efx) (falcon_rev(efx) <= FALCON_REV_B0) +#define EFX_WORKAROUND_FALCON_A (efx) (efx_nic_rev(efx) <= EFX_REV_FALCON_A1) +#define EFX_WORKAROUND_FALCON_AB (efx) (efx_nic_rev(efx) <= EFX_REV_FALCON_B0)#define EFX_WORKAROUND_10G (efx) EFX_IS10G(efx)#define EFX_WORKAROUND_SFT9001 (efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \ (efx)->phy_type == PHY_TYPE_SFT9001B)
Signature · 9 lines
1.6.5.3 -- Ben Hutchings, Senior Software Engineer, Solarflare Communications Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.
From: Ben Hutchings <[email protected]>
Date: Sat, 28 Nov 2009 15:36:04 +0000
Quoted 1 line
Signed-off-by Ben Hutchings <[email protected]>
Applied.