summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqctecmdr <qctecmdr@localhost>2020-02-20 16:09:12 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2020-02-20 16:09:12 -0800
commit917b65c0968f8692e9e60739b252c724ff747042 (patch)
treece47f57eef243db086dcb32a05eda33c38dfe4af
parent7df5f0a17dd5a1acd0e5637f4c5590dbe1924bc9 (diff)
parentb092b50c5452330f9d0b0fef22ecce617093df93 (diff)
downloaddata-kernel-917b65c0968f8692e9e60739b252c724ff747042.tar.gz
Merge "drivers: rmnet_shs: Fix invalid mask on vnd creation"
-rw-r--r--drivers/rmnet/shs/rmnet_shs_wq.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/rmnet/shs/rmnet_shs_wq.c b/drivers/rmnet/shs/rmnet_shs_wq.c
index 4c69b57..620a41f 100644
--- a/drivers/rmnet/shs/rmnet_shs_wq.c
+++ b/drivers/rmnet/shs/rmnet_shs_wq.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -1875,19 +1875,30 @@ void rmnet_shs_update_cfg_mask(void)
{
/* Start with most avaible mask all eps could share*/
u8 mask = UPDATE_MASK;
+ u8 rps_enabled = 0;
struct rmnet_shs_wq_ep_s *ep;
list_for_each_entry(ep, &rmnet_shs_wq_ep_tbl, ep_list_id) {
if (!ep->is_ep_active)
continue;
- /* Bitwise and to get common mask VNDs with different mask
- * will have UNDEFINED behavior
+ /* Bitwise and to get common mask from non-null masks.
+ * VNDs with different mask will have UNDEFINED behavior
*/
- mask &= ep->rps_config_msk;
+ if (ep->rps_config_msk) {
+ mask &= ep->rps_config_msk;
+ rps_enabled = 1;
+ }
+ }
+
+ if (!rps_enabled) {
+ rmnet_shs_cfg.map_mask = 0;
+ rmnet_shs_cfg.map_len = 0;
+ return;
+ } else if (rmnet_shs_cfg.map_mask != mask) {
+ rmnet_shs_cfg.map_mask = mask;
+ rmnet_shs_cfg.map_len = rmnet_shs_get_mask_len(mask);
}
- rmnet_shs_cfg.map_mask = mask;
- rmnet_shs_cfg.map_len = rmnet_shs_get_mask_len(mask);
}
void rmnet_shs_wq_update_stats(void)