DP_AUX_MAX_PAYLOAD_BYTES : bytes_to_recv;
 
                /* Entire msg read timeout since initiate of msg read */
-               if (bytes_to_recv == size - 1 && hdcp2_msg_data->msg_read_timeout > 0)
-                       msg_end = ktime_add_ms(ktime_get_raw(),
-                                              hdcp2_msg_data->msg_read_timeout);
+               if (bytes_to_recv == size - 1 && hdcp2_msg_data->msg_read_timeout > 0) {
+                       if (intel_encoder_is_mst(connector->encoder))
+                               msg_end = ktime_add_ms(ktime_get_raw(),
+                                                      hdcp2_msg_data->msg_read_timeout *
+                                                      connector->port->parent->num_ports);
+                       else
+                               msg_end = ktime_add_ms(ktime_get_raw(),
+                                                      hdcp2_msg_data->msg_read_timeout);
+               }
 
                ret = drm_dp_dpcd_read(aux, offset,
                                       (void *)byte, len);