> > > @@ -1176,15 +1188,16 @@ afunc_set_alt(struct usb_function *fn, unsigned > intf, unsigned alt) > > factor = 1000; > > } else { > > ep_desc = &hs_epin_desc; > > - factor = 125; > > + factor = 8000; > > } > > > > /* pre-compute some values for iso_complete() */ > > uac2->p_framesize = opts->p_ssize * > > num_channels(opts->p_chmask); > > rate = opts->p_srate * uac2->p_framesize; > > - uac2->p_interval = (1 << (ep_desc->bInterval - 1)) * factor; > > - uac2->p_pktsize = min_t(unsigned int, rate / uac2->p_interval, > > + uac2->p_interval = factor / (1 << (ep_desc->bInterval > > + - 1)); > > Your version is correct. b_interval needs to get larger when bInterval decreases > of course. > > > + uac2->p_pktsize = min_t(unsigned int, DIV_ROUND_UP(rate, > > + uac2->p_interval), > > prm->max_psize); > > This change, however, is not needed. uac2->p_pktsize needs to be rounded > down, so an extra frame can be added when the residue accumulator > overflows. The reason is simply that we can only send packets that contain full > sample frames, so we have to evenly distribute those left-over samples that > accumulate in one go once we have enough to fill a complete frame. > > Could you put the above change in an extra patch, as it's not directly related to > your wMaxPacketSize change? > Ok, I will. Peter ��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥