> >> The existing code is inconsistent in reporting and accepting the > >> combined channel count. bnxt_get_channels() reports maximum combined > >> as the maximum rx count. bnxt_set_channels() accepts combined count > >> that cannot be bigger than max rx or max tx. > >> > >> For example, if max rx = 2 and max tx = 1, we report max supported > >> combined to be 2. But if the user tries to set combined to 2, it > >> will fail because 2 is bigger than max tx which is 1. > >> > >> Fix the code to be consistent. Max allowed combined = max(max_rx, > max_tx). > >> We will accept a combined channel count <= max(max_rx, max_tx). > > > > Don't you mean the 'max allowed combined = min(max_rx, max_tx)'. > > How does using 'max' change the faulty scenario you've described? > > I'm fixing the inconsistency described in the first 2 paragraphs. The driver > logic > allows a combined ring to be rx or tx only. In the above example, we allow > combined to be set to 2. The 2nd combined ring supports rx only.
Then what makes it a combined channel? Sounds to me like in the above scenario you should have claimed support for: - max rx == 2 - max tx == 1 - max combined == 1