Re: [PATCH 0/4] net: bridge: mcast: add multicast exponential field encoding

Nikolay Aleksandrov
2026-03-27T06:41:55Z

On 26/03/2026 17:07, Ujjal Roy wrote:
> Description:
> This series addresses a mismatch in how multicast query
> intervals and response codes are handled across IPv4 (IGMPv3)
> and IPv6 (MLDv2). While decoding logic currently exists,
> the corresponding encoding logic is missing during query
> packet generation. This leads to incorrect intervals being
> transmitted when values exceed their linear thresholds.
>
> The patches introduce a unified floating-point encoding
> approach based on RFC3376 and RFC3810, ensuring that large
> intervals are correctly represented in QQIC and MRC fields
> using the exponent-mantissa format.
>
> Key Changes:
> * ipv4: igmp: get rid of IGMPV3_{QQIC,MRC} and simplify calculation
> Removes legacy macros in favor of a cleaner, unified
> calculation for retrieving intervals from encoded fields,
> improving code maintainability.
>
> * ipv6: mld: rename mldv2_mrc() and add mldv2_qqi()
> Standardizes MLDv2 terminology by renaming mldv2_mrc()
> to mldv2_mrd() (Maximum Response Delay) and introducing
> a new API mldv2_qqi for QQI calculation, improving code
> readability.
>
> * ipv4: igmp: encode multicast exponential fields
> Introduces the logic to dynamically calculate the exponent
> and mantissa using bit-scan (fls). This ensures QQIC and
> MRC fields (8-bit) are properly encoded when transmitting
> query packets with intervals that exceed their respective
> linear threshold value of 128 (for QQI/MRT).
>
> * ipv6: mld: encode multicast exponential fields
> Applies similar encoding logic for MLDv2. This ensures
> QQIC (8-bit) and MRC (16-bit) fields are properly encoded
> when transmitting query packets with intervals that exceed
> their respective linear thresholds (128 for QQI; 32768
> for MRD).
>
> Impact:
> These changes ensure that multicast queriers and listeners
> stay synchronized on timing intervals, preventing protocol
> timeouts or premature group membership expiration caused
> by incorrectly formatted packet headers.
>

Can you add selftests which cover these cases?