diff options
author | Jakub Kicinski | 2017-04-05 01:12:25 +0200 |
---|---|---|
committer | David S. Miller | 2017-04-05 19:49:12 +0200 |
commit | cee4295133ba3b85b2f22b542d8855232deba4a3 (patch) | |
tree | d8b725836eff15c0c5352fd082cf7f254d5eb6e9 /drivers/net/ethernet/netronome/nfp/nfp_net_common.c | |
parent | nfp: add mutex protection for the port list (diff) | |
download | kernel-qcow2-linux-cee4295133ba3b85b2f22b542d8855232deba4a3.tar.gz kernel-qcow2-linux-cee4295133ba3b85b2f22b542d8855232deba4a3.tar.xz kernel-qcow2-linux-cee4295133ba3b85b2f22b542d8855232deba4a3.zip |
nfp: track link state changes
For caching link settings - remember if we have seen link events
since the last time the eth_port information was refreshed.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/nfp_net_common.c')
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 8f2da128ce0f..36028b752503 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -376,6 +376,19 @@ static irqreturn_t nfp_net_irq_rxtx(int irq, void *data) return IRQ_HANDLED; } +bool nfp_net_link_changed_read_clear(struct nfp_net *nn) +{ + unsigned long flags; + bool ret; + + spin_lock_irqsave(&nn->link_status_lock, flags); + ret = nn->link_changed; + nn->link_changed = false; + spin_unlock_irqrestore(&nn->link_status_lock, flags); + + return ret; +} + /** * nfp_net_read_link_status() - Reread link status from control BAR * @nn: NFP Network structure @@ -395,6 +408,7 @@ static void nfp_net_read_link_status(struct nfp_net *nn) goto out; nn->link_up = link_up; + nn->link_changed = true; if (nn->link_up) { netif_carrier_on(nn->dp.netdev); |