From: Davide Gerhard <rainbow@irh.it>
Date: Mon, 8 Feb 2021 07:09:11 +0000 (+0100)
Subject: setsockopt to prioritize the newtwork packets
X-Git-Url: https://git.rkrishnan.org/specifications/vdrive/(%5B%5E?a=commitdiff_plain;h=ef0db7d6643a4702c4e7058a42c6e4e73d175b87;p=pihpsdr.git

setsockopt to prioritize the newtwork packets
---

diff --git a/new_protocol.c b/new_protocol.c
index 64cabfe..55695e8 100644
--- a/new_protocol.c
+++ b/new_protocol.c
@@ -594,6 +594,17 @@ void new_protocol_init(int pixels) {
     int optval = 1;
     setsockopt(data_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
     setsockopt(data_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
+#ifdef __APPLE__
+    optval = 0x10;  // IPTOS_LOWDELAY
+    if(setsockopt(data_socket, IPPROTO_IP, IP_TOS, &optval, sizeof(optval))<0) {
+      perror("data_socket: SO_PRIORITY");
+    }
+#else
+    optval = 6;
+    if(setsockopt(data_socket, SOL_SOCKET, SO_PRIORITY, &optval, sizeof(optval))<0) {
+      perror("data_socket: SO_PRIORITY");
+    }
+#endif
 
     // bind to the interface
     if(bind(data_socket,(struct sockaddr*)&radio->info.network.interface_address,radio->info.network.interface_length)<0) {
diff --git a/old_protocol.c b/old_protocol.c
index ee1cc0f..99f0a3c 100644
--- a/old_protocol.c
+++ b/old_protocol.c
@@ -439,6 +439,17 @@ static void open_udp_socket() {
     if (setsockopt(tmp, SOL_SOCKET, SO_RCVBUF, &optval, sizeof(optval))<0) {
       perror("data_socket: SO_RCVBUF");
     }
+#ifdef __APPLE__
+    optval = 0x10;  // IPTOS_LOWDELAY
+    if(setsockopt(tmp, IPPROTO_IP, IP_TOS, &optval, sizeof(optval))<0) {
+      perror("data_socket: SO_PRIORITY");
+    }
+#else
+    optval = 6;
+    if(setsockopt(tmp, SOL_SOCKET, SO_PRIORITY, &optval, sizeof(optval))<0) {
+      perror("data_socket: SO_PRIORITY");
+    }
+#endif
 
     //
     // set a timeout for receive
@@ -502,6 +513,17 @@ static void open_tcp_socket() {
     if (setsockopt(tmp, SOL_SOCKET, SO_RCVBUF, &optval, sizeof(optval))<0) {
       perror("tcp_socket: SO_RCVBUF");
     }
+#ifdef __APPLE__
+    optval = 0x10;  // IPTOS_LOWDELAY
+    if(setsockopt(tmp, IPPROTO_IP, IP_TOS, &optval, sizeof(optval))<0) {
+      perror("data_socket: SO_PRIORITY");
+    }
+#else
+    optval = 6;
+    if(setsockopt(tmp, SOL_SOCKET, SO_PRIORITY, &optval, sizeof(optval))<0) {
+      perror("data_socket: SO_PRIORITY");
+    }
+#endif
     tcp_socket=tmp;
     g_print("TCP socket established: %d\n", tcp_socket);
 }