Index: capture_opts.h
===================================================================
--- capture_opts.h	(revision 2153)
+++ capture_opts.h	(working copy)
@@ -50,6 +50,7 @@
 
 /* this does not clash with tshark's -2 option which returns '2' */
 #define LONGOPT_NUM_CAP_COMMENT 2
+#define LONGOPT_NUM_WITH_KERNEL_JIT 3
 
 
 #ifdef HAVE_PCAP_REMOTE
Index: dumpcap.c
===================================================================
--- dumpcap.c	(revision 2153)
+++ dumpcap.c	(working copy)
@@ -494,6 +494,13 @@
     fprintf(output, "  -f <capture filter>      packet filter in libpcap filter syntax\n");
     fprintf(output, "  -s <snaplen>             packet snapshot length (def: 65535)\n");
     fprintf(output, "  -p                       don't capture in promiscuous mode\n");
+#ifdef __linux__
+#endif /* __linux__ */
+    fprintf(output, "  --with-kernel-jit        Enable kernel BPF JIT compiler if available(Linux only) \n");
+    fprintf(output, "                           You might want to reset it by doing\n");
+    fprintf(output, "                           \"echo 0 > /proc/sys/net/core/bpf_jit_enable\"\n");
+    fprintf(output, "                           when capture is completed as dumpcap will leave it on.\n");
+
 #ifdef HAVE_PCAP_CREATE
     fprintf(output, "  -I                       capture in monitor mode, if available\n");
 #endif
@@ -4168,6 +4175,7 @@
     int               opt;
     struct option     long_options[] = {
         {(char *)"capture-comment", required_argument, NULL, LONGOPT_NUM_CAP_COMMENT },
+        {(char *)"with-kernel-jit", no_argument, NULL, LONGOPT_NUM_WITH_KERNEL_JIT },
         {0, 0, 0, 0 }
     };
 
@@ -4420,10 +4428,6 @@
 #endif /* SIGINFO */
 #endif  /* _WIN32 */
 
-#ifdef __linux__
-    enable_kernel_bpf_jit_compiler();
-#endif
-
     /* ----------------------------------------------------------------- */
     /* Privilege and capability handling                                 */
     /* Cases:                                                            */
@@ -4499,12 +4503,6 @@
 
     init_process_policies();
 
-#ifdef HAVE_LIBCAP
-    /* If 'started with special privileges' (and using libcap)  */
-    /*   Set to keep only NET_RAW and NET_ADMIN capabilities;   */
-    /*   Set euid/egid = ruid/rgid to remove suid privileges    */
-    relinquish_privs_except_capture();
-#endif
 
     /* Set the initial values in the capture options. This might be overwritten
        by the command line parameters. */
@@ -4566,6 +4564,12 @@
                 exit_main(status);
             }
             break;
+		case  LONGOPT_NUM_WITH_KERNEL_JIT: /* activate Kernel JIT */
+#ifdef __linux__
+            enable_kernel_bpf_jit_compiler();
+#endif
+			break;
+
             /*** hidden option: Wireshark child mode (using binary output messages) ***/
         case 'Z':
             capture_child = TRUE;
@@ -4638,6 +4642,14 @@
             break;
         }
     }
+
+#ifdef HAVE_LIBCAP
+    /* If 'started with special privileges' (and using libcap)  */
+    /*   Set to keep only NET_RAW and NET_ADMIN capabilities;   */
+    /*   Set euid/egid = ruid/rgid to remove suid privileges    */
+    relinquish_privs_except_capture();
+#endif
+
     if (!arg_error) {
         argc -= optind;
         argv += optind;
