diff -r 41f0cfe18c80 -r c734af59ce98 kernel/eka/drivers/usbcc/chapter9.cpp --- a/kernel/eka/drivers/usbcc/chapter9.cpp Tue Apr 27 18:02:57 2010 +0300 +++ b/kernel/eka/drivers/usbcc/chapter9.cpp Tue May 11 17:28:22 2010 +0300 @@ -1136,8 +1136,19 @@ // New configuration is the same as the old one (but not 0) if (iCurrentConfig == aValue) { - // no-op __KTRACE_OPT(KUSB, Kern::Printf(" Configuration: New == Old == %d --> exiting", aValue)); + + // From the spec 9.1.1.5, Data toggle is reset to zero here when + // setconfiguration(x->x)(x!=0) received, although we only support + // single configuration currently. + TInt num = 0; + TInt ret = DoForEveryEndpointInUse(&DUsbClientController::ResetDataToggle, num); + if(ret != KErrNone) + { + __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint data toggle reset failed")); + } + __KTRACE_OPT(KUSB, Kern::Printf(" Called ResetDataToggle()for %d endpoints", num)); + return; } // Device is already configured