From patchwork Wed Aug 12 19:03:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Stotland, Inga" X-Patchwork-Id: 11711165 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 14C5213A4 for ; Wed, 12 Aug 2020 19:03:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0499A20866 for ; Wed, 12 Aug 2020 19:03:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726640AbgHLTDT (ORCPT ); Wed, 12 Aug 2020 15:03:19 -0400 Received: from mga02.intel.com ([134.134.136.20]:7248 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726512AbgHLTDT (ORCPT ); Wed, 12 Aug 2020 15:03:19 -0400 IronPort-SDR: xiFcWE0lHd+xYdGqEbn5TJPFULxUYdXZmZqV1Ng7xueaLnav29dqs6279TlyJISC/As/n/iEy4 EF2BNpXgYduQ== X-IronPort-AV: E=McAfee;i="6000,8403,9711"; a="141885366" X-IronPort-AV: E=Sophos;i="5.76,305,1592895600"; d="scan'208";a="141885366" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2020 12:03:18 -0700 IronPort-SDR: 5zmocYRBpVxRPPJJOx4wq4wTO2vnEA+HtzanBpcTTwi9pNkLpBvHZP/QM7SFeK3P0sHG1PDE+D qz73AgfLYUwQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,305,1592895600"; d="scan'208";a="295161208" Received: from vsriva1-mobl1.amr.corp.intel.com (HELO ingas-nuc1.intel.com) ([10.255.229.126]) by orsmga006.jf.intel.com with ESMTP; 12 Aug 2020 12:03:18 -0700 From: Inga Stotland To: linux-bluetooth@vger.kernel.org Cc: brian.gix@intel.com, michal.lowas-rzechonek@silvair.com, Inga Stotland Subject: [PATCH BlueZ 1/2] mesh: Fix model ID prior to calling mesh config functions Date: Wed, 12 Aug 2020 12:03:16 -0700 Message-Id: <20200812190317.102140-1-inga.stotland@intel.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Model IDs for SIG defined models need to be stripped off SIG_VENDOR value used for internal housekeeping prior to calling functions that save new model state in node configuration. Also, remove duplicate statements for model lookup in node config. --- mesh/mesh-config-json.c | 7 +------ mesh/model.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/mesh/mesh-config-json.c b/mesh/mesh-config-json.c index a40f92c01..086d618b1 100644 --- a/mesh/mesh-config-json.c +++ b/mesh/mesh-config-json.c @@ -169,11 +169,6 @@ static json_object *get_element_model(json_object *jnode, int ele_idx, size_t len; char buf[9]; - if (!vendor) - snprintf(buf, 5, "%4.4x", (uint16_t)mod_id); - else - snprintf(buf, 9, "%8.8x", mod_id); - if (!json_object_object_get_ex(jnode, "elements", &jelements)) return NULL; @@ -189,7 +184,7 @@ static json_object *get_element_model(json_object *jnode, int ele_idx, return NULL; if (!vendor) { - snprintf(buf, 5, "%4.4x", mod_id); + snprintf(buf, 5, "%4.4x", (uint16_t)mod_id); len = 4; } else { snprintf(buf, 9, "%8.8x", mod_id); diff --git a/mesh/model.c b/mesh/model.c index 23afb93a8..136edb194 100644 --- a/mesh/model.c +++ b/mesh/model.c @@ -628,6 +628,7 @@ static int update_binding(struct mesh_node *node, uint16_t addr, uint32_t id, uint16_t app_idx, bool unbind) { struct mesh_model *mod; + bool vendor; int ele_idx = node_get_element_idx(node, addr); if (ele_idx < 0) @@ -651,11 +652,15 @@ static int update_binding(struct mesh_node *node, uint16_t addr, uint32_t id, if (unbind ^ has_binding(mod->bindings, app_idx)) return MESH_STATUS_SUCCESS; + vendor = IS_VENDOR(id); + id = vendor ? id : MODEL_ID(id); + if (unbind) { model_unbind_idx(node, ele_idx, mod, app_idx); + if (!mesh_config_model_binding_del(node_config_get(node), - addr, IS_VENDOR(id), - id, app_idx)) + addr, vendor, id, + app_idx)) return MESH_STATUS_STORAGE_FAIL; l_debug("Unbind key %4.4x to model %8.8x", app_idx, mod->id); @@ -666,13 +671,12 @@ static int update_binding(struct mesh_node *node, uint16_t addr, uint32_t id, return MESH_STATUS_INSUFF_RESOURCES; if (!mesh_config_model_binding_add(node_config_get(node), addr, - IS_VENDOR(id), id, app_idx)) + vendor, id, app_idx)) return MESH_STATUS_STORAGE_FAIL; model_bind_idx(node, ele_idx, mod, app_idx); return MESH_STATUS_SUCCESS; - } static struct mesh_virtual *add_virtual(const uint8_t *v) From patchwork Wed Aug 12 19:03:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Stotland, Inga" X-Patchwork-Id: 11711167 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A7A651392 for ; Wed, 12 Aug 2020 19:03:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 999912087C for ; Wed, 12 Aug 2020 19:03:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726578AbgHLTDV (ORCPT ); Wed, 12 Aug 2020 15:03:21 -0400 Received: from mga02.intel.com ([134.134.136.20]:7248 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726576AbgHLTDT (ORCPT ); Wed, 12 Aug 2020 15:03:19 -0400 IronPort-SDR: 4hNE40jw6QyNOteiIJKrIFCH2ZT2NeSweAdVNAyBhbUDi4MyUzrGLRyG/GEraA7y5VZDF+Sni+ uKkfhjjTYP3w== X-IronPort-AV: E=McAfee;i="6000,8403,9711"; a="141885369" X-IronPort-AV: E=Sophos;i="5.76,305,1592895600"; d="scan'208";a="141885369" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Aug 2020 12:03:19 -0700 IronPort-SDR: vf0iPNKsKqaJT5Cu8JQZg+nFMQARb4+we36Bh5bjIp2PkPyKvIT+VcOO1AV1u6Y+IlHgYlhk7K S8LOWtFKYI4A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,305,1592895600"; d="scan'208";a="295161216" Received: from vsriva1-mobl1.amr.corp.intel.com (HELO ingas-nuc1.intel.com) ([10.255.229.126]) by orsmga006.jf.intel.com with ESMTP; 12 Aug 2020 12:03:19 -0700 From: Inga Stotland To: linux-bluetooth@vger.kernel.org Cc: brian.gix@intel.com, michal.lowas-rzechonek@silvair.com, Inga Stotland Subject: [PATCH BlueZ 2/2] mesh: Make mesh config model binding API consistent Date: Wed, 12 Aug 2020 12:03:17 -0700 Message-Id: <20200812190317.102140-2-inga.stotland@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200812190317.102140-1-inga.stotland@intel.com> References: <20200812190317.102140-1-inga.stotland@intel.com> MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org This changes the order of function arguments in mesh_config_model_binding_add() and mesh_config_model_binding_del() to make them consistent with the rest of mesh_config_model... APIs --- mesh/mesh-config-json.c | 4 ++-- mesh/mesh-config.h | 4 ++-- mesh/model.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mesh/mesh-config-json.c b/mesh/mesh-config-json.c index 086d618b1..a145388d6 100644 --- a/mesh/mesh-config-json.c +++ b/mesh/mesh-config-json.c @@ -837,7 +837,7 @@ bool mesh_config_app_key_del(struct mesh_config *cfg, uint16_t net_idx, } bool mesh_config_model_binding_add(struct mesh_config *cfg, uint16_t ele_addr, - bool vendor, uint32_t mod_id, + uint32_t mod_id, bool vendor, uint16_t app_idx) { json_object *jnode, *jmodel, *jstring, *jarray = NULL; @@ -882,7 +882,7 @@ bool mesh_config_model_binding_add(struct mesh_config *cfg, uint16_t ele_addr, } bool mesh_config_model_binding_del(struct mesh_config *cfg, uint16_t ele_addr, - bool vendor, uint32_t mod_id, + uint32_t mod_id, bool vendor, uint16_t app_idx) { json_object *jnode, *jmodel, *jarray; diff --git a/mesh/mesh-config.h b/mesh/mesh-config.h index f15f3f376..50a55d51e 100644 --- a/mesh/mesh-config.h +++ b/mesh/mesh-config.h @@ -152,10 +152,10 @@ bool mesh_config_comp_page_add(struct mesh_config *cfg, uint8_t page, uint8_t *data, uint16_t size); bool mesh_config_comp_page_mv(struct mesh_config *cfg, uint8_t old, uint8_t nw); bool mesh_config_model_binding_add(struct mesh_config *cfg, uint16_t ele_addr, - bool vendor, uint32_t mod_id, + uint32_t mod_id, bool vendor, uint16_t app_idx); bool mesh_config_model_binding_del(struct mesh_config *cfg, uint16_t ele_addr, - bool vendor, uint32_t mod_id, + uint32_t mod_id, bool vendor, uint16_t app_idx); bool mesh_config_model_pub_add(struct mesh_config *cfg, uint16_t ele_addr, uint32_t mod_id, bool vendor, diff --git a/mesh/model.c b/mesh/model.c index 136edb194..961391f13 100644 --- a/mesh/model.c +++ b/mesh/model.c @@ -659,7 +659,7 @@ static int update_binding(struct mesh_node *node, uint16_t addr, uint32_t id, model_unbind_idx(node, ele_idx, mod, app_idx); if (!mesh_config_model_binding_del(node_config_get(node), - addr, vendor, id, + addr, id, vendor, app_idx)) return MESH_STATUS_STORAGE_FAIL; @@ -671,7 +671,7 @@ static int update_binding(struct mesh_node *node, uint16_t addr, uint32_t id, return MESH_STATUS_INSUFF_RESOURCES; if (!mesh_config_model_binding_add(node_config_get(node), addr, - vendor, id, app_idx)) + id, vendor, app_idx)) return MESH_STATUS_STORAGE_FAIL; model_bind_idx(node, ele_idx, mod, app_idx);