I suspect there is a bug in cfo_model_impl.h, where calling set_std_dev to set the std_dev back to 0 causes undesirable effects.
How to reproduce the bug:
a) Standard OFDM TX-RX example in GRC. Connect the TX block to the RX block through this channel model block.
b) Use a variable slider to control the std_dev of the CFO model block.
c) Start the flowgraph, with 0 as the initial value of the std_dev. All should be fine.
d) Bump up the std_dev and observe high packet errors.
e) Drop the std_dev back to 0. While we expect the packet error rate to drop back to 0, but that does not happen.
Reason: The value of d_cfo might be a high non-zero value. Even though we drop std_dev back to 0, d_cfo remains high, and continues to create CFO.
How to fix it:
In the function set_std_dev, reset the value of d_cfo to 0.
If someone could verify that this is indeed a bug, that would be very helpful. Thank you in advance for your help.