diff -r b3a1d9898418 -r 95f71bcdcdb7 kernel/eka/drivers/usbcc/chapter9.cpp --- a/kernel/eka/drivers/usbcc/chapter9.cpp Fri May 14 17:13:29 2010 +0300 +++ b/kernel/eka/drivers/usbcc/chapter9.cpp Thu May 27 14:17:14 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