diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index c8b8eea760acfa7fa3b6a406254f6ac66556c1f1..eedc6415747fa4054077a43f02f81f430cc48d29 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -169,6 +169,7 @@ volatile int                    oai_exit = 0;
 
 
 static char                     UE_flag=0;
+unsigned int                    mmapped_dma=0;
 //static uint8_t                  eNB_id=0,UE_id=0;
 
 static char                     threequarter_fs=0;
@@ -385,11 +386,12 @@ void help (void) {
   printf("  --ue-txgain set UE TX gain\n");
   printf("  --ue-scan_carrier set UE to scan around carrier\n");
   printf("  --loop-memory get softmodem (UE) to loop through memory instead of acquiring from HW\n");
+  printf("  --mmapped-dma sets flag for improved EXMIMO UE performance\n");   
   printf("  --RCC run using NGFI RCC node function IF4 split\n");
   printf("  --RRU run using NGFI RRU node function  IF4 split\n");
   printf("  --eNB run using 3GPP eNB node function\n");   
   printf("  --BBU run using 3GPP eNB node function with IF5 split\n");   
-  printf("  --RRH run using RRH node function with IF5 split\n");   
+  printf("  --RRH run using RRH node function with IF5 split\n");
   printf("  -C Set the downlink frequency for all component carriers\n");
   printf("  -d Enable soft scope and L1 and L2 stats (Xforms)\n");
   printf("  -F Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime \n");
@@ -686,6 +688,7 @@ static void get_options (int argc, char **argv)
     LONG_OPTION_DUMP_FRAME,
     LONG_OPTION_LOOPMEMORY,
     LONG_OPTION_PHYTEST,
+    LONG_OPTION_MMAPPED_DMA,
     LONG_OPTION_RCC,
     LONG_OPTION_RRU,
     LONG_OPTION_ENB,
@@ -714,6 +717,7 @@ static void get_options (int argc, char **argv)
     {"ue-dump-frame", no_argument, NULL, LONG_OPTION_DUMP_FRAME},
     {"loop-memory", required_argument, NULL, LONG_OPTION_LOOPMEMORY},
     {"phy-test", no_argument, NULL, LONG_OPTION_PHYTEST},
+    {"mmapped-dma", no_argument, NULL, LONG_OPTION_MMAPPED_DMA},
     {"RCC", no_argument, NULL, LONG_OPTION_RCC},
     {"RRU", no_argument, NULL, LONG_OPTION_RRU},
     {"eNB", no_argument, NULL, LONG_OPTION_ENB},
@@ -810,6 +814,10 @@ static void get_options (int argc, char **argv)
       phy_test = 1;
       break;
 
+    case LONG_OPTION_MMAPPED_DMA:
+      mmapped_dma = 1;
+      break;
+
     case LONG_OPTION_RCC:
       node_function = NGFI_RCC_IF4;
       break;
@@ -829,7 +837,7 @@ static void get_options (int argc, char **argv)
     case LONG_OPTION_RRH:
       node_function = NGFI_RRU_IF5;
       break;
-      
+              
 #if T_TRACER
     case LONG_OPTION_T_PORT: {
       extern int T_port;
@@ -1514,10 +1522,7 @@ int main( int argc, char **argv )
 
   for (card=0; card<MAX_CARDS; card++) {
 
-    if (UE_flag==0)
-      openair0_cfg[card].mmapped_dma=1;
-    else
-      openair0_cfg[card].mmapped_dma=0;
+    openair0_cfg[card].mmapped_dma=mmapped_dma;
 
     if(frame_parms[0]->N_RB_DL == 100) {
       if (frame_parms[0]->threequarter_fs) {