Merge "[rdk-b][common][bsp][Refactor and sync kernel/wifi from Openwrt]"
diff --git a/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.c b/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.c
index f1e4c1f..84cdc92 100644
--- a/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.c
+++ b/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.c
@@ -156,6 +156,16 @@
         radio_param->disabled = FALSE;
 }
 
+void set_rxant(wifi_radio_param *radio_param, char *mask)
+{
+    radio_param->rxantenna = strtol(mask, NULL, 16);
+}
+
+void set_txant(wifi_radio_param *radio_param, char *mask)
+{
+    radio_param->txantenna = strtol(mask, NULL, 16);
+}
+
 void set_radionum(wifi_intf_param *intf_param, char *phy_name)
 {
     int radio_num = 0;
@@ -272,6 +282,12 @@
 
     fprintf(stderr, "Start setting radio\n");
 
+    if (radio_parameter.txantenna != 0 && radio_parameter.txantenna == radio_parameter.rxantenna) {
+        ret = wifi_setRadioTxChainMask(radio_parameter.radio_index, radio_parameter.txantenna);
+        if (ret != RETURN_OK)
+            fprintf(stderr, "[Set Tx Chain mask failed!!!]\n");
+    }
+
     // Get current radio setting
     ret = wifi_getRadioOperatingParameters(radio_parameter.radio_index, &operationParam);
     if (ret != RETURN_OK)
@@ -529,6 +545,10 @@
                     set_country(&radio_param, op->v.string);
                 else if (strcmp(op->e.name, "noscan") == 0)
                     set_noscan(&radio_param, op->v.string);
+                else if (strcmp(op->e.name, "rxantenna") == 0)
+                    set_rxant(&radio_param, op->v.string);
+                else if (strcmp(op->e.name, "txantenna") == 0)
+                    set_txant(&radio_param, op->v.string);
                 else
                     fprintf(stderr, "[%s %s not set!]\n", op->e.name, op->v.string);
             } else {