Алилуя! Разобрался с NAK . Все заработало как надо !
У меня особый вариант был : изначально был взят HAL Custom HID шаблон , и его постепенно превращали в RNDIS. Заодно и изучали USB потроха. И таки получилось. В принципе HAL не так уж плох, косяков в результате там не нашел (как ни странно). malloc понятно убрал.
Спасибо всем! Смысл оказался таким как только запускаешь прием команды по EP OUT (BULK) , контроллер (именно USB) сам выставляет NAK( 1) по прилету первого прерывания RXFLVL (не OEPINT).
Потом его (NAK) надо не забывать сбрасывать, что HAL и делает (в USB_EPStartXfer [по приему]). Если не сбрасывать получается нормально задержка , в результате которой можно спокойно обработать команду и все будет гут. в это время хосту будет отдаваться NAK по EP OUT.
То есть надо просто отложить вызов USBD_LL_PrepareReceive на нужное время и все. Что мне не нравится - чтобы понять эту простую казалось бы вещь надо все-таки въезжать в регистры. А это не один день мягко говоря... (но зато на всю жизнь - такое не забывается)