MASCAN TX buffers are paged. CANTBSEL register is used to map TX buffer into CPU address space at the address of the "foreground buffer".
Also logics of TBSEL allows to set only one of TX2-TX0 bits. If you write more than one '1' to TBSEL, then lowest order bit will be set, and other bits be cleared. For example you write 7 - you read 1. You write 6 - you read 2. This allows to simplify code of selecting empty buffer. You just CANTBSEL = CANTXFLG, and one of free buffers is mapped to address space. In case CANTXFLG is 0, no TX buffer is selected. You want to enable interrupt for buffer currently mapped into address space? Then just CANTIER |= CANTBSEL;