aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2017-06-20 10:13:20 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2017-06-22 18:02:22 +0300
commit0fcec77081fd1df2f862419b42014bbf700d9c32 (patch)
tree447e1c20a0a37bf0c55f10d9b0ccbf2996aab302
parent164fc322a6bb346d6c1f545ac69501b774cc56c2 (diff)
linux-gen: socket: remove limits for maximum RX/TX burst size
backport of: 373f97f8 Remove unnecessary limits for maximum RX/TX burst size. Fixes: https://bugs.linaro.org/show_bug.cgi?id=3039 Signed-off-by: Matias Elo <matias.elo@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r--platform/linux-generic/include/odp_packet_socket.h7
-rw-r--r--platform/linux-generic/pktio/socket.c36
2 files changed, 6 insertions, 37 deletions
diff --git a/platform/linux-generic/include/odp_packet_socket.h b/platform/linux-generic/include/odp_packet_socket.h
index ccff69a56..8c1012a8a 100644
--- a/platform/linux-generic/include/odp_packet_socket.h
+++ b/platform/linux-generic/include/odp_packet_socket.h
@@ -27,11 +27,6 @@
* Packet socket config:
*/
-/** Max receive (Rx) burst size*/
-#define ODP_PACKET_SOCKET_MAX_BURST_RX 32
-/** Max transmit (Tx) burst size*/
-#define ODP_PACKET_SOCKET_MAX_BURST_TX 32
-
/*
* This makes sure that building for kernels older than 3.1 works
* and a fanout requests fails (for invalid packet socket option)
@@ -46,8 +41,6 @@ typedef struct {
int sockfd; /**< socket descriptor */
odp_pool_t pool; /**< pool to alloc packets from */
unsigned char if_mac[ETH_ALEN]; /**< IF eth mac addr */
- uint8_t *cache_ptr[ODP_PACKET_SOCKET_MAX_BURST_RX];
- odp_shm_t shm;
} pkt_sock_t;
/** packet mmap ring */
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index 0309b0d0f..624104de7 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -458,8 +458,6 @@ static int sock_close(pktio_entry_t *pktio_entry)
return -1;
}
- odp_shm_free(pkt_sock->shm);
-
return 0;
}
@@ -471,13 +469,11 @@ static int sock_setup_pkt(pktio_entry_t *pktio_entry, const char *netdev,
{
int sockfd;
int err;
- int i;
unsigned int if_idx;
struct ifreq ethreq;
struct sockaddr_ll sa_ll;
char shm_name[ODP_SHM_NAME_LEN];
pkt_sock_t *pkt_sock = &pktio_entry->s.pkt_sock;
- uint8_t *addr;
odp_pktio_stats_t cur_stats;
/* Init pktio entry */
@@ -491,18 +487,6 @@ static int sock_setup_pkt(pktio_entry_t *pktio_entry, const char *netdev,
snprintf(shm_name, ODP_SHM_NAME_LEN, "%s-%s", "pktio", netdev);
shm_name[ODP_SHM_NAME_LEN - 1] = '\0';
- pkt_sock->shm = odp_shm_reserve(shm_name, PACKET_JUMBO_LEN,
- PACKET_JUMBO_LEN *
- ODP_PACKET_SOCKET_MAX_BURST_RX, 0);
- if (pkt_sock->shm == ODP_SHM_INVALID)
- return -1;
-
- addr = odp_shm_addr(pkt_sock->shm);
- for (i = 0; i < ODP_PACKET_SOCKET_MAX_BURST_RX; i++) {
- pkt_sock->cache_ptr[i] = addr;
- addr += PACKET_JUMBO_LEN;
- }
-
sockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
if (sockfd == -1) {
__odp_errno = errno;
@@ -616,15 +600,11 @@ static int sock_mmsg_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
odp_time_t *ts = NULL;
const int sockfd = pkt_sock->sockfd;
int msgvec_len;
- struct mmsghdr msgvec[ODP_PACKET_SOCKET_MAX_BURST_RX];
+ struct mmsghdr msgvec[len];
int nb_rx = 0;
int recv_msgs;
- uint8_t **recv_cache;
int i;
- if (odp_unlikely(len > ODP_PACKET_SOCKET_MAX_BURST_RX))
- return -1;
-
odp_ticketlock_lock(&pktio_entry->s.rxl);
if (pktio_entry->s.config.pktin.bit.ts_all ||
@@ -632,10 +612,10 @@ static int sock_mmsg_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
ts = &ts_val;
memset(msgvec, 0, sizeof(msgvec));
- recv_cache = pkt_sock->cache_ptr;
if (pktio_cls_enabled(pktio_entry)) {
- struct iovec iovecs[ODP_PACKET_SOCKET_MAX_BURST_RX];
+ struct iovec iovecs[len];
+ uint8_t recv_cache[len][PACKET_JUMBO_LEN];
for (i = 0; i < (int)len; i++) {
msgvec[i].msg_hdr.msg_iovlen = 1;
@@ -686,8 +666,7 @@ static int sock_mmsg_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
pkt_table[nb_rx++] = pkt;
}
} else {
- struct iovec iovecs[ODP_PACKET_SOCKET_MAX_BURST_RX]
- [ODP_BUFFER_MAX_SEG];
+ struct iovec iovecs[len][ODP_BUFFER_MAX_SEG];
for (i = 0; i < (int)len; i++) {
pkt_table[i] = packet_alloc(pkt_sock->pool,
@@ -770,15 +749,12 @@ static int sock_mmsg_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
const odp_packet_t pkt_table[], int len)
{
pkt_sock_t *pkt_sock = &pktio_entry->s.pkt_sock;
- struct mmsghdr msgvec[ODP_PACKET_SOCKET_MAX_BURST_TX];
- struct iovec iovecs[ODP_PACKET_SOCKET_MAX_BURST_TX][ODP_BUFFER_MAX_SEG];
+ struct mmsghdr msgvec[len];
+ struct iovec iovecs[len][ODP_BUFFER_MAX_SEG];
int ret;
int sockfd;
int n, i;
- if (odp_unlikely(len > ODP_PACKET_SOCKET_MAX_BURST_TX))
- return -1;
-
odp_ticketlock_lock(&pktio_entry->s.txl);
sockfd = pkt_sock->sockfd;