Add "direct_path_tx" in /etc/fastworward.conf
Change-Id: I084045cc572b771e4afe57839d1bcad7df75d903
diff --git a/cmm/src/ffcontrol.c b/cmm/src/ffcontrol.c
index 4c38e14..b012bae 100644
--- a/cmm/src/ffcontrol.c
+++ b/cmm/src/ffcontrol.c
@@ -1107,6 +1107,13 @@
continue;
}
+ else if (strcasecmp(buf2, "direct_path_tx") == 0)
+ {
+ if (wifi_if)
+ wifi_if->direct_path_tx = atoi(buf3);
+
+ continue;
+ }
cmm_print(DEBUG_CRIT, "cmmFcParser: Error parsing configuration file.\nUnknown attribut name: %s\n", buf2);
ret = -1;
diff --git a/cmm/src/ffcontrol.h b/cmm/src/ffcontrol.h
index f6b4cbb..3e3d90e 100644
--- a/cmm/src/ffcontrol.h
+++ b/cmm/src/ffcontrol.h
@@ -103,6 +103,7 @@
unsigned short used;
unsigned int vapid;
unsigned int direct_path_rx;
+ unsigned int direct_path_tx;
struct interface *wifi_ff_if;
};
#endif
diff --git a/cmm/src/module_wifi.c b/cmm/src/module_wifi.c
index e957bd2..1984d84 100644
--- a/cmm/src/module_wifi.c
+++ b/cmm/src/module_wifi.c
@@ -126,7 +126,12 @@
memcpy( cmd.macaddr, itf->macaddr, 6);
cmd.vap_id = itf->wifi_if->vapid;
- cmd.direct_path_rx = itf->wifi_if->direct_path_rx;
+ if (itf->wifi_if->direct_path_rx) {
+ cmd.cmd_flags |= VWD_CMD_ENABLE_DIRECT_PATH_RX;
+ }
+ if (itf->wifi_if->direct_path_tx) {
+ cmd.cmd_flags |= VWD_CMD_ENABLE_DIRECT_PATH_TX;
+ }
cmm_print(DEBUG_INFO, "%s: mac:%s:%d %x:%x:%x:%x:%x:%x \n", __func__,
itf->ifname, itf->ifindex, itf->macaddr[0], itf->macaddr[1],
itf->macaddr[2],itf->macaddr[3],itf->macaddr[4],itf->macaddr[5] );
diff --git a/cmm/src/module_wifi.h b/cmm/src/module_wifi.h
index c1b73f3..9037e25 100644
--- a/cmm/src/module_wifi.h
+++ b/cmm/src/module_wifi.h
@@ -29,7 +29,9 @@
int32_t action;
int32_t ifindex;
int16_t vap_id;
- int16_t direct_path_rx;
+ uint16_t cmd_flags;
+#define VWD_CMD_ENABLE_DIRECT_PATH_RX (1 << 0)
+#define VWD_CMD_ENABLE_DIRECT_PATH_TX (1 << 1)
char ifname[12];
u_int8_t macaddr[6];
} __attribute__((__packed__)) vwd_cmd_t;
diff --git a/pfe_ctrl/pfe_vwd.c b/pfe_ctrl/pfe_vwd.c
index da3f879..f719df7 100644
--- a/pfe_ctrl/pfe_vwd.c
+++ b/pfe_ctrl/pfe_vwd.c
@@ -213,7 +213,7 @@
vap_cmd.ifindex = wifi_dev->ifindex;
strcpy(vap_cmd.ifname, name);
memcpy(vap_cmd.macaddr, wifi_dev->dev_addr, 6);
- vap_cmd.direct_rx_path = 0;
+ vap_cmd.cmd_flags = 0;
if (!pfe_vwd_handle_vap(priv, &vap_cmd)){
strcpy(priv->conf_vap_names[ii], name);
@@ -2199,8 +2199,8 @@
vap = netdev_priv(dev);
vap->vapid = cmd->vapid;
vap->ifindex = wifi_dev->ifindex;
- vap->direct_rx_path = cmd->direct_rx_path;
- vap->direct_tx_path = 0;
+ vap->direct_rx_path = (cmd->cmd_flags & VAP_CMD_ENABLE_DIRECT_PATH_RX) ? 1 : 0;
+ vap->direct_tx_path = (cmd->cmd_flags & VAP_CMD_ENABLE_DIRECT_PATH_TX) ? 1 : 0;
memcpy(vap->ifname, wifi_dev->name, 12);
memcpy(vap->macaddr, wifi_dev->dev_addr, 6);
@@ -2457,7 +2457,7 @@
vap_cmd.vapid = ii;
strcpy(vap_cmd.ifname, priv->conf_vap_names[ii]);
- vap_cmd.direct_rx_path = 0;
+ vap_cmd.cmd_flags = 0;
if ((vap = pfe_vwd_vap_up(priv, &vap_cmd, wifi_dev))) {
printk("%s:ADD: name:%s, vapid:%d, direct_rx_path : %s, ifindex:%d, mac:%x:%x:%x:%x:%x:%x\n",
__func__, vap->ifname, vap->vapid,
diff --git a/pfe_ctrl/pfe_vwd.h b/pfe_ctrl/pfe_vwd.h
index 7d7aed4..5dbf79b 100644
--- a/pfe_ctrl/pfe_vwd.h
+++ b/pfe_ctrl/pfe_vwd.h
@@ -66,7 +66,9 @@
#define RESET 3
int ifindex;
unsigned short vapid;
- unsigned short direct_rx_path;
+ unsigned short cmd_flags;
+#define VAP_CMD_ENABLE_DIRECT_PATH_RX (1 << 0)
+#define VAP_CMD_ENABLE_DIRECT_PATH_TX (1 << 1)
unsigned char ifname[12];
unsigned char macaddr[6];
};