• Vladimir Oltean's avatar
    net/sched: mqprio: simplify handling of nlattr portion of TCA_OPTIONS · 3dd0c16e
    Vladimir Oltean authored
    In commit 4e8b86c0 ("mqprio: Introduce new hardware offload mode and
    shaper in mqprio"), the TCA_OPTIONS format of mqprio was extended to
    contain a fixed portion (of size NLA_ALIGN(sizeof struct tc_mqprio_qopt))
    and a variable portion of other nlattrs (in the TCA_MQPRIO_* type space)
    following immediately afterwards.
    
    In commit feb2cf3d ("net/sched: mqprio: refactor nlattr parsing to a
    separate function"), we've moved the nlattr handling to a smaller
    function, but yet, a small parse_attr() still remains, and the larger
    mqprio_parse_nlattr() still does not have access to the beginning, and
    the length, of the TCA_OPTIONS region containing these other nlattrs.
    
    In a future change, the mqprio qdisc will need to iterate through this
    nlattr region to discover other attributes, so eliminate parse_attr()
    and add 2 variables in mqprio_parse_nlattr() which hold the beginning
    and the length of the nlattr range.
    
    We avoid the need to memset when nlattr_opt_len has insufficient length
    by pre-initializing the table "tb".
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
    Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
    Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    3dd0c16e
sch_mqprio.c 16.1 KB