diff -uprN vblade-20/NEWS vblade-21pre1/NEWS
--- vblade-20/NEWS	2009-08-14 15:34:40.000000000 -0400
+++ vblade-21pre1/NEWS	2013-03-18 21:38:59.000000000 -0400
@@ -1,4 +1,8 @@
 -*- change-log -*-
+2013-03-18 Ed Cashin <ecashin@coraid.com>
+	add big-endian support from Daniel Mealha Cabrita <dancab@gmx.net>
+	vblade-21
+
 2009-08-14 Sam Hopkins <sah@coraid.com>
 	bugfix: aoe command error did not set Error bit in flags
 	add support for AoEr11
diff -uprN vblade-20/ata.c vblade-21pre1/ata.c
--- vblade-20/ata.c	2009-08-14 14:33:09.000000000 -0400
+++ vblade-21pre1/ata.c	2013-03-18 21:59:34.000000000 -0400
@@ -23,16 +23,7 @@ enum {
 	ERR =	1<<0,
 };
 
-static ushort ident[256] = {
-	[47] 0x8000,
-	[49] 0x0200,
-	[50] 0x4000,
-	[83] 0x5400,
-	[84] 0x4000,
-	[86] 0x1400,
-	[87] 0x4000,
-	[93] 0x400b,
-};
+static ushort ident[256];
 
 static void
 setfld(ushort *a, int idx, int len, char *str)	// set field in ident
@@ -79,12 +70,30 @@ setlba48(ushort *ident, vlong lba)
 	*cp++ = lba >>= 8;
 	*cp++ = lba >>= 8;
 }
-		
+
+static void
+setushort(ushort *a, int i, ushort n)
+{
+	uchar *p;
+
+	p = (uchar *)(a+i);
+	*p++ = n & 0xff;
+	*p++ = n >> 8;
+}
+
 void
 atainit(void)
 {
 	char buf[64];
 
+	setushort(ident, 47, 0x8000);
+	setushort(ident, 49, 0x0200);
+	setushort(ident, 50, 0x4000);
+	setushort(ident, 83, 0x5400);
+	setushort(ident, 84, 0x4000);
+	setushort(ident, 86, 0x1400);
+	setushort(ident, 87, 0x4000);
+	setushort(ident, 93, 0x400b);
 	setfld(ident, 27, 40, "Coraid EtherDrive vblade");
 	sprintf(buf, "V%d", VBLADE_VERSION);
 	setfld(ident, 23, 8, buf);
diff -uprN vblade-20/dat.h vblade-21pre1/dat.h
--- vblade-20/dat.h	2009-08-14 15:33:36.000000000 -0400
+++ vblade-21pre1/dat.h	2013-03-18 21:38:53.000000000 -0400
@@ -6,7 +6,7 @@
  */
 
 enum {
-	VBLADE_VERSION		= 20,
+	VBLADE_VERSION		= 21,
 
 	// Firmware version
 	FWV			= 0x4000 + VBLADE_VERSION,
