diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2009-11-25 11:12:01 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-11-26 18:59:43 -0500 |
commit | 9007b9fa368b172e6b9a985899080fbebb7d3204 (patch) | |
tree | 3d725a55e193fe9763fcd514a6b4246eae8da957 /drivers/net/sfc/efx.c | |
parent | fe75820b99ff2de713de23252432f0f9d0ca1d35 (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.c | 5 |
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 | ||
1904 | static struct efx_mac_operations efx_dummy_mac_operations = { | 1901 | static 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 | ||
1910 | static struct efx_phy_operations efx_dummy_phy_operations = { | 1905 | static struct efx_phy_operations efx_dummy_phy_operations = { |