Discussion:
[OpenWrt-Devel] [PATCH v2 1/5] ltq-vdsl-app: use the final xtse format
Mathias Kresin
2015-12-30 20:59:22 UTC
Permalink
This way we can drop the call to sed.

Signed-off-by: Mathias Kresin <***@kresin.me>
---
package/network/config/ltq-vdsl-app/files/dsl_control | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control
index f875e3d..cc65daa 100644
--- a/package/network/config/ltq-vdsl-app/files/dsl_control
+++ b/package/network/config/ltq-vdsl-app/files/dsl_control
@@ -14,13 +14,13 @@ EXTRA_HELP=" status Get DSL status information
# G.992.1 Annex A
# G.992.3 Annex A / L-US1 / L_US-2 / M
# G.992.5 Annex A / M
-xtse_adsl_a="04 00 04 00 4C 01 04 00"
+xtse_adsl_a="04_00_04_00_4C_01_04_00"

# G.992.1 Annex B
# G.992.3 Annex B
# G.992.5 Annex B
# G.993.2 Annex A/B/C
-xtse_adsl_b="10 00 10 00 00 04 00 00"
+xtse_adsl_b="10_00_10_00_00_04_00_00"

# G.992.1 Annex B
# G.992.3 Annex B
@@ -28,9 +28,9 @@ xtse_adsl_b="10 00 10 00 00 04 00 00"
# G.992.5 Annex B
# G.992.5 Annex J
# G.993.2 Annex A/B/C
-xtse_adsl_j="10 00 10 40 00 04 01 00"
+xtse_adsl_j="10_00_10_40_00_04_01_00"

-xtse_vdsl="00 00 00 00 00 00 00 07"
+xtse_vdsl="00_00_00_00_00_00_00_07"

service_triggers() {
procd_add_reload_trigger network
@@ -78,7 +78,7 @@ start_service() {

procd_open_instance
procd_set_param command /sbin/vdsl_cpe_control_wrapper \
- -i`echo $xtse | sed "s/ /_/g"` \
+ -i$xtse \
-n /sbin/dsl_notify.sh \
-f ${firmware} \
-M ${mode}
--
1.9.1
Mathias Kresin
2015-12-30 20:59:23 UTC
Permalink
This patch adds the missing VDSL2 bits to the annex specific XTSE (like
it should be according to the comments above the XTSE bits).

Since r47933 it's mandatory to remove the annex option to switch to
VDSL2 (only) operation mode.

As shown by ticket #21436 and a few mails I received personally, even
experienced users are not aware that they have to remove the annex
option to get their VDSL2 line working and as shown by this patch it
doesn't need to be that "complicated".

Signed-off-by: Mathias Kresin <***@kresin.me>
---
package/network/config/ltq-vdsl-app/files/dsl_control | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control
index cc65daa..22d775c 100644
--- a/package/network/config/ltq-vdsl-app/files/dsl_control
+++ b/package/network/config/ltq-vdsl-app/files/dsl_control
@@ -11,16 +11,20 @@ EXTRA_HELP=" status Get DSL status information

[ -f /lib/functions/lantiq_dsl.sh ] && . /lib/functions/lantiq_dsl.sh

+#
+# ITU-T G.997.1 (06/2012) - Section 7.3.1.1.1 (xTU transmission system enabling (XTSE))
+#
# G.992.1 Annex A
# G.992.3 Annex A / L-US1 / L_US-2 / M
# G.992.5 Annex A / M
-xtse_adsl_a="04_00_04_00_4C_01_04_00"
+# G.993.2 Annex A/B/C
+xtse_xdsl_a="04_00_04_00_4C_01_04_07"

# G.992.1 Annex B
# G.992.3 Annex B
# G.992.5 Annex B
# G.993.2 Annex A/B/C
-xtse_adsl_b="10_00_10_00_00_04_00_00"
+xtse_adsl_b="10_00_10_00_00_04_00_07"

# G.992.1 Annex B
# G.992.3 Annex B
@@ -28,7 +32,7 @@ xtse_adsl_b="10_00_10_00_00_04_00_00"
# G.992.5 Annex B
# G.992.5 Annex J
# G.993.2 Annex A/B/C
-xtse_adsl_j="10_00_10_40_00_04_01_00"
+xtse_adsl_j="10_00_10_40_00_04_01_07"

xtse_vdsl="00_00_00_00_00_00_00_07"

@@ -40,7 +44,6 @@ start_service() {
local annex
local firmware
local xtse
- local xtse_adsl
local mode

config_load network
@@ -63,12 +66,8 @@ start_service() {
;;
esac

- eval "xtse_adsl=\"\${xtse_adsl_$annex}\""
- if [ "${xtse_adsl}" ]; then
- xtse=$xtse_adsl
- else
- xtse=$xtse_vdsl
- fi
+ eval "xtse=\"\${xtse_xdsl_$annex}\""
+ [ -z "${xtse}" ] && xtse=$xtse_vdsl

[ -z "${firmware}" ] && firmware=/lib/firmware/vdsl.bin
[ -f "${firmware}" ] || {
--
1.9.1
Mathias Kresin
2015-12-30 20:59:24 UTC
Permalink
r47933 revealed that the driver/app in combination with the chosen
firmware does a good job in selecting a working xtse.

Use this probing mode if no annex is specified.

Signed-off-by: Mathias Kresin <***@kresin.me>

---

Since a predefined annex isn't required, what about using 'auto' when
creating the initial config?

Any opinions?

package/network/config/ltq-vdsl-app/files/dsl_control | 3 ---
1 file changed, 3 deletions(-)

diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control
index 22d775c..f6275a0 100644
--- a/package/network/config/ltq-vdsl-app/files/dsl_control
+++ b/package/network/config/ltq-vdsl-app/files/dsl_control
@@ -34,8 +34,6 @@ xtse_adsl_b="10_00_10_00_00_04_00_07"
# G.993.2 Annex A/B/C
xtse_adsl_j="10_00_10_40_00_04_01_07"

-xtse_vdsl="00_00_00_00_00_00_00_07"
-
service_triggers() {
procd_add_reload_trigger network
}
@@ -67,7 +65,6 @@ start_service() {
esac

eval "xtse=\"\${xtse_xdsl_$annex}\""
- [ -z "${xtse}" ] && xtse=$xtse_vdsl

[ -z "${firmware}" ] && firmware=/lib/firmware/vdsl.bin
[ -f "${firmware}" ] || {
--
1.9.1
Mathias Kresin
2015-12-30 20:59:25 UTC
Permalink
According to ITU-T G.997.1 Amendment 2 (04/2013) section 2.1, bit 3 of
XTSE octet 8 either allow or denies the initialization of G.993.5.

Even if the current redistributable xDSL firmware doesn't include
G.993.5 vectoring support, enable this bit by default to allow people to
get their G.993.5 line working using a custom xDSL firmware.

Signed-off-by: Mathias Kresin <***@kresin.me>
---
package/network/config/ltq-vdsl-app/files/dsl_control | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control
index f6275a0..fe098d7 100644
--- a/package/network/config/ltq-vdsl-app/files/dsl_control
+++ b/package/network/config/ltq-vdsl-app/files/dsl_control
@@ -13,18 +13,21 @@ EXTRA_HELP=" status Get DSL status information

#
# ITU-T G.997.1 (06/2012) - Section 7.3.1.1.1 (xTU transmission system enabling (XTSE))
+# ITU-T G.997.1 Amendment 2 (04/2013) - Section 2.1 - (Vectoring mode enable (VECTORMODE_ENABLE))
#
# G.992.1 Annex A
# G.992.3 Annex A / L-US1 / L_US-2 / M
# G.992.5 Annex A / M
# G.993.2 Annex A/B/C
-xtse_xdsl_a="04_00_04_00_4C_01_04_07"
+# G.993.5 Annex A/B/C
+xtse_xdsl_a="04_00_04_00_4C_01_04_0F"

# G.992.1 Annex B
# G.992.3 Annex B
# G.992.5 Annex B
# G.993.2 Annex A/B/C
-xtse_adsl_b="10_00_10_00_00_04_00_07"
+# G.993.5 Annex A/B/C
+xtse_xdsl_b="10_00_10_00_00_04_00_0F"

# G.992.1 Annex B
# G.992.3 Annex B
@@ -32,7 +35,8 @@ xtse_adsl_b="10_00_10_00_00_04_00_07"
# G.992.5 Annex B
# G.992.5 Annex J
# G.993.2 Annex A/B/C
-xtse_adsl_j="10_00_10_40_00_04_01_07"
+# G.993.5 Annex A/B/C
+xtse_xdsl_j="10_00_10_40_00_04_01_0F"

service_triggers() {
procd_add_reload_trigger network
--
1.9.1
John Crispin
2015-12-31 09:01:24 UTC
Permalink
Post by Mathias Kresin
According to ITU-T G.997.1 Amendment 2 (04/2013) section 2.1, bit 3 of
XTSE octet 8 either allow or denies the initialization of G.993.5.
Even if the current redistributable xDSL firmware doesn't include
G.993.5 vectoring support, enable this bit by default to allow people to
get their G.993.5 line working using a custom xDSL firmware.
Is this the only change required to get vectoring working or do we need
to do anything else ?
Post by Mathias Kresin
---
package/network/config/ltq-vdsl-app/files/dsl_control | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control
index f6275a0..fe098d7 100644
--- a/package/network/config/ltq-vdsl-app/files/dsl_control
+++ b/package/network/config/ltq-vdsl-app/files/dsl_control
@@ -13,18 +13,21 @@ EXTRA_HELP=" status Get DSL status information
#
# ITU-T G.997.1 (06/2012) - Section 7.3.1.1.1 (xTU transmission system enabling (XTSE))
+# ITU-T G.997.1 Amendment 2 (04/2013) - Section 2.1 - (Vectoring mode enable (VECTORMODE_ENABLE))
#
# G.992.1 Annex A
# G.992.3 Annex A / L-US1 / L_US-2 / M
# G.992.5 Annex A / M
# G.993.2 Annex A/B/C
-xtse_xdsl_a="04_00_04_00_4C_01_04_07"
+# G.993.5 Annex A/B/C
+xtse_xdsl_a="04_00_04_00_4C_01_04_0F"
# G.992.1 Annex B
# G.992.3 Annex B
# G.992.5 Annex B
# G.993.2 Annex A/B/C
-xtse_adsl_b="10_00_10_00_00_04_00_07"
+# G.993.5 Annex A/B/C
+xtse_xdsl_b="10_00_10_00_00_04_00_0F"
# G.992.1 Annex B
# G.992.3 Annex B
@@ -32,7 +35,8 @@ xtse_adsl_b="10_00_10_00_00_04_00_07"
# G.992.5 Annex B
# G.992.5 Annex J
# G.993.2 Annex A/B/C
-xtse_adsl_j="10_00_10_40_00_04_01_07"
+# G.993.5 Annex A/B/C
+xtse_xdsl_j="10_00_10_40_00_04_01_0F"
service_triggers() {
procd_add_reload_trigger network
Mathias Kresin
2015-12-31 09:45:56 UTC
Permalink
Post by John Crispin
Post by Mathias Kresin
According to ITU-T G.997.1 Amendment 2 (04/2013) section 2.1, bit 3 of
XTSE octet 8 either allow or denies the initialization of G.993.5.
Even if the current redistributable xDSL firmware doesn't include
G.993.5 vectoring support, enable this bit by default to allow people to
get their G.993.5 line working using a custom xDSL firmware.
Is this the only change required to get vectoring working or do we need
to do anything else ?
It should be all. Since r47784, vectoring already works with the XTSE in
auto mode[1], using a vectoring capable firmware.

I can't say whether this change is really required. My vectoring test
user doesn't have access to his line till mid january.

According to the ITU spec the bit has to be set. But if I have a look at
XTSE from the status output that was send to me the last time[2], I get
the feeling that at least this particular provider doesn't use this bit.

Since the bit doesn't broke my none vectoring VDSL2 line, I decided to
set the bit to be conform to the specification.

Mathias

[1] http://paste.debian.net/hidden/04381d10/
[2] https://patchwork.ozlabs.org/patch/552876/

Mathias Kresin
2015-12-30 20:59:26 UTC
Permalink
Add back a slightly modified version of the lowlevel settings which
where removed with r46920.

In compare to the old lowlevel settings, the B43c tone is added to
tone_adsl_b and tone_adsl_bv.

If an unsupported tone value is used, the auto probing mode is used, in
compare to the fallback to tone_adsl_av and tone_vdsl_av with the old
lowlevel settings.

Signed-off-by: Mathias Kresin <***@kresin.me>

---

I've done some tests to see in which situations the tone setting is
required. In cases no tone is specified, the tone is used according to
the loaded firmware or set by the loaded firmware.

Using a device with the hybrid set to POTS (Annex A) on a Deutsche
Telekom VDSL2 line which requires the B43 tone, I made the following
observations:

annex setting firmware tone setting result
-------------------------------------------------------
annex a adsl-a.bin no tone no sync
annex a adsl-a.bin b sync
annex a adsl-b.bin no tone sync

no annex adsl-a.bin no tone no sync
no annex adsl-a.bin b sync
no annex adsl-b.bin no tone sync

I would vote for using 'auto' for the initial config here as well. I
would expect that people who are using an Annex A device in an Annex B
network know how to set the correct tone value.

.../network/config/ltq-vdsl-app/files/dsl_control | 88 ++++++++++++++++++++++
1 file changed, 88 insertions(+)

diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control
index fe098d7..4ddc1d7 100644
--- a/package/network/config/ltq-vdsl-app/files/dsl_control
+++ b/package/network/config/ltq-vdsl-app/files/dsl_control
@@ -38,6 +38,81 @@ xtse_xdsl_b="10_00_10_00_00_04_00_0F"
# G.993.5 Annex A/B/C
xtse_xdsl_j="10_00_10_40_00_04_01_0F"

+#
+# ITU-T G.994.1 (06/2012) - Table 2 (Mandatory carrier sets)
+#
+
+# A43
+tone_adsl_a="0x142" # A43C + J43 + A43
+tone_vdsl_a="0x142" # A43C + J43 + A43
+
+# A43 + V43
+tone_adsl_av="0x142" # A43C + J43 + A43
+tone_vdsl_av="0x146" # A43C + J43 + A43 + V43
+
+# B43
+tone_adsl_b="0x81" # B43 + B43c
+tone_vdsl_b="0x1" # B43
+
+# B43 + V43
+tone_adsl_bv="0x81" # B43 + B43c
+tone_vdsl_bv="0x5" # B43 + V43
+
+lowlevel_cfg() {
+ echo "# VRX Low Level Configuration File
+#
+# Parameters must be separated by tabs or spaces.
+# Empty lines and comments will be ignored.
+#
+
+# nFilter
+#
+# NA = -1
+# OFF = 0
+# ISDN = 1
+# POTS = 2
+# POTS_2 = 3
+# POTS_3 = 4
+#
+# (dec)
+ -1
+
+# nHsToneGroupMode nHsToneGroup_A nHsToneGroup_V nHsToneGroup_AV
+#
+# NA = -1 NA = -1 see see
+# AUTO = 0 VDSL2_B43 = 0x0001 nHsToneGroup_A nHsToneGroup_A
+# MANUAL = 1 VDSL2_A43 = 0x0002
+# VDSL2_V43 = 0x0004
+# VDSL1_V43P = 0x0008
+# VDSL1_V43I = 0x0010
+# ADSL1_C43 = 0x0020
+# ADSL2_J43 = 0x0040
+# ADSL2_B43C = 0x0080
+# ADSL2_A43C = 0x0100
+#
+# (dec) (hex) (hex) (hex)
+ 1 $1 $2 0x0
+
+# nBaseAddr nIrqNum
+#
+# (hex) (dec)
+ 0x1e116000 63
+
+# nUtopiaPhyAdr nUtopiaBusWidth nPosPhyParity
+# default(16b) = 0 NA = -1
+# 8-bit = 1 ODD = 0
+# 16-bit = 2
+#
+#
+# (hex) (dec) (dec)
+ 0xFF 0 0
+
+# bNtrEnable
+#
+# (dec)
+ 0" > /tmp/lowlevel.cfg
+}
+
service_triggers() {
procd_add_reload_trigger network
}
@@ -45,10 +120,15 @@ service_triggers() {
start_service() {
local annex
local firmware
+ local tone
+ local tone_adsl
+ local tone_vdsl
local xtse
local mode
+ local lowlevel

config_load network
+ config_get tone dsl tone
config_get annex dsl annex
config_get firmware dsl firmware
config_get xfer_mode dsl xfer_mode
@@ -76,11 +156,19 @@ start_service() {
return 1
}

+ eval "tone_adsl=\"\${tone_adsl_$tone}\""
+ eval "tone_vdsl=\"\${tone_vdsl_$tone}\""
+ [ -n "${tone_adsl}" ] && [ -n "${tone_vdsl}" ] && {
+ lowlevel_cfg "${tone_adsl}" "${tone_vdsl}"
+ lowlevel="-l /tmp/lowlevel.cfg"
+ }
+
procd_open_instance
procd_set_param command /sbin/vdsl_cpe_control_wrapper \
-i$xtse \
-n /sbin/dsl_notify.sh \
-f ${firmware} \
+ $lowlevel \
-M ${mode}
procd_append_param env "LOAD=$LOAD" "UNLOAD=$UNLOAD"
procd_close_instance
--
1.9.1
Loading...