Chirp spread spectrum (CSS) is the modulation technique currently employed by Long-Range (LoRa), which is one of the most prominent Internet of things wireless communications standards. The LoRa physical layer (PHY) employs CSS on top of a variant of frequency shift keying, and non-coherent detection is employed at the receiver. While it offers a good trade-off among coverage, data rate and device simplicity, its maximum achievable data rate is still a limiting factor for some applications. Moreover, the current LoRa standard does not fully exploit the CSS generic case, i.e., when data to be transmitted is encoded in different waveform parameters. Therefore, the goal of this paper is to investigate the performance of CSS while exploring different parameter settings aiming to increase the maximum achievable throughput, and hence increase spectral efficiency. Moreover, coherent and non-coherent reception algorithm design is presented under the framework of maximum likelihood estimation. For the practical receiver design, the formulation of a channel estimation technique is also presented. The performance evaluation of the different variants of CSS is carried out by inspection of the symbol error ratio as a function of the signal-to-noise ratio together with the maximum achievable throughput each scheme can achieve.