On Sun, May 29, 2005 at 07:35:34PM -0400, Alfred M. Szmidt wrote:
> --- linux/src/drivers/net/ne2k-pci.c
> +++ linux/src/drivers/net/ne2k-pci.c
> @@ -542,7 +542,10 @@
> if (count & 3) {
> buf += count & ~3;
> if (count & 2)
> - *((u16*)buf)++ = inw(NE_BASE + NE_DATAPORT);
> + {
> + *buf = *(u16 *) buf + 1;
> + *buf = inw(NE_BASE + NE_DATAPORT);
> + }
> if (count & 1)
> *buf = inb(NE_BASE + NE_DATAPORT);
> }
> @@ -605,7 +608,8 @@
> if (count & 3) {
> buf += count & ~3;
> if (count & 2)
> - outw(*((u16*)buf)++, NE_BASE + NE_DATAPORT);
> + outw(*buf++, NE_BASE + NE_DATAPORT);
> +
> }
> #else
> outsw(NE_BASE + NE_DATAPORT, buf, count>>1);
This patch is wrong imo.
A patch to correct this on gnumach-1-branch follows:
2005-09-26 Thomas Schwinge <[EMAIL PROTECTED]>
* linux/src/drivers/net/ne2k-pci.c (ne_block_input) and
(ne_block_output): Fix previous patch.
--- old-gnumach-1-branch.1.ne2k-pci-fixes/linux/src/drivers/net/ne2k-pci.c
2005-09-26 11:48:05.433286440 +0200
+++ new-gnumach-1-branch.1.ne2k-pci-fixes/linux/src/drivers/net/ne2k-pci.c
2005-09-26 11:48:05.439285528 +0200
@@ -541,11 +541,10 @@
insl(NE_BASE + NE_DATAPORT, buf, count>>2);
if (count & 3) {
buf += count & ~3;
- if (count & 2)
- {
- *buf = *(u16 *) buf + 1;
- *buf = inw(NE_BASE + NE_DATAPORT);
- }
+ if (count & 2) {
+ *((u16 *) buf) = inw(NE_BASE + NE_DATAPORT);
+ buf = (char *) ((u16 *) buf + 1);
+ }
if (count & 1)
*buf = inb(NE_BASE + NE_DATAPORT);
}
@@ -607,8 +606,10 @@
outsl(NE_BASE + NE_DATAPORT, buf, count>>2);
if (count & 3) {
buf += count & ~3;
- if (count & 2)
- outw(*buf++, NE_BASE + NE_DATAPORT);
+ if (count & 2) {
+ outw(*((u16 *) buf), NE_BASE + NE_DATAPORT);
+ buf = (unsigned char *) ((u16 *) buf + 1);
+ }
}
#else
Regards,
Thomas
_______________________________________________
Bug-hurd mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-hurd