@@ -42,31 +42,22 @@ typedef struct {
typedef struct {
/* TX */
struct {
- odph_ring_t *prod; /**< ODP ring for IPC msg packets
+ odph_ring_t *send; /**< ODP ring for IPC msg packets
indexes transmitted to shared
memory */
- odph_ring_t *cons; /**< ODP ring for IPC msg packets
+ odph_ring_t *free; /**< ODP ring for IPC msg packets
indexes already processed by remote
process */
- } m; /* master */
+ } tx;
/* RX */
struct {
- odph_ring_t *prod; /**< ODP ring for IPC msg packets
+ odph_ring_t *recv; /**< ODP ring for IPC msg packets
indexes received from shared
memory (from remote process) */
- odph_ring_t *cons; /**< ODP ring for IPC msg packets
+ odph_ring_t *free; /**< ODP ring for IPC msg packets
indexes already processed by
current process */
- } s; /* slave */
- struct {
- odph_ring_t *r; /**< ring to receive from */
- odph_ring_t *r_p; /**< after recv is done place packet descr to
- that produced ring */
- } recv; /* remapped above rings for easy usage in recv() */
- struct {
- odph_ring_t *r; /**< ring to transmit packets */
- odph_ring_t *r_p; /**< ring with already transmitted packets */
- } tx; /* remapped above rings for easy usage in send() */
+ } rx; /* slave */
void *pool_base; /**< Remote pool base addr */
void *pool_mdata_base; /**< Remote pool mdata base addr */
uint64_t pkt_size; /**< Packet size in remote pool */
@@ -116,13 +116,6 @@ static int _ipc_master_post_init(pktio_entry_t *pktio_entry)
pktio_entry->s.ipc.pool_mdata_base = (char *)ipc_pool_base +
pinfo->slave.mdata_offset;
- /* recv() rings */
- pktio_entry->s.ipc.recv.r = pktio_entry->s.ipc.s.prod;
- pktio_entry->s.ipc.recv.r_p = pktio_entry->s.ipc.s.cons;
- /* tx() rings */
- pktio_entry->s.ipc.tx.r = pktio_entry->s.ipc.m.prod;
- pktio_entry->s.ipc.tx.r_p = pktio_entry->s.ipc.m.cons;
-
odp_atomic_store_u32(&pktio_entry->s.ipc.ready, 1);
ODP_DBG("Post init... DONE.\n");
@@ -152,59 +145,59 @@ static int _ipc_init_master(pktio_entry_t *pktio_entry,
* to be processed packets ring.
*/
snprintf(ipc_shm_name, sizeof(ipc_shm_name), "%s_m_prod", dev);
- pktio_entry->s.ipc.m.prod = odph_ring_create(ipc_shm_name,
+ pktio_entry->s.ipc.tx.send = odph_ring_create(ipc_shm_name,
PKTIO_IPC_ENTRIES,
ODPH_RING_SHM_PROC | ODPH_RING_NO_LIST);
- if (!pktio_entry->s.ipc.m.prod) {
+ if (!pktio_entry->s.ipc.tx.send) {
ODP_DBG("pid %d unable to create ipc ring %s name\n",
getpid(), ipc_shm_name);
return -1;
}
ODP_DBG("Created IPC ring: %s, count %d, free %d\n",
- ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.m.prod),
- odph_ring_free_count(pktio_entry->s.ipc.m.prod));
+ ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.tx.send),
+ odph_ring_free_count(pktio_entry->s.ipc.tx.send));
/* generate name in shm like ipc_pktio_p for
* already processed packets
*/
snprintf(ipc_shm_name, sizeof(ipc_shm_name), "%s_m_cons", dev);
- pktio_entry->s.ipc.m.cons = odph_ring_create(ipc_shm_name,
+ pktio_entry->s.ipc.tx.free = odph_ring_create(ipc_shm_name,
PKTIO_IPC_ENTRIES,
ODPH_RING_SHM_PROC | ODPH_RING_NO_LIST);
- if (!pktio_entry->s.ipc.m.cons) {
+ if (!pktio_entry->s.ipc.tx.free) {
ODP_DBG("pid %d unable to create ipc ring %s name\n",
getpid(), ipc_shm_name);
goto free_m_prod;
}
ODP_DBG("Created IPC ring: %s, count %d, free %d\n",
- ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.m.cons),
- odph_ring_free_count(pktio_entry->s.ipc.m.cons));
+ ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.tx.free),
+ odph_ring_free_count(pktio_entry->s.ipc.tx.free));
snprintf(ipc_shm_name, sizeof(ipc_shm_name), "%s_s_prod", dev);
- pktio_entry->s.ipc.s.prod = odph_ring_create(ipc_shm_name,
+ pktio_entry->s.ipc.rx.recv = odph_ring_create(ipc_shm_name,
PKTIO_IPC_ENTRIES,
ODPH_RING_SHM_PROC | ODPH_RING_NO_LIST);
- if (!pktio_entry->s.ipc.s.prod) {
+ if (!pktio_entry->s.ipc.rx.recv) {
ODP_DBG("pid %d unable to create ipc ring %s name\n",
getpid(), ipc_shm_name);
goto free_m_cons;
}
ODP_DBG("Created IPC ring: %s, count %d, free %d\n",
- ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.s.prod),
- odph_ring_free_count(pktio_entry->s.ipc.s.prod));
+ ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.rx.recv),
+ odph_ring_free_count(pktio_entry->s.ipc.rx.recv));
snprintf(ipc_shm_name, sizeof(ipc_shm_name), "%s_s_cons", dev);
- pktio_entry->s.ipc.s.cons = odph_ring_create(ipc_shm_name,
+ pktio_entry->s.ipc.rx.free = odph_ring_create(ipc_shm_name,
PKTIO_IPC_ENTRIES,
ODPH_RING_SHM_PROC | ODPH_RING_NO_LIST);
- if (!pktio_entry->s.ipc.s.cons) {
+ if (!pktio_entry->s.ipc.rx.free) {
ODP_DBG("pid %d unable to create ipc ring %s name\n",
getpid(), ipc_shm_name);
goto free_s_prod;
}
ODP_DBG("Created IPC ring: %s, count %d, free %d\n",
- ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.s.cons),
- odph_ring_free_count(pktio_entry->s.ipc.s.cons));
+ ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.rx.free),
+ odph_ring_free_count(pktio_entry->s.ipc.rx.free));
/* Set up pool name for remote info */
pinfo = pktio_entry->s.ipc.pinfo;
@@ -316,49 +309,49 @@ static int _ipc_slave_post_init(pktio_entry_t *pktio_entry)
const char *dev = pktio_entry->s.name;
snprintf(ipc_shm_name, sizeof(ipc_shm_name), "%s_m_prod", dev);
- pktio_entry->s.ipc.m.prod = _ipc_shm_map(ipc_shm_name, ring_size);
- if (!pktio_entry->s.ipc.m.prod) {
+ pktio_entry->s.ipc.rx.recv = _ipc_shm_map(ipc_shm_name, ring_size);
+ if (!pktio_entry->s.ipc.rx.recv) {
ODP_DBG("pid %d unable to find ipc ring %s name\n",
getpid(), dev);
sleep(1);
return -1;
}
ODP_DBG("Connected IPC ring: %s, count %d, free %d\n",
- ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.m.prod),
- odph_ring_free_count(pktio_entry->s.ipc.m.prod));
+ ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.rx.recv),
+ odph_ring_free_count(pktio_entry->s.ipc.rx.recv));
snprintf(ipc_shm_name, sizeof(ipc_shm_name), "%s_m_cons", dev);
- pktio_entry->s.ipc.m.cons = _ipc_shm_map(ipc_shm_name, ring_size);
- if (!pktio_entry->s.ipc.m.cons) {
+ pktio_entry->s.ipc.rx.free = _ipc_shm_map(ipc_shm_name, ring_size);
+ if (!pktio_entry->s.ipc.rx.free) {
ODP_DBG("pid %d unable to find ipc ring %s name\n",
getpid(), dev);
goto free_m_prod;
}
ODP_DBG("Connected IPC ring: %s, count %d, free %d\n",
- ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.m.cons),
- odph_ring_free_count(pktio_entry->s.ipc.m.cons));
+ ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.rx.free),
+ odph_ring_free_count(pktio_entry->s.ipc.rx.free));
snprintf(ipc_shm_name, sizeof(ipc_shm_name), "%s_s_prod", dev);
- pktio_entry->s.ipc.s.prod = _ipc_shm_map(ipc_shm_name, ring_size);
- if (!pktio_entry->s.ipc.s.prod) {
+ pktio_entry->s.ipc.tx.send = _ipc_shm_map(ipc_shm_name, ring_size);
+ if (!pktio_entry->s.ipc.tx.send) {
ODP_DBG("pid %d unable to find ipc ring %s name\n",
getpid(), dev);
goto free_m_cons;
}
ODP_DBG("Connected IPC ring: %s, count %d, free %d\n",
- ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.s.prod),
- odph_ring_free_count(pktio_entry->s.ipc.s.prod));
+ ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.tx.send),
+ odph_ring_free_count(pktio_entry->s.ipc.tx.send));
snprintf(ipc_shm_name, sizeof(ipc_shm_name), "%s_s_cons", dev);
- pktio_entry->s.ipc.s.cons = _ipc_shm_map(ipc_shm_name, ring_size);
- if (!pktio_entry->s.ipc.s.cons) {
+ pktio_entry->s.ipc.tx.free = _ipc_shm_map(ipc_shm_name, ring_size);
+ if (!pktio_entry->s.ipc.tx.free) {
ODP_DBG("pid %d unable to find ipc ring %s name\n",
getpid(), dev);
goto free_s_prod;
}
ODP_DBG("Connected IPC ring: %s, count %d, free %d\n",
- ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.s.cons),
- odph_ring_free_count(pktio_entry->s.ipc.s.cons));
+ ipc_shm_name, odph_ring_count(pktio_entry->s.ipc.tx.free),
+ odph_ring_free_count(pktio_entry->s.ipc.tx.free));
/* Get info about remote pool */
pinfo = pktio_entry->s.ipc.pinfo;
@@ -375,13 +368,6 @@ static int _ipc_slave_post_init(pktio_entry_t *pktio_entry)
*/
_odp_ipc_export_pool(pinfo, pktio_entry->s.ipc.pool);
- /* recv() rings */
- pktio_entry->s.ipc.recv.r = pktio_entry->s.ipc.m.prod;
- pktio_entry->s.ipc.recv.r_p = pktio_entry->s.ipc.m.cons;
- /* tx() rings */
- pktio_entry->s.ipc.tx.r = pktio_entry->s.ipc.s.prod;
- pktio_entry->s.ipc.tx.r_p = pktio_entry->s.ipc.s.cons;
-
odp_atomic_store_u32(&pktio_entry->s.ipc.ready, 1);
ODP_DBG("Post init... DONE.\n");
@@ -497,7 +483,7 @@ int ipc_pktio_recv(pktio_entry_t *pktio_entry,
odph_ring_t *tx_r_p;
rbuf_p = (void *)&r_p_pkts;
- tx_r_p = pktio_entry->s.ipc.tx.r_p;
+ tx_r_p = pktio_entry->s.ipc.tx.free;
ret = odph_ring_mc_dequeue_burst(tx_r_p, rbuf_p,
PKTIO_IPC_ENTRIES);
if (0 == ret)
@@ -508,7 +494,7 @@ int ipc_pktio_recv(pktio_entry_t *pktio_entry,
}
}
- r = pktio_entry->s.ipc.recv.r;
+ r = pktio_entry->s.ipc.rx.recv;
pkts = odph_ring_mc_dequeue_burst(r, ipcbufs_p, len);
if (odp_unlikely(pkts < 0))
ODP_ABORT("error to dequeue no packets\n");
@@ -587,7 +573,7 @@ int ipc_pktio_recv(pktio_entry_t *pktio_entry,
}
/* Now tell other process that we no longer need that buffers.*/
- r_p = pktio_entry->s.ipc.recv.r_p;
+ r_p = pktio_entry->s.ipc.rx.free;
pkts = odph_ring_mp_enqueue_burst(r_p, ipcbufs_p, i);
if (odp_unlikely(pkts < 0))
ODP_ABORT("ipc: odp_ring_mp_enqueue_bulk r_p fail\n");
@@ -613,7 +599,7 @@ int ipc_pktio_send(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[],
odph_ring_t *r_p;
rbuf_p = (void *)&r_p_pkts;
- r_p = pktio_entry->s.ipc.tx.r_p;
+ r_p = pktio_entry->s.ipc.tx.free;
ret = odph_ring_mc_dequeue_burst(r_p, rbuf_p,
PKTIO_IPC_ENTRIES);
if (0 == ret)
@@ -661,7 +647,7 @@ int ipc_pktio_send(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[],
/* Put packets to ring to be processed in other process. */
rbuf_p = (void *)&pkt_table[0];
- r = pktio_entry->s.ipc.tx.r;
+ r = pktio_entry->s.ipc.tx.send;
ret = odph_ring_mp_enqueue_burst(r, rbuf_p, len);
if (odp_unlikely(ret < 0)) {
ODP_ERR("pid %d odp_ring_mp_enqueue_bulk fail, ipc_slave %d, ret %d\n",