if (udev->speed == USB_SPEED_HIGH &&
            (usb_endpoint_xfer_isoc(&ep->desc) ||
             usb_endpoint_xfer_int(&ep->desc)))
-               return (usb_endpoint_maxp(&ep->desc) & 0x1800) >> 11;
+               return usb_endpoint_maxp_mult(&ep->desc) - 1;
 
        return 0;
 }
                return le16_to_cpu(ep->ss_ep_comp.wBytesPerInterval);
 
        max_packet = GET_MAX_PACKET(usb_endpoint_maxp(&ep->desc));
-       max_burst = (usb_endpoint_maxp(&ep->desc) & 0x1800) >> 11;
+       max_burst = usb_endpoint_maxp_mult(&ep->desc);
        /* A 0 in max burst means 1 transfer per ESIT */
-       return max_packet * (max_burst + 1);
+       return max_packet * max_burst;
 }
 
 /* Set up an endpoint with one ring segment.  Do not allocate stream rings.