diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index a34f20f..10673b8 100755
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -130,7 +130,7 @@
 			if (k < 0) {
 				continue;
 			}
-			if (is_sysvar_shared(name)) {
+			if (get_sysvar_shared(name)) {
 				puts(">>> ");
 			}
 			puts (name);
@@ -393,10 +393,16 @@
 		printf ("Usage:\n%s\n", cmdtp->usage);
 		return 1;
 	}
-	if (argc >= 2 && is_sysvar_shared(argv[1])) {
-		printf("ERR: %s is a sysvar-shared variable.\n"
-			"     Please use setvar/sysvar instead\n", argv[1]);
-		return 1;
+	if (argc >= 2) {
+		const char *name = get_sysvar_shared(argv[1]);
+		if (name) {
+			printf("ERR: %s is a sysvar-shared variable.\n"
+				"     Please edit '%s' using setvar/sysvar "
+				"instead\n",
+				argv[1],
+				name);
+			return 1;
+		}
 	}
 
 	return _do_setenv (flag, argc, argv);
diff --git a/common/cmd_sysvar.c b/common/cmd_sysvar.c
index c454649..b377b20 100644
--- a/common/cmd_sysvar.c
+++ b/common/cmd_sysvar.c
@@ -401,15 +401,28 @@
   return SYSVAR_SUCCESS;
 }
 
-int is_sysvar_shared(const char *var) {
+/*
+ * get_sysvar_shared - Determines if there's a mapping from sysvar -> uboot or
+ * vice versa.
+ *
+ * If there is a mapping:
+ *   If given a sysvar name, returns the uboot env name that the sysvar name
+ *   maps to.  If given a uboot env name, returns the sysvar name that it maps
+ *   to.
+ *
+ * If there is no mapping, returns NULL.
+ */
+const char *get_sysvar_shared(const char *var) {
   int i;
   for (i = 0; i < ARRAY_SIZE(su_mappings); ++i) {
-    if (strcmp(var, su_mappings[i].uboot_name) == 0 ||
-        strcmp(var, su_mappings[i].sysvar_name) == 0) {
-      return true;
+    if (strcmp(var, su_mappings[i].uboot_name) == 0) {
+      return su_mappings[i].sysvar_name;
+    }
+    if (strcmp(var, su_mappings[i].sysvar_name) == 0) {
+      return su_mappings[i].uboot_name;
     }
   }
-  return false;
+  return NULL;
 }
 
 const char *get_uboot_name(const char *sysvar_name) {
@@ -429,6 +442,7 @@
 void set_sysvar_uboot(const char *var, const char *value) {
   char *uboot_name = get_uboot_name(var);
   if (uboot_name) {
+    printf(">>> mapping SV:'%s' to UB:'%s' . . .\n", var, uboot_name);
     setenv(uboot_name, value);
   }
 }
diff --git a/include/common.h b/include/common.h
index 4a43e59..9865222 100755
--- a/include/common.h
+++ b/include/common.h
@@ -219,7 +219,7 @@
 #define MAC_ADDR1_SV "MAC_ADDR1"
 #define MAC_ADDR1_UB "ethaddr"
 int sysvar_init(void);
-int is_sysvar_shared(const char *var);
+const char *get_sysvar_shared(const char *var);
 const char *get_uboot_name(const char *sysvar_name);
 void sysvar_uboot_env_clear(void);
 void sysvar_uboot_env_load(void);
diff --git a/include/configs/board953x.h b/include/configs/board953x.h
index dc94ede..1b81b53 100755
--- a/include/configs/board953x.h
+++ b/include/configs/board953x.h
@@ -417,8 +417,8 @@
 
 #define CONFIG_COMMANDS			(ATH_CFG_COMMANDS | ATH_EXTRA_CMD)
 
-#define CONFIG_IPADDR			192.168.1.1
-#define CONFIG_SERVERIP			192.168.1.10
+#define CONFIG_IPADDR			192.168.1.2
+#define CONFIG_SERVERIP			192.168.1.1
 #define CONFIG_ETHADDR			0x00:0xaa:0xbb:0xcc:0xdd:0xee
 #define CFG_FAULT_ECHO_LINK_DOWN	1
 
