aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/efx.c
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2009-11-25 11:12:01 -0500
committerDavid S. Miller <davem@davemloft.net>2009-11-26 18:59:43 -0500
commit9007b9fa368b172e6b9a985899080fbebb7d3204 (patch)
tree3d725a55e193fe9763fcd514a6b4246eae8da957 /drivers/net/sfc/efx.c
parentfe75820b99ff2de713de23252432f0f9d0ca1d35 (diff)
sfc: Simplify XMAC link polling
From: Steve Hodgson <shodgson@solarflare.com> Only the XMAC on Falcon needs help from the driver to poll and reset the MAC-PHY link (XAUI); GMII is a simple parallel bus and on later NICs firmware takes care of the XAUI link. Also, an XMAC interrupt currently schedules a work item which simply clears a flag (efx_nic::mac_up) to be checked by the regular monitor (or the next link reconfiguration, if that is sooner). Rename the flag to xmac_poll_required, changing its sense. Remove the needless indirection and just set the flag immediately. Call falcon_xmac_poll() directly where required. Add a new generic operation mac_op::check_fault to check the link outside of regular monitoring, as required during self-tests. (Note that this leaves us with an unused work item, but we will immediately have another use for it.) Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc/efx.c')
-rw-r--r--drivers/net/sfc/efx.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index d17cea9f4e88..15616dd9ed41 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -693,8 +693,6 @@ static void efx_mac_work(struct work_struct *data)
693 struct efx_nic *efx = container_of(data, struct efx_nic, mac_work); 693 struct efx_nic *efx = container_of(data, struct efx_nic, mac_work);
694 694
695 mutex_lock(&efx->mac_lock); 695 mutex_lock(&efx->mac_lock);
696 if (efx->port_enabled)
697 efx->mac_op->irq(efx);
698 mutex_unlock(&efx->mac_lock); 696 mutex_unlock(&efx->mac_lock);
699} 697}
700 698
@@ -774,7 +772,6 @@ static void efx_start_port(struct efx_nic *efx)
774 mutex_lock(&efx->mac_lock); 772 mutex_lock(&efx->mac_lock);
775 efx->port_enabled = true; 773 efx->port_enabled = true;
776 __efx_reconfigure_port(efx); 774 __efx_reconfigure_port(efx);
777 efx->mac_op->irq(efx);
778 mutex_unlock(&efx->mac_lock); 775 mutex_unlock(&efx->mac_lock);
779} 776}
780 777
@@ -1903,8 +1900,6 @@ void efx_port_dummy_op_set_id_led(struct efx_nic *efx, enum efx_led_mode mode)
1903 1900
1904static struct efx_mac_operations efx_dummy_mac_operations = { 1901static struct efx_mac_operations efx_dummy_mac_operations = {
1905 .reconfigure = efx_port_dummy_op_void, 1902 .reconfigure = efx_port_dummy_op_void,
1906 .poll = efx_port_dummy_op_void,
1907 .irq = efx_port_dummy_op_void,
1908}; 1903};
1909 1904
1910static struct efx_phy_operations efx_dummy_phy_operations = { 1905static struct efx_phy_operations efx_dummy_phy_operations = {