- id=(can_read_reg(chip, SJARXID1)<<8) + can_read_reg(chip,
- SJARXID0);
- fifo->buf_rx_entry[fifo->head].length = (id>>8) & 0x0f;
- fifo->buf_rx_entry[fifo->head].id = id>>5;
- fifo->buf_rx_entry[fifo->head].flags = id&ID0_RTR ?
- MSG_RTR : 0;
- fifo->buf_rx_entry[fifo->head].timestamp = 0;
- fifo->buf_rx_entry[fifo->head].cob = 0;
- for (i=0; i<fifo->buf_rx_entry[fifo->head].length; i++) {
- fifo->buf_rx_entry[fifo->head].data[i] =
- can_read_reg(chip,SJARXDAT0 + i);
- }
- fifo->head++;
- if (fifo->head == MAX_BUF_LENGTH -1)
- fifo->head = 0;
+ id = can_read_reg(chip, SJARXID0) | (can_read_reg(chip, SJARXID1)<<8);
+ fifo->rx_writep->length = id & 0x0f;
+ fifo->rx_writep->flags = id&ID0_RTR ? MSG_RTR : 0;
+ fifo->rx_writep->timestamp = 0;
+ fifo->rx_writep->cob = 0;
+ fifo->rx_writep->id = id>>5;
+
+ for (i=0; i<fifo->rx_writep->length; i++)
+ fifo->rx_writep->data[i]=can_read_reg(chip, SJARXDAT0 + i);
+
+ fifo->rx_writep++;
+ if (fifo->rx_writep >= fifo->buf_rx_entry + MAX_BUF_LENGTH)
+ fifo->rx_writep = fifo->buf_rx_entry;
+