+int
+vport_add(const struct odp_vport_add __user *uvport_config)
+{
+ struct odp_vport_add vport_config;
+
+ if (copy_from_user(&vport_config, uvport_config, sizeof(struct odp_vport_add)))
+ return -EFAULT;
+
+ return do_vport_add(&vport_config);
+}
+
+#ifdef CONFIG_COMPAT
+int
+compat_vport_add(struct compat_odp_vport_add *ucompat)
+{
+ struct compat_odp_vport_add compat;
+ struct odp_vport_add vport_config;
+
+ if (copy_from_user(&compat, ucompat, sizeof(struct compat_odp_vport_add)))
+ return -EFAULT;
+
+ memcpy(vport_config.port_type, compat.port_type, VPORT_TYPE_SIZE);
+ memcpy(vport_config.devname, compat.devname, IFNAMSIZ);
+ vport_config.config = compat_ptr(compat.config);
+
+ return do_vport_add(&vport_config);
+}
+#endif
+