aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic
diff options
context:
space:
mode:
authorMaxim Uvarov <maxim.uvarov@linaro.org>2015-08-26 18:49:05 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2015-08-27 16:28:13 +0300
commit2d9034e33f7d568cf66b73125dc2b36a2dff7056 (patch)
treecb3a08cb641c5eb43cae28ecb1b9c94a3e9ab398 /platform/linux-generic
parentc80bb5f8e3acdc1ef05a1099e2fee0a56571fcb0 (diff)
linux-generic: socket: implement pktio_start and pktio_stop
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Reviewed-by: Stuart Haslam <stuart.haslam@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic')
-rw-r--r--platform/linux-generic/pktio/socket.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index 45040fd..43c5f67 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -234,6 +234,7 @@ static int sock_setup_pkt(pktio_entry_t *pktio_entry, const char *netdev,
goto error;
}
+ pktio_entry->s.state = STATE_START;
return 0;
error:
@@ -296,6 +297,11 @@ static int sock_mmsg_recv(pktio_entry_t *pktio_entry,
int recv_msgs;
int i;
+ if (pktio_entry->s.state == STATE_STOP) {
+ __odp_errno = EPERM;
+ return -1;
+ }
+
if (odp_unlikely(len > ODP_PACKET_SOCKET_MAX_BURST_RX))
return -1;
@@ -377,6 +383,11 @@ static int sock_mmsg_send(pktio_entry_t *pktio_entry,
unsigned sent_msgs = 0;
unsigned flags;
+ if (pktio_entry->s.state == STATE_STOP) {
+ __odp_errno = EPERM;
+ return -1;
+ }
+
if (odp_unlikely(len > ODP_PACKET_SOCKET_MAX_BURST_TX))
return -1;
@@ -439,11 +450,25 @@ static int sock_promisc_mode_get(pktio_entry_t *pktio_entry)
pktio_entry->s.name);
}
+static int sock_start(pktio_entry_t *pktio_entry)
+{
+ pktio_entry->s.state = STATE_START;
+ return 0;
+}
+
+static int sock_stop(pktio_entry_t *pktio_entry)
+{
+ pktio_entry->s.state = STATE_STOP;
+ return 0;
+}
+
const pktio_if_ops_t sock_mmsg_pktio_ops = {
.init = NULL,
.term = NULL,
.open = sock_mmsg_open,
.close = sock_close,
+ .start = sock_start,
+ .stop = sock_stop,
.recv = sock_mmsg_recv,
.send = sock_mmsg_send,
.mtu_get = sock_mtu_get,