git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'fix/hda' of git://github.com/tiwai/sound
[pandora-kernel.git]
/
drivers
/
net
/
can
/
mscan
/
mscan.c
diff --git
a/drivers/net/can/mscan/mscan.c
b/drivers/net/can/mscan/mscan.c
index
92feac6
..
4cc6f44
100644
(file)
--- a/
drivers/net/can/mscan/mscan.c
+++ b/
drivers/net/can/mscan/mscan.c
@@
-261,11
+261,13
@@
static netdev_tx_t mscan_start_xmit(struct sk_buff *skb, struct net_device *dev)
void __iomem *data = ®s->tx.dsr1_0;
u16 *payload = (u16 *)frame->data;
void __iomem *data = ®s->tx.dsr1_0;
u16 *payload = (u16 *)frame->data;
- /* It is safe to write into dsr[dlc+1] */
- for (i = 0; i < (frame->can_dlc + 1) / 2; i++) {
+ for (i = 0; i < frame->can_dlc / 2; i++) {
out_be16(data, *payload++);
data += 2 + _MSCAN_RESERVED_DSR_SIZE;
}
out_be16(data, *payload++);
data += 2 + _MSCAN_RESERVED_DSR_SIZE;
}
+ /* write remaining byte if necessary */
+ if (frame->can_dlc & 1)
+ out_8(data, frame->data[frame->can_dlc - 1]);
}
out_8(®s->tx.dlr, frame->can_dlc);
}
out_8(®s->tx.dlr, frame->can_dlc);
@@
-330,10
+332,13
@@
static void mscan_get_rx_frame(struct net_device *dev, struct can_frame *frame)
void __iomem *data = ®s->rx.dsr1_0;
u16 *payload = (u16 *)frame->data;
void __iomem *data = ®s->rx.dsr1_0;
u16 *payload = (u16 *)frame->data;
- for (i = 0; i <
(frame->can_dlc + 1)
/ 2; i++) {
+ for (i = 0; i <
frame->can_dlc
/ 2; i++) {
*payload++ = in_be16(data);
data += 2 + _MSCAN_RESERVED_DSR_SIZE;
}
*payload++ = in_be16(data);
data += 2 + _MSCAN_RESERVED_DSR_SIZE;
}
+ /* read remaining byte if necessary */
+ if (frame->can_dlc & 1)
+ frame->data[frame->can_dlc - 1] = in_8(data);
}
out_8(®s->canrflg, MSCAN_RXF);
}
out_8(®s->canrflg, MSCAN_RXF);