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

Commit 384f8001 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge bdc07671 on remote branch

Change-Id: I4963fd1150ba6ba5f2c21a2a28f35413c3c6fa6f
parents 398d4da1 bdc07671
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -299,7 +299,7 @@ extern int (*rmnet_shs_skb_entry)(struct sk_buff *skb,
int rmnet_shs_is_lpwr_cpu(u16 cpu);
void rmnet_shs_cancel_table(void);
void rmnet_shs_rx_wq_init(void);
void rmnet_shs_rx_wq_exit(void);
unsigned int rmnet_shs_rx_wq_exit(void);
int rmnet_shs_get_mask_len(u8 mask);

int rmnet_shs_chk_and_flush_node(struct rmnet_shs_skbn_s *node,
@@ -314,7 +314,7 @@ void rmnet_shs_assign(struct sk_buff *skb, struct rmnet_port *port);
void rmnet_shs_flush_table(u8 is_force_flush, u8 ctxt);
void rmnet_shs_cpu_node_remove(struct rmnet_shs_skbn_s *node);
void rmnet_shs_init(struct net_device *dev, struct net_device *vnd);
void rmnet_shs_exit(void);
void rmnet_shs_exit(unsigned int cpu_switch);
void rmnet_shs_ps_on_hdlr(void *port);
void rmnet_shs_ps_off_hdlr(void *port);
void rmnet_shs_update_cpu_proc_q_all_cpus(void);
+4 −2
Original line number Diff line number Diff line
@@ -99,14 +99,16 @@ static int rmnet_shs_dev_notify_cb(struct notifier_block *nb,
		 * phy_dev is going down.
		 */
		if (!rmnet_vnd_total && rmnet_shs_cfg.rmnet_shs_init_complete) {
			unsigned int cpu_switch;

			pr_info("rmnet_shs deinit %s going down ", dev->name);
			RCU_INIT_POINTER(rmnet_shs_skb_entry, NULL);
			qmi_rmnet_ps_ind_deregister(rmnet_shs_cfg.port,
					    &rmnet_shs_cfg.rmnet_idl_ind_cb);
			rmnet_shs_cancel_table();
			rmnet_shs_rx_wq_exit();
			cpu_switch = rmnet_shs_rx_wq_exit();
			rmnet_shs_wq_exit();
			rmnet_shs_exit();
			rmnet_shs_exit(cpu_switch);
			trace_rmnet_shs_high(RMNET_SHS_MODULE,
					     RMNET_SHS_MODULE_INIT_WQ,
					     0xDEF, 0xDEF, 0xDEF,
+15 −4
Original line number Diff line number Diff line
@@ -1359,14 +1359,25 @@ void rmnet_shs_rx_wq_init(void)
	INIT_WORK(&shs_rx_work.work, rmnet_flush_buffered);
}

void rmnet_shs_rx_wq_exit(void)
unsigned int rmnet_shs_rx_wq_exit(void)
{
	unsigned int cpu_switch = rmnet_shs_inst_rate_switch;
	int i;

	for (i = 0; i < MAX_CPUS; i++)
	/* Disable any further core_flush timer starts untill cleanup
	 * is complete.
	 */
	rmnet_shs_inst_rate_switch = 0;

	for (i = 0; i < MAX_CPUS; i++) {
		hrtimer_cancel(&GET_CTIMER(i));

		cancel_work_sync(&rmnet_shs_cfg.core_flush[i].work);
	}

	cancel_work_sync(&shs_rx_work.work);

	return cpu_switch;
}

void rmnet_shs_ps_on_hdlr(void *port)
@@ -1724,7 +1735,7 @@ void rmnet_shs_assign(struct sk_buff *skb, struct rmnet_port *port)
/* Cancels the flushing timer if it has been armed
 * Deregisters DL marker indications
 */
void rmnet_shs_exit(void)
void rmnet_shs_exit(unsigned int cpu_switch)
{
	rmnet_shs_freq_exit();
	rmnet_shs_cfg.dl_mrk_ind_cb.dl_hdr_handler = NULL;
@@ -1738,5 +1749,5 @@ void rmnet_shs_exit(void)
	memset(&rmnet_shs_cfg, 0, sizeof(rmnet_shs_cfg));
	rmnet_shs_cfg.port = NULL;
	rmnet_shs_cfg.rmnet_shs_init_complete = 0;

	rmnet_shs_inst_rate_switch = cpu_switch;
}