diff options
author | qctecmdr <qctecmdr@localhost> | 2020-02-20 16:09:12 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2020-02-20 16:09:12 -0800 |
commit | 917b65c0968f8692e9e60739b252c724ff747042 (patch) | |
tree | ce47f57eef243db086dcb32a05eda33c38dfe4af | |
parent | 7df5f0a17dd5a1acd0e5637f4c5590dbe1924bc9 (diff) | |
parent | b092b50c5452330f9d0b0fef22ecce617093df93 (diff) | |
download | data-kernel-917b65c0968f8692e9e60739b252c724ff747042.tar.gz |
Merge "drivers: rmnet_shs: Fix invalid mask on vnd creation"
-rw-r--r-- | drivers/rmnet/shs/rmnet_shs_wq.c | 23 |
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) |