components/openvswitch/patches/03-dpif-provider.patch
author Chad Mynhier <chad.mynhier@oracle.com>
Wed, 12 Oct 2016 11:24:25 -0700
changeset 7095 6469e6424607
parent 5730 cca4aa297e68
child 7412 49c812f3de0b
permissions -rw-r--r--
24811276 Fix 64-bit Python builds so pstack(1) will work
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
     1
This patch includes support for the Solaris dpif provider.
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
     2
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
     3
This patch has not been proposed upstream because we are not yet
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
     4
proposing Solaris specific requirements upstream.
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
     5
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
     6
diff --git a/lib/dpif-provider.h b/lib/dpif-provider.h
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
     7
index 389e84e..5f2d50a 100644
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
     8
--- a/lib/dpif-provider.h
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
     9
+++ b/lib/dpif-provider.h
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    10
@@ -439,6 +439,7 @@ struct dpif_class {
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    11
 };
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    12
 
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    13
 extern const struct dpif_class dpif_linux_class;
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    14
+extern const struct dpif_class dpif_solaris_class;
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    15
 extern const struct dpif_class dpif_netdev_class;
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    16
 
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    17
 #ifdef  __cplusplus
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    18
diff --git a/lib/dpif.c b/lib/dpif.c
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    19
index 450c6c8..337cf4b 100644
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    20
--- a/lib/dpif.c
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    21
+++ b/lib/dpif.c
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    22
@@ -60,6 +60,9 @@ static const struct dpif_class *base_dpif_classes[] = {
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    23
 #ifdef __linux__
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    24
     &dpif_linux_class,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    25
 #endif
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    26
+#ifdef __sun
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    27
+    &dpif_solaris_class,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    28
+#endif
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    29
     &dpif_netdev_class,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    30
 };
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    31
 
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    32
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    33
index 9b87248..656e6b1 100644
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    34
--- a/ofproto/ofproto-dpif.c
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    35
+++ b/ofproto/ofproto-dpif.c
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    36
@@ -1469,7 +1469,7 @@ run(struct ofproto *ofproto_)
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    37
 }
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    38
 
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    39
 static void
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    40
-wait(struct ofproto *ofproto_)
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    41
+dpwait(struct ofproto *ofproto_)
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    42
 {
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    43
     struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_);
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    44
 
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    45
@@ -4946,7 +4946,7 @@ const struct ofproto_class ofproto_dpif_class = {
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    46
     destruct,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    47
     dealloc,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    48
     run,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    49
-    wait,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    50
+    dpwait,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    51
     NULL,                       /* get_memory_usage. */
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    52
     type_get_memory_usage,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    53
     flush,
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    54
diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    55
index 028e7e0..62e0cf1 100644
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    56
--- a/ofproto/ofproto-dpif-xlate.c
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    57
+++ b/ofproto/ofproto-dpif-xlate.c
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    58
@@ -3236,6 +3236,7 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout)
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    59
     fat_rwlock_unlock(&xlate_rwlock);
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    60
 }
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    61
 
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    62
+#ifdef __linux__
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    63
 /* Returns the maximum number of packets that the Linux kernel is willing to
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    64
  * queue up internally to certain kinds of software-implemented ports, or the
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    65
  * default (and rarely modified) value if it cannot be determined. */
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    66
@@ -3288,7 +3289,9 @@ count_output_actions(const struct ofpbuf *odp_actions)
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    67
     }
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    68
     return n;
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    69
 }
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    70
+#endif
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    71
 
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    72
+#ifdef __linux__
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    73
 /* Returns true if 'odp_actions' contains more output actions than the datapath
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    74
  * can reliably handle in one go.  On Linux, this is the value of the
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    75
  * net.core.netdev_max_backlog sysctl, which limits the maximum number of
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    76
@@ -3297,15 +3300,19 @@ count_output_actions(const struct ofpbuf *odp_actions)
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    77
 static bool
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    78
 too_many_output_actions(const struct ofpbuf *odp_actions)
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    79
 {
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    80
-#ifdef __linux__
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    81
     return (ofpbuf_size(odp_actions) / NL_A_U32_SIZE > netdev_max_backlog()
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    82
             && count_output_actions(odp_actions) > netdev_max_backlog());
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    83
+}
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    84
 #else
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    85
+static bool
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    86
+too_many_output_actions(const struct ofpbuf *odp_actions OVS_UNUSED)
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    87
+{
5730
cca4aa297e68 22590644 OpenvSwitch should be updated to version 2.3.2
Mark Haywood <Mark.Haywood@Oracle.COM>
parents: 5090
diff changeset
    88
+
5090
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    89
     /* OSes other than Linux might have similar limits, but we don't know how
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    90
      * to determine them.*/
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    91
     return false;
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    92
-#endif
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    93
 }
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    94
+#endif
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    95
 
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    96
 /* Translates the 'ofpacts_len' bytes of "struct ofpacts" starting at 'ofpacts'
5f131162e136 PSARC/2015/311 Open vSwitch (OVS)
Mark Haywood <Mark.Haywood@Oracle.COM>
parents:
diff changeset
    97
  * into datapath actions in 'odp_actions', using 'ctx'.