can: fix assignment of error location in CAN error messages
As Dan Carpenter reported in http://marc.info/?l=linux-can&m=144793696016187 the assignment of the error location in CAN error messages had some bit wise overlaps. Indeed the value to be assigned in data[3] is no bitfield but defines a single value which points to a location inside the CAN frame on the wire. This patch fixes the assignments for the error locations in error messages. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:

committed by
Marc Kleine-Budde

parent
7cecd9ab80
commit
ffd461f80d
@@ -737,13 +737,11 @@ static int ti_hecc_error(struct net_device *ndev, int int_status,
|
||||
}
|
||||
if (err_status & HECC_CANES_CRCE) {
|
||||
hecc_set_bit(priv, HECC_CANES, HECC_CANES_CRCE);
|
||||
cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ |
|
||||
CAN_ERR_PROT_LOC_CRC_DEL;
|
||||
cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ;
|
||||
}
|
||||
if (err_status & HECC_CANES_ACKE) {
|
||||
hecc_set_bit(priv, HECC_CANES, HECC_CANES_ACKE);
|
||||
cf->data[3] |= CAN_ERR_PROT_LOC_ACK |
|
||||
CAN_ERR_PROT_LOC_ACK_DEL;
|
||||
cf->data[3] = CAN_ERR_PROT_LOC_ACK;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user