u32 start_cs, last_cs;
        int i;
 
+       if (!sch_ep->sch_tt)
+               return 0;
+
        start_ss = offset % 8;
 
        if (sch_ep->ep_type == ISOC_OUT_EP) {
 static int check_sch_bw(struct mu3h_sch_bw_info *sch_bw,
                        struct mu3h_sch_ep_info *sch_ep)
 {
+       const u32 esit_boundary = get_esit_boundary(sch_ep);
+       const u32 bw_boundary = get_bw_boundary(sch_ep->speed);
        u32 offset;
-       u32 min_bw;
-       u32 min_index;
        u32 worst_bw;
-       u32 bw_boundary;
-       u32 esit_boundary;
-       u32 min_num_budget;
-       u32 min_cs_count;
+       u32 min_bw = ~0;
+       int min_index = -1;
        int ret = 0;
 
        /*
         * Search through all possible schedule microframes.
         * and find a microframe where its worst bandwidth is minimum.
         */
-       min_bw = ~0;
-       min_index = 0;
-       min_cs_count = sch_ep->cs_count;
-       min_num_budget = sch_ep->num_budget_microframes;
-       esit_boundary = get_esit_boundary(sch_ep);
        for (offset = 0; offset < sch_ep->esit; offset++) {
-               if (sch_ep->sch_tt) {
-                       ret = check_sch_tt(sch_ep, offset);
-                       if (ret)
-                               continue;
-               }
+               ret = check_sch_tt(sch_ep, offset);
+               if (ret)
+                       continue;
 
                if ((offset + sch_ep->num_budget_microframes) > esit_boundary)
                        break;
 
                worst_bw = get_max_bw(sch_bw, sch_ep, offset);
+               if (worst_bw > bw_boundary)
+                       continue;
+
                if (min_bw > worst_bw) {
                        min_bw = worst_bw;
                        min_index = offset;
-                       min_cs_count = sch_ep->cs_count;
-                       min_num_budget = sch_ep->num_budget_microframes;
                }
                if (min_bw == 0)
                        break;
        }
 
-       bw_boundary = get_bw_boundary(sch_ep->speed);
-       /* check bandwidth */
-       if (min_bw > bw_boundary)
+       if (min_index < 0)
                return ret ? ret : -ESCH_BW_OVERFLOW;
 
        sch_ep->offset = min_index;
-       sch_ep->cs_count = min_cs_count;
-       sch_ep->num_budget_microframes = min_num_budget;
 
        return load_ep_bw(sch_bw, sch_ep, true);
 }