laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-bts/+/27407 )

Change subject: osmo-bts-trx: make use of OSMO_UNLIKELY() when handling TRXD 
PDUs
......................................................................

osmo-bts-trx: make use of OSMO_UNLIKELY() when handling TRXD PDUs

Given how often we send and receive TRXD PDUs, I believe it maks
sense to use OSMO_UNLIKELY() in the error checking conditions.
Theoretically this should improve performance.

Change-Id: I9266aaf2bbc0acfe21e9bfb12c9f38621d120553
---
M src/osmo-bts-trx/trx_if.c
1 file changed, 12 insertions(+), 12 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved



diff --git a/src/osmo-bts-trx/trx_if.c b/src/osmo-bts-trx/trx_if.c
index 9232e64..bff10d7 100644
--- a/src/osmo-bts-trx/trx_if.c
+++ b/src/osmo-bts-trx/trx_if.c
@@ -862,7 +862,7 @@

        /* MTS (Modulation and Training Sequence) */
        rc = trx_data_parse_mts(phy_inst, bi, buf[0]);
-       if (rc < 0)
+       if (OSMO_UNLIKELY(rc < 0))
                return rc;

        /* C/I: Carrier-to-Interference ratio (in centiBels) */
@@ -893,7 +893,7 @@

        /* MTS (Modulation and Training Sequence) */
        rc = trx_data_parse_mts(phy_inst, bi, buf[2]);
-       if (rc < 0)
+       if (OSMO_UNLIKELY(rc < 0))
                return rc;

        bi->rssi = -(int8_t)buf[3];
@@ -903,7 +903,7 @@

        /* TDMA frame number is absent in batched PDUs */
        if (bi->_num_pdus == 0) {
-               if (buf_len < sizeof(bi->fn) + TRX_UL_V2HDR_LEN) {
+               if (OSMO_UNLIKELY(buf_len < sizeof(bi->fn) + TRX_UL_V2HDR_LEN)) 
{
                        LOGPPHI(phy_inst, DTRX, LOGL_ERROR,
                                "Rx malformed TRXDv2 PDU: not enough bytes "
                                "to parse TDMA frame number\n");
@@ -936,7 +936,7 @@
        };

        bi->burst_len = bl[bi->mod];
-       if (buf_len < bi->burst_len)
+       if (OSMO_UNLIKELY(buf_len < bi->burst_len))
                return -EINVAL;

        /* Convert unsigned soft-bits [254..0] to soft-bits [-127..127] */
@@ -1009,7 +1009,7 @@
        uint8_t pdu_ver;

        buf_len = recv(ofd->fd, trx_data_buf, sizeof(trx_data_buf), 0);
-       if (buf_len <= 0) {
+       if (OSMO_UNLIKELY(buf_len <= 0)) {
                strerror_r(errno, (char *) trx_data_buf, sizeof(trx_data_buf));
                LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,
                        "recv() failed on TRXD with rc=%zd (%s)\n",
@@ -1021,7 +1021,7 @@
        pdu_ver = buf[0] >> 4;

        /* Make sure that PDU version matches our expectations */
-       if (pdu_ver != l1h->config.trxd_pdu_ver_use) {
+       if (OSMO_UNLIKELY(pdu_ver != l1h->config.trxd_pdu_ver_use)) {
                LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,
                        "Rx TRXD PDU with unexpected version %u (expected 
%u)\n",
                        pdu_ver, l1h->config.trxd_pdu_ver_use);
@@ -1037,7 +1037,7 @@
                bi.flags = 0x00;

                /* Make sure that we have enough bytes to parse the header */
-               if (buf_len < trx_data_rx_hdr_len[pdu_ver]) {
+               if (OSMO_UNLIKELY(buf_len < trx_data_rx_hdr_len[pdu_ver])) {
                        LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,
                                "Rx malformed TRXDv%u PDU: len=%zd < expected 
%u\n",
                                pdu_ver, buf_len, trx_data_rx_hdr_len[pdu_ver]);
@@ -1061,10 +1061,10 @@
                }

                /* Header parsing error */
-               if (hdr_len < 0)
+               if (OSMO_UNLIKELY(hdr_len < 0))
                        return hdr_len;

-               if (bi.fn >= GSM_TDMA_HYPERFRAME) {
+               if (OSMO_UNLIKELY(bi.fn >= GSM_TDMA_HYPERFRAME)) {
                        LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,
                                "Rx malformed TRXDv%u PDU: illegal TDMA 
fn=%u\n",
                                pdu_ver, bi.fn);
@@ -1076,7 +1076,7 @@
                buf += hdr_len;

                /* Calculate burst length and parse it (if present) */
-               if (trx_data_handle_burst(&bi, buf, buf_len) != 0) {
+               if (OSMO_UNLIKELY(trx_data_handle_burst(&bi, buf, buf_len) != 
0)) {
                        LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,
                                "Rx malformed TRXDv%u PDU: odd burst 
length=%zd\n",
                                pdu_ver, buf_len);
@@ -1117,7 +1117,7 @@
        ssize_t snd_len, buf_len;

        /* Make sure that the PHY is powered on */
-       if (!trx_if_powered(l1h)) {
+       if (OSMO_UNLIKELY(!trx_if_powered(l1h))) {
                LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,
                        "Ignoring Tx data, transceiver is powered off\n");
                return -ENODEV;
@@ -1190,7 +1190,7 @@
        pdu_num = 0;

        snd_len = send(l1h->trx_ofd_data.fd, trx_data_buf, buf_len, 0);
-       if (snd_len <= 0) {
+       if (OSMO_UNLIKELY(snd_len <= 0)) {
                strerror_r(errno, (char *) trx_data_buf, sizeof(trx_data_buf));
                LOGPPHI(l1h->phy_inst, DTRX, LOGL_ERROR,
                        "send() failed on TRXD with rc=%zd (%s)\n",

--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/27407
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I9266aaf2bbc0acfe21e9bfb12c9f38621d120553
Gerrit-Change-Number: 27407
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to