Page MenuHomeFreeBSD

D30733.diff
No OneTemporary

D30733.diff

diff --git a/sys/dev/ixl/if_ixl.c b/sys/dev/ixl/if_ixl.c
--- a/sys/dev/ixl/if_ixl.c
+++ b/sys/dev/ixl/if_ixl.c
@@ -49,7 +49,7 @@
*********************************************************************/
#define IXL_DRIVER_VERSION_MAJOR 2
#define IXL_DRIVER_VERSION_MINOR 3
-#define IXL_DRIVER_VERSION_BUILD 0
+#define IXL_DRIVER_VERSION_BUILD 1
#define IXL_DRIVER_VERSION_STRING \
__XSTRING(IXL_DRIVER_VERSION_MAJOR) "." \
diff --git a/sys/dev/ixl/ixl_pf_iflib.c b/sys/dev/ixl/ixl_pf_iflib.c
--- a/sys/dev/ixl/ixl_pf_iflib.c
+++ b/sys/dev/ixl/ixl_pf_iflib.c
@@ -403,20 +403,23 @@
{
struct i40e_hw *hw = &pf->hw;
device_t dev = iflib_get_dev(pf->vsi.ctx);
- struct i40e_aqc_get_link_status *status =
- (struct i40e_aqc_get_link_status *)&e->desc.params.raw;
-
- /* Request link status from adapter */
+ struct i40e_link_status *link_info = &hw->phy.link_info;
+
+ /* Driver needs to re-enable delivering of link status events
+ * by FW after each event reception. Call i40e_get_link_status
+ * to do that. To not lose information about link state changes,
+ * which happened between receiving an event and the call,
+ * do not rely on status from event but use most recent
+ * status information retrieved by the call. */
hw->phy.get_link_info = TRUE;
i40e_get_link_status(hw, &pf->link_up);
/* Print out message if an unqualified module is found */
- if ((status->link_info & I40E_AQ_MEDIA_AVAILABLE) &&
+ if ((link_info->link_info & I40E_AQ_MEDIA_AVAILABLE) &&
(pf->advertised_speed) &&
- (atomic_load_32(&pf->state) &
- IXL_PF_STATE_LINK_ACTIVE_ON_DOWN) != 0 &&
- (!(status->an_info & I40E_AQ_QUALIFIED_MODULE)) &&
- (!(status->link_info & I40E_AQ_LINK_UP)))
+ (if_getflags(pf->vsi.ifp) & IFF_UP) &&
+ (!(link_info->an_info & I40E_AQ_QUALIFIED_MODULE)) &&
+ (!(link_info->link_info & I40E_AQ_LINK_UP)))
device_printf(dev, "Link failed because "
"an unqualified module was detected!\n");

File Metadata

Mime Type
text/plain
Expires
Tue, Feb 4, 11:21 PM (3 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16462889
Default Alt Text
D30733.diff (1 KB)

Event Timeline