diff --git a/BUILD b/BUILD
index 3b1f04f6d14ed930fbc2ebc5d831342bd1d9700e..1e0f112ac1701b694dbb9667ac5922b0ca6b7e7d 100644
--- a/BUILD
+++ b/BUILD
@@ -463,6 +463,7 @@ cc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
+    "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -488,6 +489,7 @@ cc_library(
     "include/grpc/byte_buffer_reader.h",
     "include/grpc/compression.h",
     "include/grpc/grpc.h",
+    "include/grpc/grpc_posix.h",
     "include/grpc/status.h",
     "include/grpc/impl/codegen/byte_buffer.h",
     "include/grpc/impl/codegen/byte_buffer_reader.h",
@@ -833,6 +835,7 @@ cc_library(
     "include/grpc/byte_buffer_reader.h",
     "include/grpc/compression.h",
     "include/grpc/grpc.h",
+    "include/grpc/grpc_posix.h",
     "include/grpc/status.h",
     "include/grpc/impl/codegen/byte_buffer.h",
     "include/grpc/impl/codegen/byte_buffer_reader.h",
@@ -1106,6 +1109,7 @@ cc_library(
     "src/core/ext/transport/chttp2/transport/writing.c",
     "src/core/ext/transport/chttp2/alpn/alpn.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
+    "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c",
     "src/core/ext/client_config/channel_connectivity.c",
     "src/core/ext/client_config/client_channel.c",
     "src/core/ext/client_config/client_channel_factory.c",
@@ -1150,6 +1154,7 @@ cc_library(
     "include/grpc/byte_buffer_reader.h",
     "include/grpc/compression.h",
     "include/grpc/grpc.h",
+    "include/grpc/grpc_posix.h",
     "include/grpc/status.h",
     "include/grpc/impl/codegen/byte_buffer.h",
     "include/grpc/impl/codegen/byte_buffer_reader.h",
@@ -1840,6 +1845,7 @@ objc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
+    "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -1865,6 +1871,7 @@ objc_library(
     "include/grpc/byte_buffer_reader.h",
     "include/grpc/compression.h",
     "include/grpc/grpc.h",
+    "include/grpc/grpc_posix.h",
     "include/grpc/status.h",
     "include/grpc/impl/codegen/byte_buffer.h",
     "include/grpc/impl/codegen/byte_buffer_reader.h",
diff --git a/Makefile b/Makefile
index 62bcd31724f7b7e11aeecfb076b3fed134d81a25..5eecfd74277070ba9302a6fa3eb148fbb4352b72 100644
--- a/Makefile
+++ b/Makefile
@@ -2635,6 +2635,7 @@ LIBGRPC_SRC = \
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -2663,6 +2664,7 @@ PUBLIC_HEADERS_C += \
     include/grpc/byte_buffer_reader.h \
     include/grpc/compression.h \
     include/grpc/grpc.h \
+    include/grpc/grpc_posix.h \
     include/grpc/status.h \
     include/grpc/impl/codegen/byte_buffer.h \
     include/grpc/impl/codegen/byte_buffer_reader.h \
@@ -2905,6 +2907,7 @@ PUBLIC_HEADERS_C += \
     include/grpc/byte_buffer_reader.h \
     include/grpc/compression.h \
     include/grpc/grpc.h \
+    include/grpc/grpc_posix.h \
     include/grpc/status.h \
     include/grpc/impl/codegen/byte_buffer.h \
     include/grpc/impl/codegen/byte_buffer_reader.h \
@@ -3184,6 +3187,7 @@ LIBGRPC_UNSECURE_SRC = \
     src/core/ext/transport/chttp2/transport/writing.c \
     src/core/ext/transport/chttp2/alpn/alpn.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
     src/core/ext/client_config/channel_connectivity.c \
     src/core/ext/client_config/client_channel.c \
     src/core/ext/client_config/client_channel_factory.c \
@@ -3231,6 +3235,7 @@ PUBLIC_HEADERS_C += \
     include/grpc/byte_buffer_reader.h \
     include/grpc/compression.h \
     include/grpc/grpc.h \
+    include/grpc/grpc_posix.h \
     include/grpc/status.h \
     include/grpc/impl/codegen/byte_buffer.h \
     include/grpc/impl/codegen/byte_buffer_reader.h \
diff --git a/binding.gyp b/binding.gyp
index 4d9e9a49066c066e14834af2db89be84ae83fca9..901ab45750d6ce307d4711a7296c6ff1d04d0e37 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -719,6 +719,7 @@
         'src/core/ext/client_config/uri_parser.c',
         'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
         'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+        'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
         'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
         'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
diff --git a/build.yaml b/build.yaml
index 302e3f99e047d5cd9d0ac65dc9bc7a3b2e699f08..7ceaee9c6eb1e38cc8f146defe5ffabda180b63f 100644
--- a/build.yaml
+++ b/build.yaml
@@ -154,6 +154,7 @@ filegroups:
   - include/grpc/byte_buffer_reader.h
   - include/grpc/compression.h
   - include/grpc/grpc.h
+  - include/grpc/grpc_posix.h
   - include/grpc/status.h
   headers:
   - src/core/lib/channel/channel_args.h
@@ -561,6 +562,7 @@ filegroups:
 - name: grpc_transport_chttp2_client_insecure
   src:
   - src/core/ext/transport/chttp2/client/insecure/channel_create.c
+  - src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c
   uses:
   - grpc_transport_chttp2
   - grpc_base
diff --git a/config.m4 b/config.m4
index 54adac1bdc1dac95ebe4fe8e748f20d9616bd4e6..e3c5a81ae16ad4996d78ed991c12f8126453a638 100644
--- a/config.m4
+++ b/config.m4
@@ -238,6 +238,7 @@ if test "$PHP_GRPC" != "no"; then
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
diff --git a/gRPC.podspec b/gRPC.podspec
index 8e8f3f551ce70359d00d29ae593ae2361a67fcb8..df1afc8153566d33858d6769aafdc624a6b40719 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -318,6 +318,7 @@ Pod::Spec.new do |s|
                       'include/grpc/byte_buffer_reader.h',
                       'include/grpc/compression.h',
                       'include/grpc/grpc.h',
+                      'include/grpc/grpc_posix.h',
                       'include/grpc/status.h',
                       'include/grpc/impl/codegen/byte_buffer.h',
                       'include/grpc/impl/codegen/byte_buffer_reader.h',
@@ -499,6 +500,7 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/uri_parser.c',
                       'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
                       'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+                      'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
                       'third_party/nanopb/pb_common.c',
diff --git a/grpc.def b/grpc.def
index b042a696b3e5479885ae9a0c9770d9166494213a..562ca515af2073597abe8f8f179ade11199009a8 100644
--- a/grpc.def
+++ b/grpc.def
@@ -89,6 +89,7 @@ EXPORTS
     grpc_header_nonbin_value_is_legal
     grpc_is_binary_header
     grpc_call_error_to_string
+    grpc_insecure_channel_create_from_fd
     grpc_auth_property_iterator_next
     grpc_auth_context_property_iterator
     grpc_auth_context_peer_identity
diff --git a/grpc.gemspec b/grpc.gemspec
index 49ea3b0858c9112cf096b9ab61dedeb828056c68..daddc79926048963f7788699e673393e1b057376 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -147,6 +147,7 @@ Gem::Specification.new do |s|
   s.files += %w( include/grpc/byte_buffer_reader.h )
   s.files += %w( include/grpc/compression.h )
   s.files += %w( include/grpc/grpc.h )
+  s.files += %w( include/grpc/grpc_posix.h )
   s.files += %w( include/grpc/status.h )
   s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
   s.files += %w( include/grpc/impl/codegen/byte_buffer_reader.h )
@@ -478,6 +479,7 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/uri_parser.c )
   s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
   s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
+  s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c )
   s.files += %w( third_party/nanopb/pb_common.c )
diff --git a/include/grpc/grpc_posix.h b/include/grpc/grpc_posix.h
new file mode 100644
index 0000000000000000000000000000000000000000..4eedc10ef223359aead8837b7969aab79bd8e897
--- /dev/null
+++ b/include/grpc/grpc_posix.h
@@ -0,0 +1,65 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_GRPC_POSIX_H
+#define GRPC_GRPC_POSIX_H
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*! \mainpage GRPC Core POSIX
+ *
+ * The GRPC Core POSIX library provides some POSIX-specific low-level
+ * functionality on top of GRPC Core.
+ */
+
+
+#ifdef GPR_POSIX_SOCKET
+
+/** Create a client channel to 'target' using file descriptor 'fd'. The 'target'
+    argument will be used to indicate the name for this channel. See the comment
+    for grpc_insecure_channel_create for description of 'args' argument. */
+GRPCAPI grpc_channel *grpc_insecure_channel_create_from_fd(
+    const char *target, int fd, const grpc_channel_args *args);
+
+#endif  // GPR_POSIX_SOCKET
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_GRPC_POSIX_H */
diff --git a/package.xml b/package.xml
index f780f8025b93781031d34e80b662277ba2f3bd91..fb774c2e6a2b3673c8805bef262720debb94c4f7 100644
--- a/package.xml
+++ b/package.xml
@@ -154,6 +154,7 @@
     <file baseinstalldir="/" name="include/grpc/byte_buffer_reader.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/compression.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/grpc_posix.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer_reader.h" role="src" />
@@ -485,6 +486,7 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c
new file mode 100644
index 0000000000000000000000000000000000000000..fdcf4c44306b3f0442a3d1fd6f70f3f6bfba23ed
--- /dev/null
+++ b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c
@@ -0,0 +1,94 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifdef GPR_POSIX_SOCKET
+
+#include <grpc/grpc.h>
+
+// #include <fcntl.h>
+// #include <stdlib.h>
+// #include <string.h>
+
+// #include <grpc/support/alloc.h>
+// #include <grpc/support/slice.h>
+// #include <grpc/support/slice_buffer.h>
+
+// #include "src/core/ext/client_config/client_channel.h"
+// #include "src/core/ext/client_config/resolver_registry.h"
+// #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
+// #include "src/core/lib/channel/channel_args.h"
+// #include "src/core/lib/channel/compress_filter.h"
+// #include "src/core/lib/channel/http_client_filter.h"
+// #include "src/core/lib/iomgr/tcp_client.h"
+// #include "src/core/lib/iomgr/tcp_posix.h"
+// #include "src/core/lib/surface/api_trace.h"
+// #include "src/core/lib/surface/channel.h"
+
+
+grpc_channel *grpc_insecure_channel_create_from_fd(
+    const char *target, int fd, const grpc_channel_args *args) {
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  GRPC_API_TRACE(
+      "grpc_insecure_channel_create(target=%p, fd=%d, args=%p)", 3,
+      (target, fd, args));
+
+  grpc_arg default_authority_arg;
+  default_authority_arg.type = GRPC_ARG_STRING;
+  default_authority_arg.key = GRPC_ARG_DEFAULT_AUTHORITY;
+  default_authority_arg.value.string = "test.authority";
+  grpc_channel_args *final_args = grpc_channel_args_copy_and_add(
+      args, &default_authority_arg, 1);
+
+  int flags = fcntl(fd, F_GETFL, 0);
+  GPR_ASSERT(fcntl(fd, F_SETFL, flags | O_NONBLOCK) == 0);
+
+  grpc_endpoint *client = grpc_tcp_create(
+      grpc_fd_create(fd, "client"), GRPC_TCP_DEFAULT_READ_SLICE_SIZE,
+      "fd-client");
+
+  grpc_transport *transport =
+      grpc_create_chttp2_transport(&exec_ctx, final_args, client, 1);
+  GPR_ASSERT(transport);
+  grpc_channel *channel = grpc_channel_create(
+      &exec_ctx, target, final_args, GRPC_CLIENT_DIRECT_CHANNEL, transport);
+  grpc_channel_args_destroy(final_args);
+  grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL, 0);
+
+  grpc_exec_ctx_finish(&exec_ctx);
+
+  return channel != NULL ? channel : grpc_lame_client_channel_create(
+                                         target, GRPC_STATUS_INTERNAL,
+                                         "Failed to create client channel");
+}
+
+#endif // GPR_POSIX_SOCKET
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index 42b754429d0abd4434fabb75e6de70ba7c5a5ded..8b8d8ba1ae3d237f7189f1f38c8db3e554d114be 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -127,6 +127,7 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
+grpc_insecure_channel_create_from_fd_type grpc_insecure_channel_create_from_fd_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -399,6 +400,7 @@ void pygrpc_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
+  grpc_insecure_channel_create_from_fd_import = (grpc_insecure_channel_create_from_fd_type) GetProcAddress(library, "grpc_insecure_channel_create_from_fd");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index 556ebfb8485e3ec2b687a74abba62cd7d215d0f0..42ebb91274d138fd1a5795dc0c3f7a9effe6c2c5 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -43,6 +43,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_posix.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -331,6 +332,9 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
+typedef grpc_channel *(*grpc_insecure_channel_create_from_fd_type)(const char *target, int fd, const grpc_channel_args *args);
+extern grpc_insecure_channel_create_from_fd_type grpc_insecure_channel_create_from_fd_import;
+#define grpc_insecure_channel_create_from_fd grpc_insecure_channel_create_from_fd_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index b83c82cb926de9dda1b18c25a540535935c489d9..0618b336d15dac7422b75a1d5c2f41ca3b900f58 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -232,6 +232,7 @@ CORE_SOURCE_FILES = [
   'src/core/ext/client_config/uri_parser.c',
   'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
   'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+  'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
   'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
   'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
   'third_party/nanopb/pb_common.c',
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index 9563f18b7e3db1f8d797ba7367589c2c7e1f822b..82761e95ca320da9adf2882f5311ff30edd2a6fd 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -127,6 +127,7 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
+grpc_insecure_channel_create_from_fd_type grpc_insecure_channel_create_from_fd_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -395,6 +396,7 @@ void grpc_rb_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
+  grpc_insecure_channel_create_from_fd_import = (grpc_insecure_channel_create_from_fd_type) GetProcAddress(library, "grpc_insecure_channel_create_from_fd");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index 87dead533da2b3656d8ce10e7d2b313427c05dd1..e83285828cd124df5aee12f80234fabf251f8c35 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -43,6 +43,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_posix.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -331,6 +332,9 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
+typedef grpc_channel *(*grpc_insecure_channel_create_from_fd_type)(const char *target, int fd, const grpc_channel_args *args);
+extern grpc_insecure_channel_create_from_fd_type grpc_insecure_channel_create_from_fd_import;
+#define grpc_insecure_channel_create_from_fd grpc_insecure_channel_create_from_fd_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/test/core/end2end/fixtures/h2_fd.c b/test/core/end2end/fixtures/h2_fd.c
index 64ca75f7ff36cfb8386c7a10c50e35d7be5ea243..1f4d2495e0039a31ba8776bfe0002f8391456de0 100644
--- a/test/core/end2end/fixtures/h2_fd.c
+++ b/test/core/end2end/fixtures/h2_fd.c
@@ -138,7 +138,7 @@ static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture *f) {
 
 /* All test configurations */
 static grpc_end2end_test_config configs[] = {
-    {"chttp2/socketpair", 0, chttp2_create_fixture_socketpair,
+    {"chttp2/fd", 0, chttp2_create_fixture_socketpair,
      chttp2_init_client_socketpair, chttp2_init_server_socketpair,
      chttp2_tear_down_socketpair},
 };
diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py
index 98b7cf5dcd79aa4a6088459192022c7c303414f5..3d3bec1a69e9358c5967194fdeec82e7d59a85dd 100755
--- a/test/core/end2end/gen_build_yaml.py
+++ b/test/core/end2end/gen_build_yaml.py
@@ -45,7 +45,7 @@ default_unsecure_fixture_options = FixtureOptions(
 socketpair_unsecure_fixture_options = default_unsecure_fixture_options._replace(fullstack=False, dns_resolver=False)
 default_secure_fixture_options = default_unsecure_fixture_options._replace(secure=True)
 uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix'])
-fd_fixture_options = default_unsecure_fixture_options._replace(
+fd_unsecure_fixture_options = default_unsecure_fixture_options._replace(
     dns_resolver=False, fullstack=False, platforms=['linux', 'mac', 'posix'])
 
 
@@ -54,7 +54,7 @@ END2END_FIXTURES = {
     'h2_compress': default_unsecure_fixture_options,
     'h2_census': default_unsecure_fixture_options,
     'h2_fakesec': default_secure_fixture_options._replace(ci_mac=False),
-    'h2_fd': fd_fixture_options,
+    'h2_fd': fd_unsecure_fixture_options,
     'h2_full': default_unsecure_fixture_options,
     'h2_full+pipe': default_unsecure_fixture_options._replace(
         platforms=['linux']),
diff --git a/third_party/protobuf b/third_party/protobuf
index 3470b6895aa659b7559ed678e029a5338e535f14..d5fb408ddc281ffcadeb08699e65bb694656d0bd 160000
--- a/third_party/protobuf
+++ b/third_party/protobuf
@@ -1 +1 @@
-Subproject commit 3470b6895aa659b7559ed678e029a5338e535f14
+Subproject commit d5fb408ddc281ffcadeb08699e65bb694656d0bd
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 7489401d74b6144c6f05100092ae52cb2c67e215..72102b2fc5026a05f398fd9192342e359434fcd1 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -764,6 +764,7 @@ INPUT                  = include/grpc/byte_buffer.h \
 include/grpc/byte_buffer_reader.h \
 include/grpc/compression.h \
 include/grpc/grpc.h \
+include/grpc/grpc_posix.h \
 include/grpc/status.h \
 include/grpc/impl/codegen/byte_buffer.h \
 include/grpc/impl/codegen/byte_buffer_reader.h \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 849a60eea9829c704fc683e9e7bd8b9c55170add..648d42c1df8cac6717ecc1386c83bb64d5743649 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -764,6 +764,7 @@ INPUT                  = include/grpc/byte_buffer.h \
 include/grpc/byte_buffer_reader.h \
 include/grpc/compression.h \
 include/grpc/grpc.h \
+include/grpc/grpc_posix.h \
 include/grpc/status.h \
 include/grpc/impl/codegen/byte_buffer.h \
 include/grpc/impl/codegen/byte_buffer_reader.h \
@@ -1095,6 +1096,7 @@ src/core/ext/client_config/subchannel_index.c \
 src/core/ext/client_config/uri_parser.c \
 src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
 src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
 src/core/ext/lb_policy/grpclb/load_balancer_api.c \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
 third_party/nanopb/pb_common.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 839bac1c2183061e290650289a4fdddb739ab994..204ff4ce8081ba38cc4e78c9ede72f5ca4f2168f 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -5631,6 +5631,7 @@
       "include/grpc/byte_buffer_reader.h", 
       "include/grpc/compression.h", 
       "include/grpc/grpc.h", 
+      "include/grpc/grpc_posix.h", 
       "include/grpc/status.h", 
       "src/core/lib/channel/channel_args.h", 
       "src/core/lib/channel/channel_stack.h", 
@@ -5715,6 +5716,7 @@
       "include/grpc/byte_buffer_reader.h", 
       "include/grpc/compression.h", 
       "include/grpc/grpc.h", 
+      "include/grpc/grpc_posix.h", 
       "include/grpc/status.h", 
       "src/core/lib/channel/channel_args.c", 
       "src/core/lib/channel/channel_args.h", 
@@ -6303,7 +6305,8 @@
     "language": "c", 
     "name": "grpc_transport_chttp2_client_insecure", 
     "src": [
-      "src/core/ext/transport/chttp2/client/insecure/channel_create.c"
+      "src/core/ext/transport/chttp2/client/insecure/channel_create.c", 
+      "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c"
     ], 
     "third_party": false, 
     "type": "filegroup"
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index e887dc74c39cf5f2b36236cc63724c495bfe0875..59933e396263afe3e019917c604e9b1462544da9 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -9704,13 +9704,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9725,13 +9726,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9746,13 +9748,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9767,13 +9770,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9788,13 +9792,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9809,13 +9814,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9830,13 +9836,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9851,13 +9858,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9872,13 +9880,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9893,13 +9902,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9914,13 +9924,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9935,13 +9946,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9956,13 +9968,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9977,13 +9990,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -9998,13 +10012,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10019,13 +10034,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10040,13 +10056,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10061,13 +10078,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10082,13 +10100,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10103,13 +10122,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10124,13 +10144,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10145,13 +10166,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10166,13 +10188,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10187,13 +10210,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10208,13 +10232,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10229,13 +10254,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10250,13 +10276,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10271,13 +10298,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10292,13 +10320,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10313,13 +10342,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10334,13 +10364,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10355,13 +10386,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10376,13 +10408,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10397,13 +10430,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10418,13 +10452,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10439,13 +10474,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10460,13 +10496,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10481,13 +10518,14 @@
     "ci_platforms": [
       "windows", 
       "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_loadreporting_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10502,14 +10540,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10524,14 +10561,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10546,14 +10582,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10568,14 +10603,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10590,14 +10624,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10612,14 +10645,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10634,14 +10666,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10656,14 +10687,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10678,14 +10708,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10700,14 +10729,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10722,14 +10750,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10744,14 +10771,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10766,14 +10792,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10788,14 +10813,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10810,14 +10834,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10832,14 +10855,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10854,14 +10876,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10876,14 +10897,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10898,14 +10918,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10920,14 +10939,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10942,14 +10960,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10964,14 +10981,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -10986,14 +11002,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11008,14 +11023,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11030,14 +11044,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11052,14 +11065,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11074,14 +11086,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11096,14 +11107,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11118,14 +11128,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11140,14 +11149,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11162,14 +11170,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11184,14 +11191,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11206,14 +11212,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11228,14 +11233,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11250,14 +11254,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11272,14 +11275,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11294,14 +11296,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11316,14 +11317,13 @@
     "ci_platforms": [
       "windows", 
       "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_loadreporting_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
       "windows", 
       "linux", 
@@ -11543,7 +11543,7 @@
   }, 
   {
     "args": [
-      "empty_batch"
+      "disappearing_server"
     ], 
     "ci_platforms": [
       "windows", 
@@ -11564,7 +11564,7 @@
   }, 
   {
     "args": [
-      "filter_causes_close"
+      "empty_batch"
     ], 
     "ci_platforms": [
       "windows", 
@@ -11627,7 +11627,7 @@
   }, 
   {
     "args": [
-      "hpack_size"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
       "windows", 
@@ -11837,7 +11837,7 @@
   }, 
   {
     "args": [
-      "request_with_flags"
+      "request_with_payload"
     ], 
     "ci_platforms": [
       "windows", 
@@ -11858,7 +11858,7 @@
   }, 
   {
     "args": [
-      "request_with_payload"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
       "windows", 
@@ -11879,7 +11879,7 @@
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
       "windows", 
@@ -11900,7 +11900,7 @@
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
       "windows", 
@@ -12215,7 +12215,7 @@
   }, 
   {
     "args": [
-      "disappearing_server"
+      "empty_batch"
     ], 
     "ci_platforms": [
       "windows", 
@@ -12236,7 +12236,7 @@
   }, 
   {
     "args": [
-      "empty_batch"
+      "filter_causes_close"
     ], 
     "ci_platforms": [
       "windows", 
@@ -12299,7 +12299,7 @@
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "hpack_size"
     ], 
     "ci_platforms": [
       "windows", 
@@ -12530,7 +12530,7 @@
   }, 
   {
     "args": [
-      "request_with_payload"
+      "request_with_flags"
     ], 
     "ci_platforms": [
       "windows", 
@@ -12551,7 +12551,7 @@
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "request_with_payload"
     ], 
     "ci_platforms": [
       "windows", 
@@ -12572,7 +12572,7 @@
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
       "windows", 
@@ -12593,7 +12593,7 @@
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
       "windows", 
@@ -17964,6 +17964,7 @@
       "bad_hostname"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -17985,6 +17986,7 @@
       "binary_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18006,6 +18008,7 @@
       "cancel_after_accept"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18027,6 +18030,7 @@
       "cancel_after_client_done"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18048,6 +18052,7 @@
       "cancel_after_invoke"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18069,6 +18074,7 @@
       "cancel_before_invoke"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18090,6 +18096,7 @@
       "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18111,6 +18118,7 @@
       "cancel_with_status"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18220,6 +18228,7 @@
       "empty_batch"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18241,6 +18250,7 @@
       "filter_causes_close"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18262,6 +18272,7 @@
       "graceful_server_shutdown"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18283,6 +18294,7 @@
       "high_initial_seqno"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18304,6 +18316,7 @@
       "hpack_size"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18325,6 +18338,7 @@
       "idempotent_request"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18346,6 +18360,7 @@
       "invoke_large_request"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18367,6 +18382,7 @@
       "large_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18388,6 +18404,7 @@
       "max_concurrent_streams"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18409,6 +18426,7 @@
       "max_message_length"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18430,6 +18448,7 @@
       "negative_deadline"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18451,6 +18470,7 @@
       "no_op"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18472,6 +18492,7 @@
       "payload"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18515,6 +18536,7 @@
       "ping_pong_streaming"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18536,6 +18558,7 @@
       "registered_call"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18557,6 +18580,7 @@
       "request_with_flags"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18578,6 +18602,7 @@
       "request_with_payload"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18599,6 +18624,7 @@
       "server_finishes_request"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18620,6 +18646,7 @@
       "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18641,6 +18668,7 @@
       "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18684,6 +18712,7 @@
       "simple_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18705,6 +18734,7 @@
       "simple_request"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18726,6 +18756,7 @@
       "trailing_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18747,7 +18778,6 @@
       "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18768,7 +18798,6 @@
       "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18789,7 +18818,6 @@
       "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18810,7 +18838,6 @@
       "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18831,7 +18858,6 @@
       "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18852,7 +18878,6 @@
       "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18873,7 +18898,6 @@
       "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18894,7 +18918,6 @@
       "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18935,7 +18958,6 @@
       "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18956,7 +18978,6 @@
       "filter_causes_close"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18977,7 +18998,6 @@
       "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -18998,7 +19018,6 @@
       "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19019,7 +19038,6 @@
       "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19040,7 +19058,6 @@
       "idempotent_request"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19061,7 +19078,6 @@
       "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19082,7 +19098,6 @@
       "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19103,7 +19118,6 @@
       "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19124,7 +19138,6 @@
       "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19145,7 +19158,6 @@
       "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19166,7 +19178,6 @@
       "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19187,7 +19198,6 @@
       "payload"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19208,7 +19218,6 @@
       "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19229,7 +19238,6 @@
       "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19250,7 +19258,6 @@
       "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19271,7 +19278,6 @@
       "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19292,7 +19298,6 @@
       "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19313,7 +19318,6 @@
       "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19334,7 +19338,6 @@
       "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19355,7 +19358,6 @@
       "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19376,7 +19378,6 @@
       "simple_request"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
@@ -19397,7 +19398,6 @@
       "trailing_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
       "linux", 
       "mac", 
       "posix"
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 2e8e7ca5dd6e2784e89050f5ce9b0f6d8b30994c..4cc5f6011c8b7b0e996f30d6298ab580d4527b67 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -271,6 +271,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\compression.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
@@ -762,6 +763,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create_posix.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 4d58c8e9a5c0c9baf17b0e47f03691e2601c698a..a8ac26514d92f4c1cae6d1f72588e59150655d51 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -469,6 +469,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
       <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create_posix.c">
+      <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -549,6 +552,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h">
       <Filter>include\grpc</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h">
       <Filter>include\grpc</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 5f7bc887155db89700de18dc1ba91a8a68451d71..6edae2765dc11b4d11ae1cab68fe3eebdaf13fcb 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -262,6 +262,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\compression.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
@@ -634,6 +635,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create_posix.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\channel_connectivity.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.c">
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 5006ac7e9b8f90558c12065b9c6b33105f37c2c5..3279325eb1f47f5aa33ffa8e74756182e15071d6 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -328,6 +328,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
       <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create_posix.c">
+      <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\channel_connectivity.c">
       <Filter>src\core\ext\client_config</Filter>
     </ClCompile>
@@ -465,6 +468,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h">
       <Filter>include\grpc</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h">
       <Filter>include\grpc</Filter>
     </ClInclude>