kirr has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmocom-bb/+/40077?usp=email )
Change subject: trx_toolkit/data_if: Switch DATAInterface to be used via C-level API from
*.pyx
......................................................................
trx_toolkit/data_if: Switch DATAInterface to be used via C-level API from *.pyx
All those function to recv_tx_msg, recv_rx_msg, send_msg etc are on hot
data plane code paths. Switching them to C cuts related py overhead from
their invocations.
Change-Id: I163836040c794dfa4a757aa798e59f90bebcb2b9
---
M src/target/trx_toolkit/_fake_trx.pyx
M src/target/trx_toolkit/data_if.pxd
M src/target/trx_toolkit/data_if.pyx
M src/target/trx_toolkit/transceiver.pyx
4 files changed, 13 insertions(+), 7 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/77/40077/1
diff --git a/src/target/trx_toolkit/_fake_trx.pyx b/src/target/trx_toolkit/_fake_trx.pyx
index 5c55486..aa56afa 100644
--- a/src/target/trx_toolkit/_fake_trx.pyx
+++ b/src/target/trx_toolkit/_fake_trx.pyx
@@ -238,7 +238,7 @@
msg.rssi = RSSI_NOISE_DEFAULT
msg.ci = CI_NOISE_DEFAULT
- self.data_if.send_msg(msg)
+ self.data_if._send_msg(msg)
return
# Complete message header
diff --git a/src/target/trx_toolkit/data_if.pxd b/src/target/trx_toolkit/data_if.pxd
index 564a6cd..23dc49e 100644
--- a/src/target/trx_toolkit/data_if.pxd
+++ b/src/target/trx_toolkit/data_if.pxd
@@ -1,8 +1,13 @@
# cython: language_level=3
from udp_link cimport UDPLink
+from data_msg cimport Msg, TxMsg, RxMsg
cdef class DATAInterface(UDPLink):
cdef readonly int _hdr_ver
+ cdef bint match_hdr_ver(self, Msg msg)
cdef recv_raw_data(self)
+ cdef TxMsg recv_tx_msg(self) # -> TxMsg | None
+ cdef RxMsg recv_rx_msg(self) # -> RxMsg | None
+ cdef _send_msg(self, Msg msg, bint legacy=*)
diff --git a/src/target/trx_toolkit/data_if.pyx b/src/target/trx_toolkit/data_if.pyx
index d5e4910..c355666 100644
--- a/src/target/trx_toolkit/data_if.pyx
+++ b/src/target/trx_toolkit/data_if.pyx
@@ -20,7 +20,6 @@
import logging as log
-from data_msg import *
cdef class DATAInterface(UDPLink):
def __init__(self, *udp_link_args):
@@ -46,7 +45,7 @@
# No suitable version found
return -1
- def match_hdr_ver(self, msg):
+ cdef bint match_hdr_ver(self, Msg msg):
if msg.ver == self._hdr_ver:
return True
@@ -59,7 +58,7 @@
cdef recv_raw_data(self):
return self.recv(512)
- def recv_tx_msg(self):
+ cdef TxMsg recv_tx_msg(self): # -> TxMsg | None
# Read raw data from socket
data = self.recv_raw_data()
@@ -79,7 +78,7 @@
return msg
- def recv_rx_msg(self):
+ cdef RxMsg recv_rx_msg(self): # -> RxMsg | None
# Read raw data from socket
data = self.recv_raw_data()
@@ -99,7 +98,9 @@
return msg
- def send_msg(self, msg, legacy = False):
+ def send_msg(self, Msg msg, bint legacy = False):
+ self._send_msg(msg, legacy)
+ cdef _send_msg(self, Msg msg, bint legacy = False):
try:
# Validate and encode a TRXD message
payload = msg.gen_msg(legacy)
diff --git a/src/target/trx_toolkit/transceiver.pyx
b/src/target/trx_toolkit/transceiver.pyx
index e852eda..2e8a064 100644
--- a/src/target/trx_toolkit/transceiver.pyx
+++ b/src/target/trx_toolkit/transceiver.pyx
@@ -292,7 +292,7 @@
cdef send_data_msg(self, RxMsg msg):
# TODO: make legacy mode configurable (via argv?)
- self.data_if.send_msg(msg, legacy = True)
+ self.data_if._send_msg(msg, legacy = True)
cdef handle_data_msg(self, Transceiver src_trx, TxMsg src_msg, RxMsg msg):
self.send_data_msg(msg)
--
To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/40077?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: I163836040c794dfa4a757aa798e59f90bebcb2b9
Gerrit-Change-Number: 40077
Gerrit-PatchSet: 1
Gerrit-Owner: kirr <kirr(a)nexedi.com>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: osmith <osmith(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>