Hi Jakub and Michal, If you have no objections, this will be the version of the Long MIC patch I will be applying. > -----Original Message----- > From: Gix, Brian > Sent: Thursday, May 23, 2019 10:53 AM > To: linux-bluetooth@xxxxxxxxxxxxxxx > Cc: Stotland, Inga <inga.stotland@xxxxxxxxx>; Gix, Brian > <brian.gix@xxxxxxxxx>; jakub.witowski@xxxxxxxxxxx; michal.lowas- > rzechonek@xxxxxxxxxxx > Subject: [PATCH BlueZ] mesh: Fix long MIC usage in segmented messages > > From: Jakub Witowski <jakub.witowski@xxxxxxxxxxx> > > Contrary to the comment, implementation used a 8-byte MIC even if this > generated an additional segment. > --- > mesh/model.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/mesh/model.c b/mesh/model.c index 034d54496..90bb62db8 > 100644 > --- a/mesh/model.c > +++ b/mesh/model.c > @@ -40,6 +40,9 @@ > #include "mesh/util.h" > #include "mesh/model.h" > > +/* Divide and round to ceiling (up) to calculate segment count */ > +#define CEILDIV(val, div) (((val) + (div) - 1) / (div)) > + > struct mesh_model { > const struct mesh_model_ops *cbs; > void *user_data; > @@ -451,7 +454,7 @@ static bool msg_send(struct mesh_node *node, bool > credential, uint16_t src, > > /* Use large MIC if it doesn't affect segmentation */ > if (msg_len > 11 && msg_len <= 376) { > - if ((out_len / 12) == ((out_len + 4) / 12)) { > + if (CEILDIV(out_len, 12) == CEILDIV(out_len + 4, 12)) { > szmic = true; > out_len = msg_len + sizeof(uint64_t); > } > -- > 2.14.5