Datapath action should not refer to controller
authorpravin shelar <pshelar@nicira.com>
Thu, 28 Jul 2011 16:05:25 +0000 (09:05 -0700)
committerpravin shelar <pshelar@nicira.com>
Thu, 28 Jul 2011 16:05:25 +0000 (09:05 -0700)
ODP_ACTION_ATTR_CONTROLLER in the kernel actually sends packets to
userspace, not the controller. To make it generic rename this action
to ODP_ACTION_ATTR_USERSPACE.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
AUTHORS
datapath/actions.c
datapath/datapath.c
include/openvswitch/datapath-protocol.h
lib/dpif-netdev.c
lib/dpif.h
lib/odp-util.c
ofproto/ofproto-dpif.c

diff --git a/AUTHORS b/AUTHORS
index 62c19d5eaee2c2633a2cb661d404f5ff1467caf1..aeb3262976c5b115237615c71b0475e98efa491b 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -24,6 +24,7 @@ Martin Casado           casado@nicira.com
 Natasha Gude            natasha@nicira.com
 Neil McKee              neil.mckee@inmon.com
 Paul Fazzone            pfazzone@nicira.com
+Pravin B Shelar         pshelar@nicira.com
 Reid Price              reid@nicira.com
 Romain Lenglet          romain.lenglet@berabera.info
 Sajjad Lateef           slateef@nicira.com
index ed61039a0a3d6dee88d762ea62934ce95dcf2e67..78712c6a9603e524423c8137514f263287ca196a 100644 (file)
@@ -218,7 +218,7 @@ error:
        kfree_skb(skb);
 }
 
-static int output_control(struct datapath *dp, struct sk_buff *skb, u64 arg)
+static int output_userspace(struct datapath *dp, struct sk_buff *skb, u64 arg)
 {
        struct dp_upcall_info upcall;
 
@@ -262,8 +262,8 @@ static int do_execute_actions(struct datapath *dp, struct sk_buff *skb,
                        prev_port = nla_get_u32(a);
                        break;
 
-               case ODP_ACTION_ATTR_CONTROLLER:
-                       err = output_control(dp, skb, nla_get_u64(a));
+               case ODP_ACTION_ATTR_USERSPACE:
+                       err = output_userspace(dp, skb, nla_get_u64(a));
                        break;
 
                case ODP_ACTION_ATTR_SET_TUNNEL:
index d1493445721ce3a40109b5923744a935e8666731..a964c27f469e3618d854f47ff9da9068c40ea900 100644 (file)
@@ -84,7 +84,7 @@ EXPORT_SYMBOL(dp_ioctl_hook);
 static LIST_HEAD(dps);
 
 static struct vport *new_vport(const struct vport_parms *);
-static int queue_control_packets(struct datapath *, struct sk_buff *,
+static int queue_userspace_packets(struct datapath *, struct sk_buff *,
                                 const struct dp_upcall_info *);
 
 /* Must be called with rcu_read_lock, genl_mutex, or RTNL lock. */
@@ -415,7 +415,7 @@ int dp_upcall(struct datapath *dp, struct sk_buff *skb, const struct dp_upcall_i
                skb = nskb;
        }
 
-       err = queue_control_packets(dp, skb, upcall_info);
+       err = queue_userspace_packets(dp, skb, upcall_info);
        if (err)
                goto err;
 
@@ -438,7 +438,7 @@ err:
  * 'upcall_info'.  There will be only one packet unless we broke up a GSO
  * packet.
  */
-static int queue_control_packets(struct datapath *dp, struct sk_buff *skb,
+static int queue_userspace_packets(struct datapath *dp, struct sk_buff *skb,
                                 const struct dp_upcall_info *upcall_info)
 {
        u32 group = packet_mc_group(dp, upcall_info->cmd);
@@ -552,7 +552,7 @@ static int validate_actions(const struct nlattr *attr)
        nla_for_each_nested(a, attr, rem) {
                static const u32 action_lens[ODP_ACTION_ATTR_MAX + 1] = {
                        [ODP_ACTION_ATTR_OUTPUT] = 4,
-                       [ODP_ACTION_ATTR_CONTROLLER] = 8,
+                       [ODP_ACTION_ATTR_USERSPACE] = 8,
                        [ODP_ACTION_ATTR_SET_DL_TCI] = 2,
                        [ODP_ACTION_ATTR_STRIP_VLAN] = 0,
                        [ODP_ACTION_ATTR_SET_DL_SRC] = ETH_ALEN,
@@ -575,7 +575,7 @@ static int validate_actions(const struct nlattr *attr)
                case ODP_ACTION_ATTR_UNSPEC:
                        return -EINVAL;
 
-               case ODP_ACTION_ATTR_CONTROLLER:
+               case ODP_ACTION_ATTR_USERSPACE:
                case ODP_ACTION_ATTR_STRIP_VLAN:
                case ODP_ACTION_ATTR_SET_DL_SRC:
                case ODP_ACTION_ATTR_SET_DL_DST:
index e7708ef17bf8a3564ce2f52cf2934f24d18a5024..0b755e8ff260441edefad5c38a004de952fb4772 100644 (file)
@@ -145,7 +145,7 @@ enum odp_packet_cmd {
 
         /* Kernel-to-user notifications. */
         ODP_PACKET_CMD_MISS,    /* Flow table miss. */
-        ODP_PACKET_CMD_ACTION,  /* ODP_ACTION_ATTR_CONTROLLER action. */
+        ODP_PACKET_CMD_ACTION,  /* ODP_ACTION_ATTR_USERSPACE action. */
         ODP_PACKET_CMD_SAMPLE,  /* Sampled packet. */
 
         /* User commands. */
@@ -157,14 +157,14 @@ enum odp_packet_cmd {
  * @ODP_PACKET_ATTR_PACKET: Present for all notifications.  Contains the entire
  * packet as received, from the start of the Ethernet header onward.  For
  * %ODP_PACKET_CMD_ACTION, %ODP_PACKET_ATTR_PACKET reflects changes made by
- * actions preceding %ODP_ACTION_ATTR_CONTROLLER, but %ODP_PACKET_ATTR_KEY is
+ * actions preceding %ODP_ACTION_ATTR_USERSPACE, but %ODP_PACKET_ATTR_KEY is
  * the flow key extracted from the packet as originally received.
  * @ODP_PACKET_ATTR_KEY: Present for all notifications.  Contains the flow key
  * extracted from the packet as nested %ODP_KEY_ATTR_* attributes.  This allows
  * userspace to adapt its flow setup strategy by comparing its notion of the
  * flow key against the kernel's.
  * @ODP_PACKET_ATTR_USERDATA: Present for an %ODP_PACKET_CMD_ACTION
- * notification if the %ODP_ACTION_ATTR_CONTROLLER, action's argument was
+ * notification if the %ODP_ACTION_ATTR_USERSPACE, action's argument was
  * nonzero.
  * @ODP_PACKET_ATTR_SAMPLE_POOL: Present for %ODP_PACKET_CMD_SAMPLE.  Contains
  * the number of packets processed so far that were candidates for sampling.
@@ -179,7 +179,7 @@ enum odp_packet_attr {
        ODP_PACKET_ATTR_UNSPEC,
        ODP_PACKET_ATTR_PACKET,      /* Packet data. */
        ODP_PACKET_ATTR_KEY,         /* Nested ODP_KEY_ATTR_* attributes. */
-       ODP_PACKET_ATTR_USERDATA,    /* u64 ODP_ACTION_ATTR_CONTROLLER arg. */
+       ODP_PACKET_ATTR_USERDATA,    /* u64 ODP_ACTION_ATTR_USERSPACE arg. */
        ODP_PACKET_ATTR_SAMPLE_POOL, /* # sampling candidate packets so far. */
        ODP_PACKET_ATTR_ACTIONS,     /* Nested ODP_ACTION_ATTR_* attributes. */
        __ODP_PACKET_ATTR_MAX
@@ -409,7 +409,7 @@ enum odp_flow_attr {
 enum odp_action_type {
        ODP_ACTION_ATTR_UNSPEC,
        ODP_ACTION_ATTR_OUTPUT,       /* Output to switch port. */
-       ODP_ACTION_ATTR_CONTROLLER,   /* Send copy to controller. */
+       ODP_ACTION_ATTR_USERSPACE,    /* Send copy to userspace. */
        ODP_ACTION_ATTR_SET_DL_TCI,   /* Set the 802.1q TCI value. */
        ODP_ACTION_ATTR_STRIP_VLAN,   /* Strip the 802.1q header. */
        ODP_ACTION_ATTR_SET_DL_SRC,   /* Ethernet source address. */
index 3b93a4cfd2b4251243f75c06a76d08f3f1588238..d48d7ae1f030568656608a9426316a6e1746a659 100644 (file)
@@ -146,7 +146,7 @@ static int do_add_port(struct dp_netdev *, const char *devname,
 static int do_del_port(struct dp_netdev *, uint16_t port_no);
 static int dpif_netdev_open(const struct dpif_class *, const char *name,
                             bool create, struct dpif **);
-static int dp_netdev_output_control(struct dp_netdev *, const struct ofpbuf *,
+static int dp_netdev_output_userspace(struct dp_netdev *, const struct ofpbuf *,
                                     int queue_no, const struct flow *,
                                     uint64_t arg);
 static int dp_netdev_execute_actions(struct dp_netdev *,
@@ -707,7 +707,7 @@ dpif_netdev_validate_actions(const struct nlattr *actions,
             }
             break;
 
-        case ODP_ACTION_ATTR_CONTROLLER:
+        case ODP_ACTION_ATTR_USERSPACE:
             break;
 
         case ODP_ACTION_ATTR_SET_DL_TCI:
@@ -1088,7 +1088,7 @@ dp_netdev_port_input(struct dp_netdev *dp, struct dp_netdev_port *port,
         dp->n_hit++;
     } else {
         dp->n_missed++;
-        dp_netdev_output_control(dp, packet, DPIF_UC_MISS, &key, 0);
+        dp_netdev_output_userspace(dp, packet, DPIF_UC_MISS, &key, 0);
     }
 }
 
@@ -1252,7 +1252,7 @@ dp_netdev_output_port(struct dp_netdev *dp, struct ofpbuf *packet,
 }
 
 static int
-dp_netdev_output_control(struct dp_netdev *dp, const struct ofpbuf *packet,
+dp_netdev_output_userspace(struct dp_netdev *dp, const struct ofpbuf *packet,
                          int queue_no, const struct flow *flow, uint64_t arg)
 {
     struct dp_netdev_queue *q = &dp->queues[queue_no];
@@ -1299,8 +1299,8 @@ dp_netdev_execute_actions(struct dp_netdev *dp,
             dp_netdev_output_port(dp, packet, nl_attr_get_u32(a));
             break;
 
-        case ODP_ACTION_ATTR_CONTROLLER:
-            dp_netdev_output_control(dp, packet, DPIF_UC_ACTION,
+        case ODP_ACTION_ATTR_USERSPACE:
+            dp_netdev_output_userspace(dp, packet, DPIF_UC_ACTION,
                                      key, nl_attr_get_u64(a));
             break;
 
index 4a71153acaed1d72f9c228ca7240701fb78536c5..4df2318442dcae365ba518d7ead93c34e54177d1 100644 (file)
@@ -155,7 +155,7 @@ int dpif_execute(struct dpif *,
 
 enum dpif_upcall_type {
     DPIF_UC_MISS,               /* Miss in flow table. */
-    DPIF_UC_ACTION,             /* ODP_ACTION_ATTR_CONTROLLER action. */
+    DPIF_UC_ACTION,             /* ODP_ACTION_ATTR_USERSPACE action. */
     DPIF_UC_SAMPLE,             /* Packet sampling. */
     DPIF_N_UC_TYPES
 };
@@ -177,7 +177,7 @@ struct dpif_upcall {
     size_t key_len;             /* Length of 'key' in bytes. */
 
     /* DPIF_UC_ACTION only. */
-    uint64_t userdata;          /* Argument to ODP_ACTION_ATTR_CONTROLLER. */
+    uint64_t userdata;          /* Argument to ODP_ACTION_ATTR_USERSPACE. */
 
     /* DPIF_UC_SAMPLE only. */
     uint32_t sample_pool;       /* # of sampling candidate packets so far. */
index d7a3118b8041b86c721f3c110a52b38cd8d9c18c..93f8f8a07f1509a20ad888e8ff552e72ad38cd56 100644 (file)
@@ -41,7 +41,7 @@ odp_action_len(uint16_t type)
 
     switch ((enum odp_action_type) type) {
     case ODP_ACTION_ATTR_OUTPUT: return 4;
-    case ODP_ACTION_ATTR_CONTROLLER: return 8;
+    case ODP_ACTION_ATTR_USERSPACE: return 8;
     case ODP_ACTION_ATTR_SET_DL_TCI: return 2;
     case ODP_ACTION_ATTR_STRIP_VLAN: return 0;
     case ODP_ACTION_ATTR_SET_DL_SRC: return ETH_ADDR_LEN;
@@ -99,8 +99,8 @@ format_odp_action(struct ds *ds, const struct nlattr *a)
     case ODP_ACTION_ATTR_OUTPUT:
         ds_put_format(ds, "%"PRIu16, nl_attr_get_u32(a));
         break;
-    case ODP_ACTION_ATTR_CONTROLLER:
-        ds_put_format(ds, "ctl(%"PRIu64")", nl_attr_get_u64(a));
+    case ODP_ACTION_ATTR_USERSPACE:
+        ds_put_format(ds, "userspace(%"PRIu64")", nl_attr_get_u64(a));
         break;
     case ODP_ACTION_ATTR_SET_TUNNEL:
         ds_put_format(ds, "set_tunnel(%#"PRIx64")",
index 1165570a3596c784a7e9488f628af7e018fc1a73..8bd6f75298aa38b4e1b0d265ea76ec628a5f6b36 100644 (file)
@@ -2047,7 +2047,7 @@ execute_odp_actions(struct ofproto_dpif *ofproto, const struct flow *flow,
                     struct ofpbuf *packet)
 {
     if (actions_len == NLA_ALIGN(NLA_HDRLEN + sizeof(uint64_t))
-        && odp_actions->nla_type == ODP_ACTION_ATTR_CONTROLLER) {
+        && odp_actions->nla_type == ODP_ACTION_ATTR_USERSPACE) {
         /* As an optimization, avoid a round-trip from userspace to kernel to
          * userspace.  This also avoids possibly filling up kernel packet
          * buffers along the way. */
@@ -2956,7 +2956,7 @@ xlate_output_action__(struct action_xlate_ctx *ctx,
         break;
     case OFPP_CONTROLLER:
         commit_odp_actions(ctx);
-        nl_msg_put_u64(ctx->odp_actions, ODP_ACTION_ATTR_CONTROLLER, max_len);
+        nl_msg_put_u64(ctx->odp_actions, ODP_ACTION_ATTR_USERSPACE, max_len);
         break;
     case OFPP_LOCAL:
         add_output_action(ctx, OFPP_LOCAL);