Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb50e3e9 authored by baofu.cheng_contractor's avatar baofu.cheng_contractor Committed by lio.chen
Browse files

Revert "Fix SoftAP remove ap0 cause ANR"

Change-Id: I4ac4548ae59e694206afff14c51c9354ff88d6e5
parent 3386817d
Loading
Loading
Loading
Loading
+26 −40
Original line number Diff line number Diff line
@@ -38,8 +38,6 @@
// Private functions.
//------------------------------------------------------------------------------
static uint32_t mddp_netdev_notifier_is_init;

unsigned long mddp_abnormal_disabled_jiffies = 0;
static int mddp_netdev_notify_cb(struct notifier_block *nb,
				 unsigned long event, void *data)
{
@@ -66,11 +64,9 @@ static struct notifier_block mddp_netdev_notifier __read_mostly = {

void mddp_netdev_notifier_init(void)
{
	if (!mddp_netdev_notifier_is_init &&
			(register_netdevice_notifier(&mddp_netdev_notifier) == 0)) {
	if (register_netdevice_notifier(&mddp_netdev_notifier) == 0)
		mddp_netdev_notifier_is_init = 1;
}
}

void mddp_netdev_notifier_exit(void)
{
@@ -131,6 +127,31 @@ int32_t mddp_on_enable(enum mddp_app_type_e in_type)
	return 0;
}

int32_t mddp_on_disable(enum mddp_app_type_e in_type)
{
	struct mddp_app_t      *app;
	uint32_t                type;
	uint8_t                 idx;

	if (in_type != MDDP_APP_TYPE_ALL)
		return -EINVAL;

	/*
	 * MDDP DISABLE command.
	 */
	for (idx = 0; idx < MDDP_MOD_CNT; idx++) {
		type = mddp_sm_module_list_s[idx];
		app = mddp_get_app_inst(type);
		if (!(app->feature & MDDP_FEATURE_MDDP_WH) || !app->drv_reg)
			continue;
		mddp_sm_wait_pre(app);
		mddp_sm_on_event(app, MDDP_EVT_FUNC_DISABLE);
		mddp_sm_wait(app, MDDP_EVT_FUNC_DISABLE);
	}

	return 0;
}

int32_t mddp_on_activate(enum mddp_app_type_e type,
		uint8_t *ul_dev_name, uint8_t *dl_dev_name)
{
@@ -203,41 +224,6 @@ int32_t mddp_on_deactivate(enum mddp_app_type_e type)
	return 0;
}

int32_t mddp_on_disable(enum mddp_app_type_e in_type)
{
	struct mddp_app_t      *app;
	uint32_t                type;
	uint8_t                 idx;

	if (in_type != MDDP_APP_TYPE_ALL)
		return -EINVAL;

	/* If MDDP is not deactivated,
	 * Deactive first to avoid state machine corruption
	 */
	if (mddp_f_dev_is_wan_lan_dev()) {
		int32_t ret = 0;

		mddp_abnormal_disabled_jiffies = jiffies;
		ret = mddp_on_deactivate(MDDP_APP_TYPE_WH);
	}

	/*
	 * MDDP DISABLE command.
	 */
	for (idx = 0; idx < MDDP_MOD_CNT; idx++) {
		type = mddp_sm_module_list_s[idx];
		app = mddp_get_app_inst(type);
		if (!(app->feature & MDDP_FEATURE_MDDP_WH) || !app->drv_reg)
			continue;
		mddp_sm_wait_pre(app);
		mddp_sm_on_event(app, MDDP_EVT_FUNC_DISABLE);
		mddp_sm_wait(app, MDDP_EVT_FUNC_DISABLE);
	}

	return 0;
}

int32_t mddp_on_get_offload_stats(
		enum mddp_app_type_e type,
		uint8_t *buf,
+4 −10
Original line number Diff line number Diff line
@@ -459,8 +459,6 @@ void mddp_dump_sm_table(struct mddp_app_t *app)
}
#endif

extern unsigned long mddp_abnormal_disabled_jiffies;

enum mddp_state_e mddp_sm_on_event(struct mddp_app_t *app,
		enum mddp_event_e event)
{
@@ -469,13 +467,11 @@ enum mddp_state_e mddp_sm_on_event(struct mddp_app_t *app,
	enum mddp_state_e               new_state;
	struct mddp_sm_entry_t         *state_machine;
	struct mddp_sm_entry_t         *entry;
	bool 							lanWanExist;

	mutex_lock(&mddp_state_handler_mtx);

	new_state = old_state = mddp_get_state(app);
	state_machine = app->state_machines[old_state];
	lanWanExist = mddp_f_dev_is_wan_lan_dev();

	for (idx = 0; idx < MDDP_EVT_CNT; idx++) {
		entry = state_machine + idx;
@@ -490,9 +486,8 @@ enum mddp_state_e mddp_sm_on_event(struct mddp_app_t *app,

			mddp_dump_sm_table(app);
			MDDP_S_LOG(MDDP_LL_WARN,
					"%s:evt(%d),(%d)->(%d),e(%d),j(%lu)\n",
					__func__, event, old_state, new_state,
					lanWanExist,mddp_abnormal_disabled_jiffies);
					"%s: event(%d), old_state(%d) -> new_state(%d).\n",
					__func__, event, old_state, new_state);

			if (entry->action)
				entry->action(app);
@@ -503,9 +498,8 @@ enum mddp_state_e mddp_sm_on_event(struct mddp_app_t *app,
			 * NG. Unexpected event for this state!
			 */
			MDDP_S_LOG(MDDP_LL_WARN,
					"%s: Invalid e(%d) for s(%d)!e(%d),j(%lu)\n",
					__func__, event, old_state,
					lanWanExist,mddp_abnormal_disabled_jiffies);
					"%s: Invalid event(%d) for current state(%d)!\n",
					__func__, event, old_state);

			break;
		}
+0 −22
Original line number Diff line number Diff line
@@ -295,25 +295,3 @@ void mddp_f_dev_del_wan_dev(char *dev_name)
			__func__, dev_name, i,
			mddp_f_wan_dev_cnt_g);
}

bool mddp_f_dev_is_wan_lan_dev(void)
{
	bool exist = false;
	int i;

	for (i = 0; i < MDDP_MAX_WAN_DEV_NUM; i++) {
		if (mddp_f_wan_dev[i].is_valid == true) {
			exist = true;
			return exist;
		}
	}

	for (i = 0; i < MDDP_MAX_LAN_DEV_NUM; i++) {
		if (mddp_f_lan_dev[i].is_valid == true) {
			exist = true;
			return exist;
		}
	}

	return exist;
}
+0 −1
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ bool mddp_f_dev_add_lan_dev(char *dev_name, int netif_id);
bool mddp_f_dev_add_wan_dev(char *dev_name);
void mddp_f_dev_del_lan_dev(char *dev_name);
void mddp_f_dev_del_wan_dev(char *dev_name);
bool mddp_f_dev_is_wan_lan_dev(void);
struct net_device *mddp_f_is_support_lan_dev(int ifindex);
struct net_device *mddp_f_is_support_wan_dev(int ifindex);