Message ID | 1439466334-16497-4-git-send-email-maxim.uvarov@linaro.org |
---|---|
State | New |
Headers | show |
On Thu, Aug 13, 2015 at 6:45 AM, Maxim Uvarov <maxim.uvarov@linaro.org> wrote: > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> > --- > platform/linux-generic/pktio/socket_mmap.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/platform/linux-generic/pktio/socket_mmap.c > b/platform/linux-generic/pktio/socket_mmap.c > index 7d42678..f9ba74e 100644 > --- a/platform/linux-generic/pktio/socket_mmap.c > +++ b/platform/linux-generic/pktio/socket_mmap.c > @@ -486,6 +486,7 @@ static int sock_mmap_open(odp_pktio_t id ODP_UNUSED, > goto error; > } > > + pktio_entry->s.state = STATE_START; > return 0; > > error: > @@ -497,6 +498,10 @@ static int sock_mmap_recv(pktio_entry_t *pktio_entry, > odp_packet_t pkt_table[], unsigned len) > { > pkt_sock_mmap_t *const pkt_sock = &pktio_entry->s.pkt_sock_mmap; > + > + if (pktio_entry->s.state == STATE_STOP) > + return 0; > + > return pkt_mmap_v2_rx(pkt_sock->rx_ring.sock, &pkt_sock->rx_ring, > pkt_table, len, pkt_sock->pool, > pkt_sock->if_mac); > @@ -506,6 +511,9 @@ static int sock_mmap_send(pktio_entry_t *pktio_entry, > odp_packet_t pkt_table[], unsigned len) > { > pkt_sock_mmap_t *const pkt_sock = &pktio_entry->s.pkt_sock_mmap; > + > + if (pktio_entry->s.state == STATE_STOP) > + return 0; > Same comments here. Attempting to send (and probably recv too) from a stopped interface should give some sort of an error indicator to avoid confusion and/or leaks. > return pkt_mmap_v2_tx(pkt_sock->tx_ring.sock, &pkt_sock->tx_ring, > pkt_table, len); > } > @@ -535,11 +543,25 @@ static int sock_mmap_promisc_mode_get(pktio_entry_t > *pktio_entry) > pktio_entry->s.name); > } > > +static int sock_mmap_start(pktio_entry_t *pktio_entry) > +{ > + pktio_entry->s.state = STATE_START; > + return 0; > +} > + > +static int sock_mmap_stop(pktio_entry_t *pktio_entry) > +{ > + pktio_entry->s.state = STATE_STOP; > + return 0; > +} > + > const pktio_if_ops_t sock_mmap_pktio_ops = { > .init = NULL, > .term = NULL, > .open = sock_mmap_open, > .close = sock_mmap_close, > + .start = sock_mmap_start, > + .stop = sock_mmap_stop, > .recv = sock_mmap_recv, > .send = sock_mmap_send, > .mtu_get = sock_mmap_mtu_get, > -- > 1.9.1 > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp >
diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c index 7d42678..f9ba74e 100644 --- a/platform/linux-generic/pktio/socket_mmap.c +++ b/platform/linux-generic/pktio/socket_mmap.c @@ -486,6 +486,7 @@ static int sock_mmap_open(odp_pktio_t id ODP_UNUSED, goto error; } + pktio_entry->s.state = STATE_START; return 0; error: @@ -497,6 +498,10 @@ static int sock_mmap_recv(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[], unsigned len) { pkt_sock_mmap_t *const pkt_sock = &pktio_entry->s.pkt_sock_mmap; + + if (pktio_entry->s.state == STATE_STOP) + return 0; + return pkt_mmap_v2_rx(pkt_sock->rx_ring.sock, &pkt_sock->rx_ring, pkt_table, len, pkt_sock->pool, pkt_sock->if_mac); @@ -506,6 +511,9 @@ static int sock_mmap_send(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[], unsigned len) { pkt_sock_mmap_t *const pkt_sock = &pktio_entry->s.pkt_sock_mmap; + + if (pktio_entry->s.state == STATE_STOP) + return 0; return pkt_mmap_v2_tx(pkt_sock->tx_ring.sock, &pkt_sock->tx_ring, pkt_table, len); } @@ -535,11 +543,25 @@ static int sock_mmap_promisc_mode_get(pktio_entry_t *pktio_entry) pktio_entry->s.name); } +static int sock_mmap_start(pktio_entry_t *pktio_entry) +{ + pktio_entry->s.state = STATE_START; + return 0; +} + +static int sock_mmap_stop(pktio_entry_t *pktio_entry) +{ + pktio_entry->s.state = STATE_STOP; + return 0; +} + const pktio_if_ops_t sock_mmap_pktio_ops = { .init = NULL, .term = NULL, .open = sock_mmap_open, .close = sock_mmap_close, + .start = sock_mmap_start, + .stop = sock_mmap_stop, .recv = sock_mmap_recv, .send = sock_mmap_send, .mtu_get = sock_mmap_mtu_get,
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> --- platform/linux-generic/pktio/socket_mmap.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)