Re: [PATCH net-next v4 8/8] net: dsa: felix: Add support for MRP
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2021-02-17 10:26:03
Also in:
bridge, lkml
On Tue, Feb 16, 2021 at 10:42:05PM +0100, Horatiu Vultur wrote:
quoted hunk ↗ jump to hunk
@@ -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