- /* Copy the data to be transmitted into the output buffer */
-/* while ( (written < length) && (space >= sizeof(struct canmsg_t)) ) {
- copy_from_user(fifo->tx_writep,buffer, sizeof(struct canmsg_t));
- cli();
- fifo->tx_writep++;
- if (fifo->tx_writep >= fifo->buf_tx_entry + MAX_BUF_LENGTH)
- fifo->tx_writep = fifo->buf_tx_entry;
- buffer += sizeof(struct canmsg_t);
- written += sizeof(struct canmsg_t);
- space = ((int)fifo->tx_writep < (int)fifo->tx_readp) ?
- ((int)fifo->tx_readp - (int)fifo->tx_writep) :
- ((int)fifo->tx_readp - (int)fifo->tx_writep +
- (int)fifo->tx_size);
- sti();
- } */
-
- /* Initiate transmission in case we are not already transmitting */
- cli();
- if (!fifo->tx_in_progress) {
- fifo->tx_in_progress = 1;
- sti();
- if ( (ret = chip->chipspecops->pre_write_config(chip, obj,
- write_msg)) < 0) {
- CANMSG("Error initializing hardware for sending\n");
- return -EIO;
- }
- obj->ret = 0;
- if ( (ret = chip->chipspecops->send_msg(chip, obj,
- write_msg)) < 0) {
- CANMSG("Error sending message\n");
- return -EIO;
- }
- /* If O_SYNC is specified wait for successfull transmission */
-/* while (1) {
- cli();
- if ( (!file->f_flags & O_SYNC) ||
- (!fifo->tx_in_progress)) {
- sti();
- if (obj->ret < 0)
- return obj->ret;
- else
- return written;
- }
- cli();
- if (fifo->tx_in_progress) {
- can_timeout = interruptible_sleep_on_timeout(
- &fifo->writeq, CANTIMEOUT);
- }
- sti();
- if (signal_pending(current))
- return -EINTR;
- if (!can_timeout)
- return -EIO;
- } */