skbuff: Rename 'offload_mr_fwd_mark' to 'offload_l3_fwd_mark'
authorIdo Schimmel <idosch@mellanox.com>
Tue, 4 Dec 2018 08:15:10 +0000 (08:15 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 4 Dec 2018 16:36:36 +0000 (08:36 -0800)
Commit abf4bb6b63d0 ("skbuff: Add the offload_mr_fwd_mark field") added
the 'offload_mr_fwd_mark' field to indicate that a packet has already
undergone L3 multicast routing by a capable device. The field is used to
prevent the kernel from forwarding a packet through a netdev through
which the device has already forwarded the packet.

Currently, no unicast packet is routed by both the device and the
kernel, but this is about to change by subsequent patches and we need to
be able to mark such packets, so that they will no be forwarded twice.

Instead of adding yet another field to 'struct sk_buff', we can just
rename 'offload_mr_fwd_mark' to 'offload_l3_fwd_mark', as a packet
either has a multicast or a unicast destination IP.

While at it, add a comment about both 'offload_fwd_mark' and
'offload_l3_fwd_mark'.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
include/linux/skbuff.h
net/core/skbuff.c
net/ipv4/ipmr.c

index c293ff1eed6375d046131c63c03531b022154721..920085fbbf2a9c5c831a03e172a080750a743437 100644 (file)
@@ -3554,10 +3554,10 @@ static void mlxsw_sp_rx_listener_mark_func(struct sk_buff *skb, u8 local_port,
        return mlxsw_sp_rx_listener_no_mark_func(skb, local_port, priv);
 }
 
-static void mlxsw_sp_rx_listener_mr_mark_func(struct sk_buff *skb,
+static void mlxsw_sp_rx_listener_l3_mark_func(struct sk_buff *skb,
                                              u8 local_port, void *priv)
 {
-       skb->offload_mr_fwd_mark = 1;
+       skb->offload_l3_fwd_mark = 1;
        skb->offload_fwd_mark = 1;
        return mlxsw_sp_rx_listener_no_mark_func(skb, local_port, priv);
 }
@@ -3605,8 +3605,8 @@ out:
        MLXSW_RXL(mlxsw_sp_rx_listener_mark_func, _trap_id, _action,    \
                _is_ctrl, SP_##_trap_group, DISCARD)
 
-#define MLXSW_SP_RXL_MR_MARK(_trap_id, _action, _trap_group, _is_ctrl) \
-       MLXSW_RXL(mlxsw_sp_rx_listener_mr_mark_func, _trap_id, _action, \
+#define MLXSW_SP_RXL_L3_MARK(_trap_id, _action, _trap_group, _is_ctrl) \
+       MLXSW_RXL(mlxsw_sp_rx_listener_l3_mark_func, _trap_id, _action, \
                _is_ctrl, SP_##_trap_group, DISCARD)
 
 #define MLXSW_SP_EVENTL(_func, _trap_id)               \
@@ -3683,7 +3683,7 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
        MLXSW_SP_RXL_MARK(IPV6_PIM, TRAP_TO_CPU, PIM, false),
        MLXSW_SP_RXL_MARK(RPF, TRAP_TO_CPU, RPF, false),
        MLXSW_SP_RXL_MARK(ACL1, TRAP_TO_CPU, MULTICAST, false),
-       MLXSW_SP_RXL_MR_MARK(ACL2, TRAP_TO_CPU, MULTICAST, false),
+       MLXSW_SP_RXL_L3_MARK(ACL2, TRAP_TO_CPU, MULTICAST, false),
        /* NVE traps */
        MLXSW_SP_RXL_MARK(NVE_ENCAP_ARP, TRAP_TO_CPU, ARP, false),
 };
index 75d50ab7997cdabba047dff05eb0297db651f369..b1831a5ca1733932e36d44bfd78703b032a9f3e1 100644 (file)
@@ -616,6 +616,8 @@ typedef unsigned char *sk_buff_data_t;
  *     @pkt_type: Packet class
  *     @fclone: skbuff clone status
  *     @ipvs_property: skbuff is owned by ipvs
+ *     @offload_fwd_mark: Packet was L2-forwarded in hardware
+ *     @offload_l3_fwd_mark: Packet was L3-forwarded in hardware
  *     @tc_skip_classify: do not classify packet. set by IFB device
  *     @tc_at_ingress: used within tc_classify to distinguish in/egress
  *     @tc_redirected: packet was redirected by a tc action
@@ -799,7 +801,7 @@ struct sk_buff {
        __u8                    remcsum_offload:1;
 #ifdef CONFIG_NET_SWITCHDEV
        __u8                    offload_fwd_mark:1;
-       __u8                    offload_mr_fwd_mark:1;
+       __u8                    offload_l3_fwd_mark:1;
 #endif
 #ifdef CONFIG_NET_CLS_ACT
        __u8                    tc_skip_classify:1;
index c78ce114537e097d532eb112d8c4eb86c724f6ea..40552547c69a71929f386476da1b06ea380c5bd5 100644 (file)
@@ -4885,7 +4885,7 @@ void skb_scrub_packet(struct sk_buff *skb, bool xnet)
 
 #ifdef CONFIG_NET_SWITCHDEV
        skb->offload_fwd_mark = 0;
-       skb->offload_mr_fwd_mark = 0;
+       skb->offload_l3_fwd_mark = 0;
 #endif
 
        if (!xnet)
index a6defbec4f1b4338993756ea7b8681012450aa1a..5cbc749a50aaee0bc984b8d0a237ec92355614ad 100644 (file)
@@ -1802,7 +1802,7 @@ static bool ipmr_forward_offloaded(struct sk_buff *skb, struct mr_table *mrt,
        struct vif_device *out_vif = &mrt->vif_table[out_vifi];
        struct vif_device *in_vif = &mrt->vif_table[in_vifi];
 
-       if (!skb->offload_mr_fwd_mark)
+       if (!skb->offload_l3_fwd_mark)
                return false;
        if (!out_vif->dev_parent_id.id_len || !in_vif->dev_parent_id.id_len)
                return false;