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

Commit 7c335cd9 authored by Subash Abhinov Kasiviswanathan's avatar Subash Abhinov Kasiviswanathan
Browse files

rmnet_shs: Fix invalid init for disabled RPS



Previously if rmnet_shs was initialized when
RPS mask was invalid it would cause a invalid
partial initialization.

This changes fixes that condition and allows
rmnet_shs to handle an invalid RPS mask correctly.

CRs-Fixed: 2465433
Change-Id: Idc6a92af582ccd390d57ed89f708a5f53593a86e
Acked-by: default avatarRaul Martinez <mraul@qti.qualcomm.com>
Signed-off-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
parent 4a01a5ce
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -1330,17 +1330,24 @@ void rmnet_shs_init(struct net_device *dev, struct net_device *vnd)
{
	struct rps_map *map;
	u8 num_cpu;
	u8 map_mask;
	u8 map_len;

	if (rmnet_shs_cfg.rmnet_shs_init_complete)
		return;
	map = rcu_dereference(vnd->_rx->rps_map);

	if (!map)
		return;
	if (!map) {
		map_mask = 0;
		map_len = 0;
	} else {
		map_mask = rmnet_shs_mask_from_map(map);
		map_len = rmnet_shs_get_mask_len(rmnet_shs_cfg.map_mask);
	}

	rmnet_shs_cfg.port = rmnet_get_port(dev);
	rmnet_shs_cfg.map_mask = rmnet_shs_mask_from_map(map);
	rmnet_shs_cfg.map_len = rmnet_shs_get_mask_len(rmnet_shs_cfg.map_mask);
	rmnet_shs_cfg.map_mask = map_mask;
	rmnet_shs_cfg.map_len = map_len;
	for (num_cpu = 0; num_cpu < MAX_CPUS; num_cpu++)
		INIT_LIST_HEAD(&rmnet_shs_cpu_node_tbl[num_cpu].node_list_id);