• Alex Elder's avatar
    net: ipa: fix HOLB timer calculation · f13a8c31
    Alex Elder authored
    For IPA v4.2, the exact interpretation of the register that defines
    the timeout for avoiding head-of-line blocking was a little unclear.
    We're only assigning a 0 timeout to it right now, so that wasn't
    very important.  But now that I know how it's supposed to work, I'm
    fixing it.
    
    The register represents a tick counter, where each tick is equal to
    128 IPA core clock cycles.  For IPA v3.5.1, the register contains
    a simple counter value.  But for IPA v4.2, the register contains two
    fields, base and scale, which approximate the tick counter as:
        ticks = base << scale
    The base and scale values to use for a given tick count are computed
    using clever bit operations, and measures are taken to make the
    resulting time period as close as possible to that requested.
    
    There's no need for ipa_endpoint_init_hol_block_timer() to return
    an error, so change its return type to void.
    Signed-off-by: default avatarAlex Elder <elder@linaro.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f13a8c31
ipa_endpoint.c 47.1 KB