RDMA/nes: Fix SFP+ link down detection issue with switch port disable
In case of SFP+ PHY, link status check at interrupt processing can give false results. For proper link status change detection a delayed recheck is needed to give nes registers time to settle. Add a periodic link status recheck scheduled at interrupt to detect potential delayed registers state changes. Addresses: http://bugs.openfabrics.org/bugzilla/show_bug.cgi?id=2117 Signed-off-by: Maciej Sosnowski <maciej.sosnowski@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:

committato da
Roland Dreier

parent
ea623455b7
commit
5f61b2c693
@@ -268,6 +268,9 @@ struct nes_device {
|
||||
u8 napi_isr_ran;
|
||||
u8 disable_rx_flow_control;
|
||||
u8 disable_tx_flow_control;
|
||||
|
||||
struct delayed_work work;
|
||||
u8 link_recheck;
|
||||
};
|
||||
|
||||
|
||||
@@ -507,6 +510,7 @@ void nes_nic_ce_handler(struct nes_device *, struct nes_hw_nic_cq *);
|
||||
void nes_iwarp_ce_handler(struct nes_device *, struct nes_hw_cq *);
|
||||
int nes_destroy_cqp(struct nes_device *);
|
||||
int nes_nic_cm_xmit(struct sk_buff *, struct net_device *);
|
||||
void nes_recheck_link_status(struct work_struct *work);
|
||||
|
||||
/* nes_nic.c */
|
||||
struct net_device *nes_netdev_init(struct nes_device *, void __iomem *);
|
||||
|
Fai riferimento in un nuovo problema
Block a user