On 3/2/21 11:50 AM, Dario Binacchi wrote: > Hi Marc, > >> Il 01/03/2021 20:45 Marc Kleine-Budde ha scritto: >> >> >> On 01.03.2021 18:21:42, Dario Binacchi wrote: >>>>> @@ -730,7 +728,7 @@ static void c_can_do_tx(struct net_device *dev) >>>>> while ((idx = ffs(pend))) { >>>>> idx--; >>>>> pend &= ~(1 << idx); >>>>> - obj = idx + C_CAN_MSG_OBJ_TX_FIRST; >>>>> + obj = idx + priv->msg_obj_tx_first; >>>>> c_can_inval_tx_object(dev, IF_TX, obj); >>>>> can_get_echo_skb(dev, idx, NULL); >>>>> bytes += priv->dlc[idx]; >>>>> @@ -740,7 +738,7 @@ static void c_can_do_tx(struct net_device *dev) >>>>> /* Clear the bits in the tx_active mask */ >>>>> atomic_sub(clr, &priv->tx_active); >>>>> >>>>> - if (clr & (1 << (C_CAN_MSG_OBJ_TX_NUM - 1))) >>>>> + if (clr & (1 << (priv->msg_obj_tx_num - 1))) >>>> >>>> Do we need 1UL here, too? >>> >>> Do you agree if I use the BIT macro ? >> >> No, please use GENMASK(priv->msg_obj_tx_num, 0) here. > > In case of 64 message objects, msg_obj_tx_num = 32, and 1 << (priv->msg_obj_tx_num - 1) = 0x80000000. > GENMASK(priv->msg_obj_tx_num, 0) = 0. > BIT(priv->msg_obj_tx_num - 1) = 0x80000000. Doh! I've misread where the -1 is places. Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |