• Zong-Zhe Yang's avatar
    wifi: rtw89: mcc: decide pattern and calculate parameters · 17aa2c33
    Zong-Zhe Yang authored
    After the previous works, we can now expand and display the MCC pattern
    in more detail, as shown below.
    
    |<                              MCC interval                            >|
    |<   duration ref    >| (if mid bt) |<   duration aux    >| (if tail bt) |
    |<tob ref >|< toa ref>|     ...     |<tob aux >|< toa aux>|     ...      |
               V                                   V
           tbtt ref                            tbtt aux
               |<          beacon offset          >|
    
    (where tob means `time offset behind` and toa means `time offset ahead`)
    
    There are two key points.
    1. decide position of BT slot if MCC pattern needs to handle BT duration.
    2. calculate all parameters related to tob and toa in MCC pattern.
    
    For point (1), when BT duration needs to be handled, BT position will
    rely on beacon offset, either middle or tail. For point (2), to ensure
    durations of the Wi-Fi roles cover their beacons, we have to calculate
    tob and toa for them according to their TBTT.
    
    And, there are two strategies to calculate parameters, strict and loose.
    In strict pattern, all parameters take HW time into account as limitation.
    But, the strict calculation are not always successful. In loose pattern,
    it only tries to give positive parameters to reference role and doesn't
    care much about auxiliary role. If unfortunately auxiliary role gets
    negative parameters in loose pattern, FW will be notified and then deal
    with it. So, the loose calculation won't fail. In general, we always try
    strict pattern cases before using a loose pattern.
    Signed-off-by: default avatarZong-Zhe Yang <kevin_yang@realtek.com>
    Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
    Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20230831053133.24015-5-pkshih@realtek.com
    17aa2c33
core.h 130 KB