Commit Graph

5 Commits

Author SHA1 Message Date
Adrian Moreno 6a98fafa3d net: openvswitch: add misc error drop reasons
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2232283
Upstream Status: net-next.git

commit 43d95b30cf5793cdd3c7b1c1cd5fead9b469bd60
Author: Adrian Moreno <amorenoz@redhat.com>
Date:   Fri Aug 11 16:12:52 2023 +0200

    net: openvswitch: add misc error drop reasons

    Use drop reasons from include/net/dropreason-core.h when a reasonable
    candidate exists.

    Acked-by: Aaron Conole <aconole@redhat.com>
    Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
2023-08-21 08:34:23 +02:00
Adrian Moreno 1008eb8dd9 net: openvswitch: add meter drop reason
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2232283
Upstream Status: net-next.git

commit f329d1bc1a4580e0f8a402b14a6fd024ec8e5c7b
Author: Adrian Moreno <amorenoz@redhat.com>
Date:   Fri Aug 11 16:12:51 2023 +0200

    net: openvswitch: add meter drop reason

    By using an independent drop reason it makes it easy to distinguish
    between QoS-triggered or flow-triggered drop.

    Acked-by: Aaron Conole <aconole@redhat.com>
    Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
2023-08-21 08:34:23 +02:00
Adrian Moreno 4d3ff090b6 net: openvswitch: add explicit drop action
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2232283
Upstream Status: net-next.git

commit e7bc7db9ba463e763ac6113279cade19da9cb939
Author: Eric Garver <eric@garver.life>
Date:   Fri Aug 11 16:12:50 2023 +0200

    net: openvswitch: add explicit drop action

    From: Eric Garver <eric@garver.life>

    This adds an explicit drop action. This is used by OVS to drop packets
    for which it cannot determine what to do. An explicit action in the
    kernel allows passing the reason _why_ the packet is being dropped or
    zero to indicate no particular error happened (i.e: OVS intentionally
    dropped the packet).

    Since the error codes coming from userspace mean nothing for the kernel,
    we squash all of them into only two drop reasons:
    - OVS_DROP_EXPLICIT_WITH_ERROR to indicate a non-zero value was passed
    - OVS_DROP_EXPLICIT to indicate a zero value was passed (no error)

    e.g. trace all OVS dropped skbs

     # perf trace -e skb:kfree_skb --filter="reason >= 0x30000"
     [..]
     106.023 ping/2465 skb:kfree_skb(skbaddr: 0xffffa0e8765f2000, \
      location:0xffffffffc0d9b462, protocol: 2048, reason: 196611)

    reason: 196611 --> 0x30003 (OVS_DROP_EXPLICIT)

    Also, this patch allows ovs-dpctl.py to add explicit drop actions as:
      "drop"     -> implicit empty-action drop
      "drop(0)"  -> explicit non-error action drop
      "drop(42)" -> explicit error action drop

    Signed-off-by: Eric Garver <eric@garver.life>
    Co-developed-by: Adrian Moreno <amorenoz@redhat.com>
    Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
2023-08-21 08:34:22 +02:00
Adrian Moreno 3b252dd672 net: openvswitch: add action error drop reason
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2232283
Upstream Status: net-next.git

commit ec7bfb5e5a054f1178e8bdbf4f145fdafa5bf804
Author: Adrian Moreno <amorenoz@redhat.com>
Date:   Fri Aug 11 16:12:49 2023 +0200

    net: openvswitch: add action error drop reason

    Add a drop reason for packets that are dropped because an action
    returns a non-zero error code.

    Acked-by: Aaron Conole <aconole@redhat.com>
    Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
2023-08-21 08:34:22 +02:00
Adrian Moreno 10015df94f net: openvswitch: add last-action drop reason
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2232283
Upstream Status: net-next.git

commit 9d802da40b7c820deb9c60fc394457ea565cafc8
Author: Adrian Moreno <amorenoz@redhat.com>
Date:   Fri Aug 11 16:12:48 2023 +0200

    Create a new drop reason subsystem for openvswitch and add the first
    drop reason to represent last-action drops.

    Last-action drops happen when a flow has an empty action list or there
    is no action that consumes the packet (output, userspace, recirc, etc).
    It is the most common way in which OVS drops packets.

    Implementation-wise, most of these skb-consuming actions already call
    "consume_skb" internally and return directly from within the
    do_execute_actions() loop so with minimal changes we can assume that
    any skb that exits the loop normally is a packet drop.

    Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
2023-08-21 08:34:17 +02:00