summaryrefslogtreecommitdiff
path: root/.github/workflows/run-tests.yml
diff options
context:
space:
mode:
authorVladislav Grishenko <themiron@mail.ru>2026-07-30 15:48:55 +0500
committerVladislav Grishenko <themiron@mail.ru>2026-08-03 01:06:01 +0500
commitf2606293c1007aa68a8bcf1e92ae3d64e250eadb (patch)
treea804a66f12bf586f3724d959b40dab40e0862244 /.github/workflows/run-tests.yml
parent332daf3705c8f6ec2e04e041261f86ba7b8650a6 (diff)
downloadaccel-ppp-sstp-ppposeq.tar.gz
accel-ppp-sstp-ppposeq.zip
sstp: add ppposeq transport to avoid userspace HDLC framingsstp-ppposeq
A pty is a byte stream, so the tty flip buffer merges frames written back to back and sstp has to re-delimit them with async HDLC escaping and a CRC-16 FCS. On a 1452-byte payload that is ~3600 ns per frame, most of it spent on the FCS. PPPOSEQ is a pppox protocol whose socket is the ppp endpoint itself, so one datagram is one frame and no framing is needed at all. The same payload takes ~380 ns per frame, about 9 times less. Requires kernel 2.6.37, the first with PX_MAX_PROTO 3, whose remaining slot it claims. Supported kernels are from 2.6.37 to 7.2. The new ppp-mode option selects the transport; auto, the default, falls back to async when the module is unavailable, so hosts with prebuilt kernels are unaffected. PPP_SYNC is removed, being disabled and unfixable over a pty: frame boundaries cannot be recovered from the stream, and coalescing cannot be prevented since frames arrive from the network stack.
Diffstat (limited to '.github/workflows/run-tests.yml')
-rw-r--r--.github/workflows/run-tests.yml32
1 files changed, 26 insertions, 6 deletions
diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
index 71b3820b..9cd47a00 100644
--- a/.github/workflows/run-tests.yml
+++ b/.github/workflows/run-tests.yml
@@ -127,7 +127,8 @@ jobs:
run: >
ssh -i ssh-key -p2222 user@localhost "cd accel-ppp &&
mkdir build && cd build &&
- cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DCMAKE_INSTALL_PREFIX=/usr
+ cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DBUILD_PPPOSEQ_DRIVER=TRUE
+ -DCMAKE_INSTALL_PREFIX=/usr
-DKDIR=/usr/src/linux-headers-\`uname -r\`
-DLUA=TRUE -DSHAPER=TRUE -DRADIUS=TRUE .. &&
make && sudo make install"
@@ -167,6 +168,12 @@ jobs:
sudo insmod build/drivers/vlan_mon/driver/vlan_mon.ko &&
lsmod | grep vlan_mon"
+ - name: Insert ppposeq kernel module
+ run: >
+ ssh -i ssh-key -p2222 user@localhost "cd accel-ppp &&
+ sudo modprobe pppox && sudo insmod build/drivers/ppposeq/driver/ppposeq.ko &&
+ lsmod | grep ppposeq"
+
- name: Run tests (all)
timeout-minutes: 5
run: >
@@ -265,7 +272,8 @@ jobs:
run: >
ssh -i ssh-key -p2222 alpine@localhost "cd accel-ppp &&
mkdir build && cd build &&
- cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DCMAKE_INSTALL_PREFIX=/usr
+ cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DBUILD_PPPOSEQ_DRIVER=TRUE
+ -DCMAKE_INSTALL_PREFIX=/usr
-DKDIR=/usr/src/linux-headers-\`uname -r\`
-DLUA=TRUE -DSHAPER=TRUE -DRADIUS=TRUE .. &&
make && doas make install"
@@ -305,6 +313,12 @@ jobs:
doas insmod build/drivers/vlan_mon/driver/vlan_mon.ko &&
lsmod | grep vlan_mon"
+ - name: Insert ppposeq kernel module
+ run: >
+ ssh -i ssh-key -p2222 alpine@localhost "cd accel-ppp &&
+ doas modprobe pppox && doas insmod build/drivers/ppposeq/driver/ppposeq.ko &&
+ lsmod | grep ppposeq"
+
- name: Run tests (all)
timeout-minutes: 5
run: >
@@ -360,7 +374,8 @@ jobs:
- name: cmake
working-directory: ./build
run: >
- cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DCMAKE_INSTALL_PREFIX=/usr
+ cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DBUILD_PPPOSEQ_DRIVER=TRUE
+ -DCMAKE_INSTALL_PREFIX=/usr
-DKDIR=/usr/src/linux-headers-`uname -r`
-DLUA=TRUE -DSHAPER=TRUE -DRADIUS=TRUE ..
@@ -368,13 +383,15 @@ jobs:
working-directory: ./build
run: make && sudo make install
- - name: Insert and check kernel modules (ipoe and vlan-mon)
+ - name: Insert and check kernel modules (ipoe, vlan-mon, ppposeq)
# if: ${{ false }}
run: |
sudo insmod build/drivers/vlan_mon/driver/vlan_mon.ko
sudo insmod build/drivers/ipoe/driver/ipoe.ko
+ sudo modprobe pppox && sudo insmod build/drivers/ppposeq/driver/ppposeq.ko
lsmod | grep ipoe
lsmod | grep vlan_mon
+ lsmod | grep ppposeq
- name: Run tests
timeout-minutes: 5
@@ -424,7 +441,8 @@ jobs:
- name: cmake (with coverage)
working-directory: ./build
run: >
- cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DCMAKE_INSTALL_PREFIX=/usr
+ cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DBUILD_PPPOSEQ_DRIVER=TRUE
+ -DCMAKE_INSTALL_PREFIX=/usr
-DKDIR=/usr/src/linux-headers-`uname -r`
-DLUA=TRUE -DSHAPER=TRUE -DRADIUS=TRUE
-DCMAKE_C_FLAGS="--coverage -O0" ..
@@ -433,13 +451,15 @@ jobs:
working-directory: ./build
run: make && sudo make install
- - name: Insert and check kernel modules (ipoe and vlan-mon)
+ - name: Insert and check kernel modules (ipoe, vlan-mon, ppposeq)
# if: ${{ false }}
run: |
sudo insmod build/drivers/vlan_mon/driver/vlan_mon.ko
sudo insmod build/drivers/ipoe/driver/ipoe.ko
+ sudo modprobe pppox && sudo insmod build/drivers/ppposeq/driver/ppposeq.ko
lsmod | grep ipoe
lsmod | grep vlan_mon
+ lsmod | grep ppposeq
- name: Run tests (for coverage report) (fail is ok)
timeout-minutes: 5