I took a look into the usb_serial.c but could not find any DMA capability here.
It does indeed use DMA. There are the specific lines for USB serial transmit.
Code:
usb_prepare_transfer(xfer, txbuf, TX_SIZE, 0);
arm_dcache_flush_delete(txbuf, TX_SIZE);
usb_transmit(CDC_TX_ENDPOINT, xfer);
usb_prepare_transfer() fills in the transfer descriptor structure which the USB controller uses, then like all DMA the CPU cache needs to be flushed so the data is actually in memory where the DMA controller can access, then usb_transmit() calls code which actually schedules the DMA to happen. That usb_transmit() function and others are common to all the USB device types, so you'll find them in usb.c rather than usb_serial.c. To understand how the DMA works, you really need to carefully study the reference manual about the USB hardware, particularly the device-mode QH and qTD structures. Reading the USB 2.0 spec and EHCI spec also helps, but to be realistic, those are very long and EHCI is quite complicated. It's the sort of learning curve you could expect to measure in years, not days or weeks.
It is possible to redirect the data from the Rx FiFo of the SPI to the USB Serial TX using DMA?
The simple answer is no, that's not how the DMA controller works. Or DMA controllers (plural), as USB has its own bus master DMA built in and there are 2 completely different types of SPI hardware, called LPSPI and FlexSPI. FlexSPI also has its own bus master DMA built in. LPSPI doesn't have its own DMA built in, but it can be used with the general purpose DMA controller. So that's 3 different DMA controllers, all very different from each other.
The normal way things work is between peripheral and memory. To go from SPI to USB, you would have SPI write to buffers in memory, then have USB transmit from those buffers.
So the complex answer is the hardware just isn't meant to do DMA directly from SPI to USB without going through memory, as it's not even the same type of DMA. I don't want to say it's technically impossible, as there might be some highly improbable way. But it's not meant to work like that. If you did mange to do so, I would imagine you'd be very unlikely to achieve anything as good as going through memory.