sfc: Always start Falcon using the XMAC
Subsystems (2)
PATCH 4/12 sfc: Always start Falcon using the XMAC
From: Steve Hodgson <[email protected]>
The strap bits are only important on Falcon A and all production boards using it have fixed-speed 10G PHYs.
Replace dummy MAC operations with default MAC operations.
Signed-off-by Ben Hutchings <[email protected]>
--- drivers/net/sfc/efx.c | 6 +----- drivers/net/sfc/falcon.c | 15 ++++++++++++--- drivers/net/sfc/net_driver.h | 3 +++ 3 files changed, 16 insertions(+), 8 deletions(-)
drivers/net/sfc/efx.c +1 -5
@@ -1891,10 +1891,6 @@ bool efx_port_dummy_op_poll(struct efx_nic *efx)return false; } -static struct efx_mac_operations efx_dummy_mac_operations = { - .reconfigure = efx_port_dummy_op_void, -}; -static struct efx_phy_operations efx_dummy_phy_operations = { .init = efx_port_dummy_op_int, .reconfigure = efx_port_dummy_op_void,
@@ -1936,7 +1932,7 @@ static int efx_init_struct(struct efx_nic *efx, struct efx_nic_type *type,spin_lock_init (&efx->netif_stop_lock);spin_lock_init (&efx->stats_lock);mutex_init (&efx->mac_lock); - efx->mac_op = &efx_dummy_mac_operations; + efx->mac_op = type->default_mac_ops; efx->phy_op = &efx_dummy_phy_operations; efx->mdio.dev = net_dev;INIT_WORK (&efx->mac_work, efx_mac_work);
drivers/net/sfc/falcon.c +12 -3
@@ -2291,6 +2291,10 @@ int falcon_probe_port(struct efx_nic *efx) efx->mdio.mdio_read = falcon_mdio_read; efx->mdio.mdio_write = falcon_mdio_write; +/* Initial assumption */ + efx->link_state.speed =10000 ; + efx->link_state.fd = true; +/* Hardware flow ctrl. FalconA RX FIFO too small for pause generation */ if (falcon_rev (efx) >=FALCON_REV_B0 ) efx->wanted_fc =EFX_FC_RX |EFX_FC_TX ;
@@ -2809,6 +2813,10 @@ static int falcon_probe_nic_variant(struct efx_nic *efx)return -ENODEV ;case FALCON_REV_A1 : +if (EFX_OWORD_FIELD (nic_stat,FRF_AB_STRAP_10G ) ==0 ) { +EFX_ERR (efx,"Falcon rev A1 1G not supported\n" ); +return -ENODEV ; + }if (EFX_OWORD_FIELD (nic_stat,FRF_AA_STRAP_PCIE ) ==0 ) {EFX_ERR (efx,"Falcon rev A1 PCI-X not supported\n" );return -ENODEV ;
@@ -2823,9 +2831,6 @@ static int falcon_probe_nic_variant(struct efx_nic *efx)return -ENODEV ; } -/* Initial assumed speed */ - efx->link_state.speed =EFX_OWORD_FIELD (nic_stat,FRF_AB_STRAP_10G ) ?10000 :1000 ; -return 0 ; }
@@ -3238,6 +3243,8 @@ void falcon_stop_nic_stats(struct efx_nic *efx)*/ struct efx_nic_type falcon_a_nic_type = { + .default_mac_ops = &falcon_xmac_operations, + .mem_map_size =0x20000 , .txd_ptr_tbl_base =FR_AA_TX_DESC_PTR_TBL_KER , .rxd_ptr_tbl_base =FR_AA_RX_DESC_PTR_TBL_KER ,
@@ -3251,6 +3258,8 @@ struct efx_nic_type falcon_a_nic_type = { };struct efx_nic_type falcon_b_nic_type = { + .default_mac_ops = &falcon_xmac_operations, +/* Map everything up to and including the RSS indirection * table. Don't map MSI-X table, MSI-X PBA since Linux * requires that they not be mapped. */
drivers/net/sfc/net_driver.h +3 -0
@@ -843,6 +843,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 * @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
@@ -857,6 +858,8 @@ static inline const char *efx_dev_name(struct efx_nic *efx)* descriptors */ struct efx_nic_type { +struct efx_mac_operations *default_mac_ops; +unsigned int mem_map_size;unsigned int txd_ptr_tbl_base;unsigned int rxd_ptr_tbl_base;
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:35:00 +0000
Quoted 8 lines
From: Steve Hodgson <[email protected]>
The strap bits are only important on Falcon A and all production boards using it have fixed-speed 10G PHYs.
Replace dummy MAC operations with default MAC operations.
Signed-off-by Ben Hutchings <[email protected]>
Applied.