si: Make sure to not overwrite orig_arfcn_hi in the range encoding

Andreas highlighted that the doubel assignment is not needed and
wrong. Change the code to assign chan_list[0] before writing the
base frequency to the header. Update the testcase to make the highest
bit set and update the test result.
diff --git a/openbsc/src/libbsc/arfcn_range_encode.c b/openbsc/src/libbsc/arfcn_range_encode.c
index 02a75a5..c52743e 100644
--- a/openbsc/src/libbsc/arfcn_range_encode.c
+++ b/openbsc/src/libbsc/arfcn_range_encode.c
@@ -210,10 +210,10 @@
 int range_enc_range512(uint8_t *chan_list, int f0, int *w)
 {
 	struct gsm48_range_512 *range512;
+	chan_list[0] = 0x88;
 	write_orig_arfcn(chan_list, f0);
 
 	range512 = (struct gsm48_range_512 *) &chan_list[0];
-	range512->form_id = chan_list[0] = 0x44;
 
 	/* W(1) */
 	range512->w1_hi = HIGH_BITS(w, 1, 9, 7);
diff --git a/openbsc/tests/si/si_test.c b/openbsc/tests/si/si_test.c
index 16f6ea3..fd840f3 100644
--- a/openbsc/tests/si/si_test.c
+++ b/openbsc/tests/si/si_test.c
@@ -103,7 +103,7 @@
 			break;
 		}
 
-	rc = range_enc_range512(chan_list, 0x96, w);
+	rc = range_enc_range512(chan_list, (1 << 9) | 0x96, w);
 	VERIFY(rc, ==, 0);
 
 	printf("Range512: %s\n", osmo_hexdump(chan_list, ARRAY_SIZE(chan_list)));
diff --git a/openbsc/tests/si/si_test.ok b/openbsc/tests/si/si_test.ok
index 6c4b028..6a3ee51 100644
--- a/openbsc/tests/si/si_test.ok
+++ b/openbsc/tests/si/si_test.ok
@@ -17,4 +17,4 @@
 w[13]=64
 w[14]=70
 w[15]=9
-Range512: 88 4b 2a 95 65 95 55 2c a9 55 aa 55 6a 95 59 55 
+Range512: 89 4b 2a 95 65 95 55 2c a9 55 aa 55 6a 95 59 55