On Tue, Feb 16, 2021 at 10:42:05PM +0100, Horatiu Vultur wrote:
> @@ -112,6 +113,7 @@ static struct sk_buff *ocelot_rcv(struct sk_buff *skb,
>       ocelot_xfh_get_qos_class(extraction, &qos_class);
>       ocelot_xfh_get_tag_type(extraction, &tag_type);
>       ocelot_xfh_get_vlan_tci(extraction, &vlan_tci);
> +     ocelot_xfh_get_cpuq(extraction, &cpuq);
>  
>       skb->dev = dsa_master_find_slave(netdev, 0, src_port);
>       if (!skb->dev)
> @@ -126,6 +128,12 @@ static struct sk_buff *ocelot_rcv(struct sk_buff *skb,
>       skb->offload_fwd_mark = 1;
>       skb->priority = qos_class;
>  
> +#if IS_ENABLED(CONFIG_BRIDGE_MRP)
> +     if (eth_hdr(skb)->h_proto == cpu_to_be16(ETH_P_MRP) &&
> +         cpuq & BIT(OCELOT_MRP_CPUQ))

Checking the EtherType seems redundant, since those are the only frames
trapped to the MRP CPU queue.

Also, the cpuq variable is potentially unused when CONFIG_BRIDGE_MRP is
unset. I'm concerned that static analysis people may come in and try to
fix it up with even more ifdeffery, which is definitely not what I would
like to go for.

How about just the following, which is not conditionally compiled:
        if (!(cpuq & BIT(OCELOT_MRP_CPUQ)))
                skb->offload_fwd_mark = 1;

> +             skb->offload_fwd_mark = 0;
> +#endif
> +
>       /* Ocelot switches copy frames unmodified to the CPU. However, it is
>        * possible for the user to request a VLAN modification through
>        * VCAP_IS1_ACT_VID_REPLACE_ENA. In this case, what will happen is that
> -- 
> 2.27.0
> 

Reply via email to