<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-e1d/+/19346">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">make RAW read buffer size configurable (instead of hard-coded 160)<br><br>When opening a timeslot, the client can now specify the (from<br>application perspective) timeslot read buffer size.  This breaks<br>ABI, but then we're still at a point where only prototype hardware<br>exists, so we can get away with it.<br><br>Change-Id: I6d603778cce14c5d72fe5f54904905ea7e66d7ff<br>---<br>M include/osmocom/e1d/proto.h<br>M include/osmocom/e1d/proto_clnt.h<br>M src/ctl.c<br>M src/e1d-ts-pipe.c<br>M src/proto_clnt.c<br>5 files changed, 19 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-e1d refs/changes/46/19346/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/e1d/proto.h b/include/osmocom/e1d/proto.h</span><br><span>index d8bce1f..304db94 100644</span><br><span>--- a/include/osmocom/e1d/proto.h</span><br><span>+++ b/include/osmocom/e1d/proto.h</span><br><span>@@ -116,6 +116,7 @@</span><br><span> </span><br><span> struct osmo_e1dp_ts_config {</span><br><span>    uint8_t mode;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint16_t read_bufsize;</span><br><span> } __attribute__((packed));</span><br><span> </span><br><span> struct osmo_e1dp_ts_info {</span><br><span>diff --git a/include/osmocom/e1d/proto_clnt.h b/include/osmocom/e1d/proto_clnt.h</span><br><span>index ff2cebf..5a4f965 100644</span><br><span>--- a/include/osmocom/e1d/proto_clnt.h</span><br><span>+++ b/include/osmocom/e1d/proto_clnt.h</span><br><span>@@ -45,4 +45,4 @@</span><br><span>      uint8_t intf, uint8_t line, enum osmo_e1dp_line_mode mode);</span><br><span> int osmo_e1dp_client_ts_open(struct osmo_e1dp_client *clnt,</span><br><span>   uint8_t intf, uint8_t line, uint8_t ts,</span><br><span style="color: hsl(0, 100%, 40%);">- enum osmo_e1dp_ts_mode mode);</span><br><span style="color: hsl(120, 100%, 40%);">+ enum osmo_e1dp_ts_mode mode, uint16_t read_bufsize);</span><br><span>diff --git a/src/ctl.c b/src/ctl.c</span><br><span>index d62195a..fee96f8 100644</span><br><span>--- a/src/ctl.c</span><br><span>+++ b/src/ctl.c</span><br><span>@@ -138,7 +138,7 @@</span><br><span> }</span><br><span> </span><br><span> static int</span><br><span style="color: hsl(0, 100%, 40%);">-_e1d_ts_start(struct e1_ts *ts, enum e1_ts_mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+_e1d_ts_start(struct e1_ts *ts, enum e1_ts_mode mode, uint16_t bufsize)</span><br><span> {</span><br><span>        int ret, sd[2];</span><br><span>      int sock_type;</span><br><span>@@ -151,7 +151,7 @@</span><br><span>                 break;</span><br><span>       case E1_TS_MODE_RAW:</span><br><span>                 sock_type = SOCK_STREAM;</span><br><span style="color: hsl(0, 100%, 40%);">-                _e1d_ts_raw_buf_realloc(ts, 160); /* TODO: make configurable */</span><br><span style="color: hsl(120, 100%, 40%);">+               _e1d_ts_raw_buf_realloc(ts, bufsize);</span><br><span>                break;</span><br><span>       default:</span><br><span>             return -EINVAL;</span><br><span>@@ -383,11 +383,14 @@</span><br><span>              return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ if (cfg->read_bufsize == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* If already open, close previous */</span><br><span>        e1_ts_stop(ts);</span><br><span> </span><br><span>  /* Init */</span><br><span style="color: hsl(0, 100%, 40%);">-      ret = _e1d_ts_start(ts, mode);</span><br><span style="color: hsl(120, 100%, 40%);">+        ret = _e1d_ts_start(ts, mode, cfg->read_bufsize);</span><br><span>         if (ret < 0)</span><br><span>              return ret;</span><br><span> </span><br><span>diff --git a/src/e1d-ts-pipe.c b/src/e1d-ts-pipe.c</span><br><span>index 6d3ec80..bae45de 100644</span><br><span>--- a/src/e1d-ts-pipe.c</span><br><span>+++ b/src/e1d-ts-pipe.c</span><br><span>@@ -44,9 +44,9 @@</span><br><span> </span><br><span> </span><br><span> static int ts_open(uint8_t intf_nr, uint8_t line_nr, uint8_t ts_nr,</span><br><span style="color: hsl(0, 100%, 40%);">-                enum osmo_e1dp_ts_mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+                  enum osmo_e1dp_ts_mode mode, uint16_t bufsize)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  int  rc = osmo_e1dp_client_ts_open(g_client, intf_nr, line_nr, ts_nr, mode);</span><br><span style="color: hsl(120, 100%, 40%);">+  int  rc = osmo_e1dp_client_ts_open(g_client, intf_nr, line_nr, ts_nr, mode, bufsize);</span><br><span>        if (rc < 0)</span><br><span>               fprintf(stderr, "Cannot open e1d timeslot %u:%u:%u\n", intf_nr, line_nr, ts_nr);</span><br><span>   return rc;</span><br><span>@@ -122,6 +122,7 @@</span><br><span>     int intf_nr = -1, line_nr = -1, ts_nr = -1;</span><br><span>  enum osmo_e1dp_ts_mode mode = E1DP_TSMODE_RAW;</span><br><span>       char *path = E1DP_DEFAULT_SOCKET;</span><br><span style="color: hsl(120, 100%, 40%);">+     int bufsize = 160;</span><br><span>   int tsfd;</span><br><span>    int option_index, rc;</span><br><span> </span><br><span>@@ -141,10 +142,11 @@</span><br><span>                    { "timeslot", 1, 0, 't' },</span><br><span>                         { "mode", 1, 0, 'm' },</span><br><span>                     { "read", 1, 0, 'r' },</span><br><span style="color: hsl(120, 100%, 40%);">+                      { "read-bufsize", 1, 0, 'b' },</span><br><span>                     { 0,0,0,0 }</span><br><span>          };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-          c = getopt_long(argc, argv, "hp:i:l:t:m:r:", long_options, &option_index);</span><br><span style="color: hsl(120, 100%, 40%);">+              c = getopt_long(argc, argv, "hp:i:l:t:m:r:b:", long_options, &option_index);</span><br><span>           if (c == -1)</span><br><span>                         break;</span><br><span> </span><br><span>@@ -180,6 +182,9 @@</span><br><span>                     }</span><br><span>                    infd = rc;</span><br><span>                   break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case 'b':</span><br><span style="color: hsl(120, 100%, 40%);">+                     bufsize = atoi(optarg);</span><br><span style="color: hsl(120, 100%, 40%);">+                       break;</span><br><span>               }</span><br><span>    }</span><br><span> </span><br><span>@@ -194,7 +199,7 @@</span><br><span>          exit(1);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   tsfd = ts_open(intf_nr, line_nr, ts_nr, mode);</span><br><span style="color: hsl(120, 100%, 40%);">+        tsfd = ts_open(intf_nr, line_nr, ts_nr, mode, bufsize);</span><br><span>      if (tsfd < 0)</span><br><span>             exit(2);</span><br><span> </span><br><span>diff --git a/src/proto_clnt.c b/src/proto_clnt.c</span><br><span>index ca62abe..69c7234 100644</span><br><span>--- a/src/proto_clnt.c</span><br><span>+++ b/src/proto_clnt.c</span><br><span>@@ -318,7 +318,7 @@</span><br><span> int</span><br><span> osmo_e1dp_client_ts_open(struct osmo_e1dp_client *clnt,</span><br><span>    uint8_t intf, uint8_t line, uint8_t ts,</span><br><span style="color: hsl(0, 100%, 40%);">- enum osmo_e1dp_ts_mode mode)</span><br><span style="color: hsl(120, 100%, 40%);">+  enum osmo_e1dp_ts_mode mode, uint16_t read_bufsize)</span><br><span> {</span><br><span>     struct msgb *msgb;</span><br><span>   struct osmo_e1dp_msg_hdr hdr;</span><br><span>@@ -333,6 +333,7 @@</span><br><span> </span><br><span>      memset(&cfg, 0x00, sizeof(struct osmo_e1dp_ts_config));</span><br><span>  cfg.mode = mode;</span><br><span style="color: hsl(120, 100%, 40%);">+      cfg.read_bufsize = read_bufsize;</span><br><span> </span><br><span>         tsfd = -1;</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-e1d/+/19346">change 19346</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-e1d/+/19346"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-e1d </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I6d603778cce14c5d72fe5f54904905ea7e66d7ff </div>
<div style="display:none"> Gerrit-Change-Number: 19346 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>