Merge "[Feature][T8TSK-274][syslog] syslog 4k/8k/16k buffer Affected branch: unknown Affected module: unknown Is it affected on both ZXIC and MTK: only GSW Self-test: Yes Doc Update: No" into GSW3.0-No-Connman
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/suspend-service/files/autosuspend_wakeup_count.c b/meta/meta-mediatek-mt2735/recipes-lynq/suspend-service/files/autosuspend_wakeup_count.c
index 8e78587..fd8e9dd 100755
--- a/meta/meta-mediatek-mt2735/recipes-lynq/suspend-service/files/autosuspend_wakeup_count.c
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/suspend-service/files/autosuspend_wakeup_count.c
@@ -322,11 +322,12 @@
if(adb_debug_mode == 2)
{
system("echo 12 | emdlogger_ctrl");
+ sleep(1);
+ system("echo 6 | emdlogger_ctrl");//start modem log SD mode
}
else
{
- system("mdlogctl start");
- system("echo 8 | emdlogger_ctrl");
+ system("echo 6 | emdlogger_ctrl");//start modem log SD mode
}
usleep(200000);
@@ -336,18 +337,18 @@
if (lynq_screen(1) != 0) // notify ril for screen on
{
- ALOGI("lynq_screen on fail\n");
-
+ ALOGI("lynq_screen on fail\n");
}
if(adb_debug_mode == 2)
{
system("echo 12 | emdlogger_ctrl");
+ sleep(1);
+ system("echo 6 | emdlogger_ctrl");//start modem log SD mode
}
else
{
- system("mdlogctl start");
- system("echo 8 | emdlogger_ctrl");
+ system("echo 6 | emdlogger_ctrl");//start modem log SD mode
}
usleep(300000); //delay 2s for ril handling screen on,at least 70ms
diff --git a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index aa4453b..709b7c9 100755
--- a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -916,21 +916,8 @@
/* set the forward port */
fport = (mac->id + 1) << TX_DMA_FPORT_SHIFT;
#if defined(CONFIG_HW_NAT)
- if (IS_MAGIC_TAG_PROTECT_VALID_HEAD(skb)) {
- if (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_PPE) {
- if (ppe_hook_rx_eth) {
- fport = (3 << TX_DMA_FPORT_SHIFT);
- FOE_MAGIC_TAG(skb) = 0;
- }
- }
- } else if (IS_MAGIC_TAG_PROTECT_VALID_TAIL(skb)) {
- if (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_PPE) {
- if (ppe_hook_rx_eth) {
- fport = (3 << TX_DMA_FPORT_SHIFT);
- FOE_MAGIC_TAG(skb) = 0;
- }
- }
- }
+ if (ppe_hook_tx_eth_fport && ppe_hook_tx_eth_fport(skb))
+ fport = (3 << TX_DMA_FPORT_SHIFT);
#endif
txd4 |= fport;
diff --git a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.h
index 745ec1c..bcfe59c 100644
--- a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -1180,6 +1180,7 @@
#if defined(CONFIG_HW_NAT)
extern int (*ppe_hook_rx_eth)(struct sk_buff *skb);
extern int (*ppe_hook_tx_eth)(struct sk_buff *skb, int gmac_no);
+extern int (*ppe_hook_tx_eth_fport)(struct sk_buff *skb);
extern void (*ppe_dev_register_hook)(struct net_device *dev);
extern void (*ppe_dev_unregister_hook)(struct net_device *dev);
#endif
diff --git a/src/kernel/linux/v4.19/include/net/ra_nat.h b/src/kernel/linux/v4.19/include/net/ra_nat.h
index 189e119..5b715e8 100644
--- a/src/kernel/linux/v4.19/include/net/ra_nat.h
+++ b/src/kernel/linux/v4.19/include/net/ra_nat.h
@@ -224,7 +224,9 @@
#define FOE_MAGIC_EDMARX 0x85
#define FOE_MAGIC_RNDIS 0x86
#define FOE_MAGIC_SNPS 0x87
-#define TAG_PROTECT 0x6789
+#define FOE_MAGIC_VALID(num) ((num >= FOE_MAGIC_PCI) && (num <= FOE_MAGIC_SNPS))
+
+#define TAG_PROTECT 0xDEAD
#define USE_HEAD_ROOM 0
#define USE_TAIL_ROOM 1
#define USE_CB 2
@@ -427,23 +429,7 @@
(FOE_MAGIC_TAG_CB(skb) == FOE_MAGIC_RNDIS))
/* macros */
-#define magic_tag_set_zero(skb) \
-{ \
- if ((FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_PCI) || \
- (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_WLAN) || \
- (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_RNDIS) || \
- (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_GE)) { \
- if (IS_SPACE_AVAILABLE_HEAD(skb)) \
- FOE_MAGIC_TAG_HEAD(skb) = 0; \
- } \
- if ((FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_PCI) || \
- (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_WLAN) || \
- (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_RNDIS) || \
- (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_GE)) { \
- if (IS_SPACE_AVAILABLE_TAIL(skb)) \
- FOE_MAGIC_TAG_TAIL(skb) = 0; \
- } \
-}
+#define magic_tag_set_zero(skb) hwnat_magic_tag_set_zero(skb)
static inline void hwnat_set_l2tp_unhit(struct iphdr *iph, struct sk_buff *skb)
{
diff --git a/src/kernel/linux/v4.19/net/nat/foe_hook/hook_ext.c b/src/kernel/linux/v4.19/net/nat/foe_hook/hook_ext.c
index 85a3482..5fad032 100644
--- a/src/kernel/linux/v4.19/net/nat/foe_hook/hook_ext.c
+++ b/src/kernel/linux/v4.19/net/nat/foe_hook/hook_ext.c
@@ -41,6 +41,8 @@
EXPORT_SYMBOL(ppe_hook_rx_eth);
int (*ppe_hook_tx_eth)(struct sk_buff *skb, int gmac_no) = NULL;
EXPORT_SYMBOL(ppe_hook_tx_eth);
+int (*ppe_hook_tx_eth_fport)(struct sk_buff *skb) = NULL;
+EXPORT_SYMBOL(ppe_hook_tx_eth_fport);
int (*ppe_hook_rx_ext)(struct sk_buff *skb) = NULL;
EXPORT_SYMBOL(ppe_hook_rx_ext);
@@ -76,16 +78,26 @@
if ((FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_PCI) ||
(FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_WLAN) ||
(FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_GE) ||
+ (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_WED0) ||
+ (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_WED1) ||
+ (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_MED) ||
(FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_RNDIS)) {
- if (IS_SPACE_AVAILABLE_HEAD(skb))
+ if (IS_SPACE_AVAILABLE_HEAD(skb)) {
FOE_MAGIC_TAG_HEAD(skb) = 0;
+ FOE_TAG_PROTECT_HEAD(skb) = 0;
+ }
}
if ((FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_PCI) ||
(FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_WLAN) ||
(FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_GE) ||
+ (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_WED0) ||
+ (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_WED1) ||
+ (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_MED) ||
(FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_RNDIS)) {
- if (IS_SPACE_AVAILABLE_TAIL(skb))
+ if (IS_SPACE_AVAILABLE_TAIL(skb)) {
FOE_MAGIC_TAG_TAIL(skb) = 0;
+ FOE_TAG_PROTECT_TAIL(skb) = 0;
+ }
}
}
EXPORT_SYMBOL(hwnat_magic_tag_set_zero);
@@ -94,7 +106,7 @@
{
if (IS_SPACE_AVAILABLE_HEAD(skb)) {
FOE_MAGIC_TAG_HEAD(skb) = 0;
- FOE_AI_HEAD(skb) = UN_HIT;
+ FOE_AI(skb) = UN_HIT;
}
if (IS_SPACE_AVAILABLE_TAIL(skb)) {
FOE_MAGIC_TAG_TAIL(skb) = 0;
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.c b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.c
index e988c6d..6757f3d 100755
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.c
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.c
@@ -886,6 +886,46 @@
return 0;
}
+int32_t ppe_tx_eth_fport_handler(struct sk_buff *skb)
+{
+ int ret = 0;
+ struct ethhdr *eth = (struct ethhdr *)skb_mac_header(skb);
+
+ /* PPE can only handle IPv4/IPv6/PPP packets */
+ if (((skb->protocol != htons(ETH_P_8021Q)) &&
+ (skb->protocol != htons(ETH_P_IP)) && (skb->protocol != htons(ETH_P_IPV6)) &&
+ (skb->protocol != htons(ETH_P_PPP_SES)) && (skb->protocol != htons(ETH_P_PPP_DISC))) ||
+ is_multicast_ether_addr(ð->h_dest[0])) {
+
+ hwnat_magic_tag_set_zero(skb);
+
+ if (debug_level >= 10)
+ pr_notice("%s not support, skb->protocol = 0x%x, multicast:%d\n",
+ __func__, skb->protocol, is_multicast_ether_addr(ð->h_dest[0]));
+ } else {
+ if (IS_MAGIC_TAG_PROTECT_VALID_HEAD(skb)) {
+ if (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_PPE && FOE_AI(skb) == UN_HIT) {
+ if (ppe_hook_rx_eth) {
+ ret = 1;
+ FOE_MAGIC_TAG(skb) = 0;
+ }
+ }
+ } else if (IS_MAGIC_TAG_PROTECT_VALID_TAIL(skb)) {
+ if (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_PPE && FOE_AI_TAIL(skb) == UN_HIT) {
+ if (ppe_hook_rx_eth) {
+ ret = 1;
+ FOE_MAGIC_TAG(skb) = 0;
+ }
+ }
+ }
+ }
+
+ if (debug_level >= 10)
+ pr_info("%s end, ret:%d\n", __func__, ret);
+
+ return ret;
+}
+
/* push different VID for WiFi pseudo interface or USB external NIC */
uint32_t ppe_extif_rx_handler(struct sk_buff *skb)
{
@@ -901,8 +941,11 @@
(skb->protocol != htons(ETH_P_PPP_SES)) && (skb->protocol != htons(ETH_P_PPP_DISC))) ||
is_multicast_ether_addr(ð->h_dest[0])) {
+ hwnat_magic_tag_set_zero(skb);
+
if (debug_level >= 10)
pr_notice("%s not support, skb->protocol = 0x%x, multicast:%d\n", __func__, skb->protocol, is_multicast_ether_addr(ð->h_dest[0]));
+
return 1;
}
@@ -4310,7 +4353,7 @@
//pr_notice(" which_region = %d\n", which_region);
if (which_region == ALL_INFO_ERROR) {
- if (debug_level >= 7)
+ if (debug_level >= 10)
pr_notice("ppe_tx_handler : ALL_INFO_ERROR\n");
return 1;
}
@@ -4323,7 +4366,15 @@
int check_magic_tag_valid(struct sk_buff *skb)
{
- if(is_magic_tag_protect_valid(skb))
+ if (FOE_MAGIC_VALID(FOE_MAGIC_TAG(skb)))
+ return 0;
+ else
+ return 1;
+}
+
+int check_rx_idx_valid(struct sk_buff *skb)
+{
+ if (dst_port[FOE_IF_IDX(skb)])
return 0;
else
return 1;
@@ -4833,6 +4884,8 @@
struct foe_entry *entry;
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return;
if (debug_level >= 7) {
hnat_cpu_reason_cnt(skb);
@@ -4860,6 +4913,8 @@
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
if (FOE_AI(skb) == HIT_BIND_FORCE_TO_CPU ||
FOE_AI(skb) == PACKET_FORWARD_PATH_WITHOUT_PPE) {
@@ -4902,6 +4957,8 @@
/*struct ethhdr *eth = (struct ethhdr *)(skb->data - ETH_HLEN);*/
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
if (FOE_AI(skb) == HIT_BIND_KEEPALIVE_DUP_OLD_HDR) {
if (debug_level >= 3)
@@ -4948,6 +5005,8 @@
pr_notice("%s, HIT_BIND_FORCE_TO_CPU, FOE_SP(skb):%d\n", __func__, FOE_SP(skb));
}
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
return hitbind_force_to_cpu_handler(skb, entry);
@@ -5115,7 +5174,7 @@
&ppe1_foe_base[FOE_ENTRY_NUM(skb)] : // MDMA
&ppe_foe_base[FOE_ENTRY_NUM(skb)];
} else {
- entry = &ppe_foe_base[FOE_ENTRY_NUM(skb)];
+ //entry = &ppe_foe_base[FOE_ENTRY_NUM(skb)];
if (debug_level >= 3) {
/* [MAGIC is PPE] extif -> eth_tx (pse port is uninitialized) -> eth rx -> pingpong */
/* [MAGIC is WLAN] rx wifi (pse port is uninitialized) */
@@ -5124,6 +5183,7 @@
pr_notice("%s, SP port error = %d, %s\n", __func__, FOE_SP(skb), skb->dev->name);
}
}
+ return NULL;
}
set_rxif_idx(entry, FOE_IF_IDX(skb));
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.h b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.h
index 3be3d84..858b3b5 100755
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.h
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.h
@@ -75,6 +75,7 @@
uint32_t hnat_cpu_reason_cnt(struct sk_buff *skb);
uint32_t foe_dump_pkt(struct sk_buff *skb, struct foe_entry *entry);
int hitbind_force_to_cpu_handler(struct sk_buff *skb, struct foe_entry *entry);
+int32_t ppe_tx_eth_fport_handler(struct sk_buff *skb);
uint32_t ppe_extif_rx_handler(struct sk_buff *skb);
uint32_t ppe_extif_pingpong_handler(struct sk_buff *skb);
uint32_t keep_alive_handler(struct sk_buff *skb, struct foe_entry *entry);
@@ -112,6 +113,7 @@
int ppe_common_ext(struct sk_buff *skb, struct foe_entry *entry, int gmac_no,
struct pkt_parse_result *ppe_parse_result);
int check_magic_tag_valid(struct sk_buff *skb);
+int check_rx_idx_valid(struct sk_buff *skb);
int set_pre_bind(struct sk_buff *skb,struct foe_entry *entry);
int tx_cpu_handler_wifi(struct sk_buff *skb, struct foe_entry *entry, int gmac_no);
int tx_cpu_handler_eth(struct sk_buff *skb, struct foe_entry *entry, int gmac_no);
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_define.h b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_define.h
index b69017b..0e0cb88 100644
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_define.h
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_define.h
@@ -86,6 +86,7 @@
extern int (*ppe_hook_tx_rndis)(struct sk_buff *skb);
extern int (*ppe_hook_rx_eth)(struct sk_buff *skb);
extern int (*ppe_hook_tx_eth)(struct sk_buff *skb, int gmac_no);
+extern int (*ppe_hook_tx_eth_fport)(struct sk_buff *skb);
extern int (*ppe_hook_rx_ext)(struct sk_buff *skb);
extern int (*ppe_hook_tx_ext)(struct sk_buff *skb, int gmac_no);
extern int (*ppe_hook_rx_snps)(struct sk_buff *skb);
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.c b/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.c
index 2c64392..70e8b2b 100644
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.c
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.c
@@ -254,6 +254,8 @@
//decide which ppe0/ppe1
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
ret = tx_cpu_handler_modem(skb, entry, MDMA_PSE_PORT);
@@ -341,6 +343,8 @@
//decide which ppe0/ppe1
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
ret = tx_cpu_handler_rndis(skb, entry, ADMA_PSE_PORT);
@@ -378,6 +382,8 @@
//decide which ppe0/ppe1
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
ret = tx_cpu_handler_wifi(skb, entry, gmac_no);
@@ -406,16 +412,28 @@
int ret;
ret = check_whitelist(skb);
-
if (ret)
return 1;
+
+ /* check TAG_PROTECT & FOE_ENTRY_NUM */
ret = check_entry_region(skb);
-
if (ret)
return 1;
- //decide which ppe0/ppe1
+ /* check MAGIC_TAG */
+ ret = check_magic_tag_valid(skb);
+ if (ret)
+ return 1;
+
+ /* check IF_IDX */
+ ret = check_rx_idx_valid(skb);
+ if (ret)
+ return 1;
+
+ /* check SP */
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
ret = tx_cpu_handler_eth(skb, entry, gmac_no);
@@ -462,6 +480,8 @@
//decide which ppe0/ppe1
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
ret = tx_cpu_handler_ext(skb, entry, gmac_no);
@@ -495,6 +515,8 @@
//decide which ppe0/ppe1
entry = decide_which_ppe(skb);
+ if (entry == NULL)
+ return 1;
ret = tx_cpu_handler_snps(skb, entry, ADMA_PSE_PORT);
@@ -541,6 +563,7 @@
ppe_hook_rx_eth = ppe_rx_eth_handler;
ppe_hook_tx_eth = ppe_tx_eth_handler;
#endif
+ ppe_hook_tx_eth_fport = ppe_tx_eth_fport_handler;
ppe_hook_rx_ext = ppe_rx_ext_handler;
/* EDIA TX fast path is not ready */
ppe_hook_tx_ext = NULL;
@@ -573,6 +596,7 @@
ppe_hook_rx_eth = NULL;
ppe_hook_tx_eth = NULL;
#endif
+ ppe_hook_tx_eth_fport = NULL;
ppe_hook_rx_ext = NULL;
/* EDIA TX fast path is not ready */
ppe_hook_tx_ext = NULL;
@@ -836,6 +860,7 @@
ppe_hook_rx_eth = ppe_rx_eth_handler;
ppe_hook_tx_eth = ppe_tx_eth_handler;
#endif
+ ppe_hook_tx_eth_fport = ppe_tx_eth_fport_handler;
ppe_hook_rx_ext = ppe_rx_ext_handler;
/* EDIA TX fast path is not ready */
ppe_hook_tx_ext = NULL;
@@ -898,6 +923,7 @@
ppe_hook_tx_rndis = NULL;
ppe_hook_rx_eth = NULL;
ppe_hook_tx_eth = NULL;
+ ppe_hook_tx_eth_fport = NULL;
ppe_hook_rx_ext = NULL;
ppe_hook_tx_ext = NULL;
ppe_dev_register_hook = NULL;
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.h b/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.h
index 1ae61c7..661008c 100644
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.h
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.h
@@ -317,7 +317,9 @@
#define FOE_MAGIC_EDMARX 0x85
#define FOE_MAGIC_RNDIS 0x86
#define FOE_MAGIC_SNPS 0x87
-#define TAG_PROTECT 0x6789
+#define FOE_MAGIC_VALID(num) ((num >= FOE_MAGIC_PCI) && (num <= FOE_MAGIC_SNPS))
+
+#define TAG_PROTECT 0xDEAD
#define USE_HEAD_ROOM 0
#define USE_TAIL_ROOM 1
#define USE_CB 2
@@ -534,23 +536,7 @@
(FOE_MAGIC_TAG_CB(skb) == FOE_MAGIC_RNDIS))
/* macros */
-#define magic_tag_set_zero(skb) \
-{ \
- if ((FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_PCI) || \
- (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_WLAN) || \
- (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_RNDIS) || \
- (FOE_MAGIC_TAG_HEAD(skb) == FOE_MAGIC_GE)) { \
- if (IS_SPACE_AVAILABLE_HEAD(skb)) \
- FOE_MAGIC_TAG_HEAD(skb) = 0; \
- } \
- if ((FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_PCI) || \
- (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_WLAN) || \
- (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_RNDIS) || \
- (FOE_MAGIC_TAG_TAIL(skb) == FOE_MAGIC_GE)) { \
- if (IS_SPACE_AVAILABLE_TAIL(skb)) \
- FOE_MAGIC_TAG_TAIL(skb) = 0; \
- } \
-}
+#define magic_tag_set_zero(skb) hwnat_magic_tag_set_zero(skb)
static inline void hwnat_set_l2tp_unhit(struct iphdr *iph, struct sk_buff *skb)
{
diff --git a/src/lynq/lib/liblynq-call/lynq_call.cpp b/src/lynq/lib/liblynq-call/lynq_call.cpp
index 1f2b28b..002257f 100755
--- a/src/lynq/lib/liblynq-call/lynq_call.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -26,6 +26,11 @@
#define CALL_ON (1)
#define USER_LOG_TAG "LYNQ_CALL"
+#define AP_SPEECH "/tmp/ap_speech"
+#define AUDIO_CTRL_SER "/tmp/audio_ctrl_service"
+#define LIBMODEM_AFE "/tmp/libmodem-afe-ctrl"
+#define TELE_DEMO_LOCK "/tmp/tel_demo_single_proc.lock"
+
using ::android::Parcel;
/**
@@ -906,6 +911,53 @@
}
+int check_file_access(const char *fileName)
+{
+ if(0 == access(fileName,F_OK))
+ {
+ LYINFLOG("find file %s success",fileName);
+ return 0;
+ }
+ LYERRLOG("find file %s fail",fileName);
+ return 1;
+}
+int try_reset_audio_service()
+{
+ //check files:audio-ctrl-service,libmodem-afe-service,speech_daemon
+ int ap_speech = 0;
+ int audio_ctrl_ser = 0;
+ int md_afe = 0;
+ int tele_demo_lock = 0;
+ LYINFLOG("try_reset_audio_service start");
+ ap_speech = check_file_access(AP_SPEECH);
+ audio_ctrl_ser = check_file_access(AUDIO_CTRL_SER);
+ md_afe = check_file_access(LIBMODEM_AFE);
+ tele_demo_lock = check_file_access(TELE_DEMO_LOCK);
+ if((ap_speech + audio_ctrl_ser + md_afe) > 0)
+ {
+ system("systemctl stop audio-ctrl-service");
+ system("systemctl stop speech_daemon");
+ system("systemctl stop libmodem_afe_service");
+ usleep(200000);//200ms
+ system("rm /tmp/audio_ctrl_service -rf");
+ system("rm /tmp/ap_speech -rf");
+ system("rm /tmp/libmodem-afe-ctrl -rf");
+ usleep(100000);//100ms
+ system("systemctl start libmodem_afe_service");
+ usleep(200000);//200ms
+ system("systemctl start speech_daemon");
+ usleep(200000);//200ms
+ system("systemctl start audio-ctrl-service");
+ sleep(1);//1s
+ LYERRLOG("reset audio relation service");
+ }
+ if(tele_demo_lock)
+ {
+ LYERRLOG("%s lose,why?",TELE_DEMO_LOCK);
+ }
+ return 0;
+}
+
int lynq_call(int* handle,char addr[])
{
if(g_module_init_flag != MODULE_RUNNING)
@@ -913,7 +965,7 @@
LYERRLOG("%s module state %d error",__func__,g_module_init_flag);
return LYNQ_E_CONFLICT;
}
-
+ try_reset_audio_service();
int lynq_call_id = -1;
LYINFLOG("lynq_call begin addr %s",addr);