I guess I have to answer my own question 
Time-of-air is calculated from the duration of the preamble and the transmitted packet

Both of these durations are based on the symbol period, which is derived from the following equations:


First, the preamble duration is calculated from

where n is the programmed preamble length (8 for EU868)
Next, the payload duration is calculated:

The equation for number of payload symbols creates the staircase increase in total payload/on airtime.
For those who were wondering, these equations are drawn from the SX1276 datasheet (not the lorawan specification document)