No break at the end of case
I think the compiler is correct, there is no break at the end of your “case USB_REQ_TYPE_STANDARD:”
If you gave a proper indentation to your code, you could see it right away.
Even if it looks redundant, I recommend to keep it, the compiler will optimize it anyway.
Having no default is not a good practice either, as it is adviced to catch all possible cases.
the last lines of the function should be:
...
..case USB_REQ_TYPE_STANDARD:
....switch (req->bRequest)
....{ ...}
....break; // end of USB_REQ_TYPE_STANDARD case
..default:
....break;
..}
..return USBD_OK;
}