What do you actually mean regarding Linux. AFAIK Linux flexcan driver doesn't support in order TX FIFO. Messages are sent according to their ID priority. Hm, same ID? Having enough spare TX MB's, they perhaps could be send in order, but once no spare MB's, I fear your "FIFO" would break even with same ID.
Implementing FIFO is possible with MB index based TX priority. You fill MB0, enable interrupt only for MB0. Next TX message is written to MB1, disabling MB0 interrupt and enabling MB1 interrupt and so on until you have spare MB's. When TX interrupt happens you reset TX MB index. Something like that.