}
        }
 
+       /* Check if extended speeds 2 (XDR/...) are supported */
+       if (props->port_cap_flags & IB_PORT_CAP_MASK2_SUP &&
+           props->port_cap_flags2 & IB_PORT_EXTENDED_SPEEDS2_SUP) {
+               ext_active_speed = (out_mad->data[56] >> 4) & 0x6;
+
+               switch (ext_active_speed) {
+               case 2:
+                       if (props->port_cap_flags2 & IB_PORT_LINK_SPEED_XDR_SUP)
+                               props->active_speed = IB_SPEED_XDR;
+                       break;
+               }
+       }
+
        /* If reported active speed is QDR, check if is FDR-10 */
        if (props->active_speed == 4) {
                if (dev->port_caps[port - 1].ext_port_cap &
 
        IB_PORT_LINK_WIDTH_2X_SUP               = 1 << 4,
        IB_PORT_LINK_SPEED_HDR_SUP              = 1 << 5,
        IB_PORT_LINK_SPEED_NDR_SUP              = 1 << 10,
+       IB_PORT_EXTENDED_SPEEDS2_SUP            = 1 << 11,
+       IB_PORT_LINK_SPEED_XDR_SUP              = 1 << 12,
 };
 
 #define OPA_CLASS_PORT_INFO_PR_SUPPORT BIT(26)