git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/virtio: fetch extended statistics with integer ids
[dpdk.git]
/
drivers
/
net
/
enic
/
enic_rx.c
diff --git
a/drivers/net/enic/enic_rx.c
b/drivers/net/enic/enic_rx.c
index
817a891
..
6459e97
100644
(file)
--- a/
drivers/net/enic/enic_rx.c
+++ b/
drivers/net/enic/enic_rx.c
@@
-57,16
+57,6
@@
#define rte_packet_prefetch(p) do {} while (0)
#endif
#define rte_packet_prefetch(p) do {} while (0)
#endif
-static inline struct rte_mbuf *
-rte_rxmbuf_alloc(struct rte_mempool *mp)
-{
- struct rte_mbuf *m;
-
- m = __rte_mbuf_raw_alloc(mp);
- __rte_mbuf_sanity_check_raw(m, 0);
- return m;
-}
-
static inline uint16_t
enic_cq_rx_desc_ciflags(struct cq_enet_rq_desc *crd)
{
static inline uint16_t
enic_cq_rx_desc_ciflags(struct cq_enet_rq_desc *crd)
{
@@
-207,7
+197,7
@@
enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
/* VLAN stripping */
if (bwflags & CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED) {
/* VLAN stripping */
if (bwflags & CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED) {
- pkt_flags |= PKT_RX_VLAN_PKT;
+ pkt_flags |= PKT_RX_VLAN_PKT
| PKT_RX_VLAN_STRIPPED
;
mbuf->vlan_tci = enic_cq_rx_desc_vlan(cqrd);
} else {
mbuf->vlan_tci = 0;
mbuf->vlan_tci = enic_cq_rx_desc_vlan(cqrd);
} else {
mbuf->vlan_tci = 0;
@@
-238,8
+228,8
@@
static inline uint32_t
enic_ring_add(uint32_t n_descriptors, uint32_t i0, uint32_t i1)
{
uint32_t d = i0 + i1;
enic_ring_add(uint32_t n_descriptors, uint32_t i0, uint32_t i1)
{
uint32_t d = i0 + i1;
- ASSERT(i0 < n_descriptors);
- ASSERT(i1 < n_descriptors);
+
RTE_
ASSERT(i0 < n_descriptors);
+
RTE_
ASSERT(i1 < n_descriptors);
d -= (d >= n_descriptors) ? n_descriptors : 0;
return d;
}
d -= (d >= n_descriptors) ? n_descriptors : 0;
return d;
}
@@
-266,7
+256,6
@@
enic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
nb_hold = rq->rx_nb_hold; /* mbufs held by software */
while (nb_rx < nb_pkts) {
nb_hold = rq->rx_nb_hold; /* mbufs held by software */
while (nb_rx < nb_pkts) {
- uint16_t rx_pkt_len;
volatile struct rq_enet_desc *rqd_ptr;
dma_addr_t dma_addr;
struct cq_desc cqd;
volatile struct rq_enet_desc *rqd_ptr;
dma_addr_t dma_addr;
struct cq_desc cqd;
@@
-284,7
+273,7
@@
enic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
rqd_ptr = (struct rq_enet_desc *)(rq->ring.descs) + rx_id;
/* allocate a new mbuf */
rqd_ptr = (struct rq_enet_desc *)(rq->ring.descs) + rx_id;
/* allocate a new mbuf */
- nmb = rte_
rxmbuf
_alloc(rq->mp);
+ nmb = rte_
mbuf_raw
_alloc(rq->mp);
if (nmb == NULL) {
dev_err(enic, "RX mbuf alloc failed port=%u qid=%u",
enic->port_id, (unsigned)rq->index);
if (nmb == NULL) {
dev_err(enic, "RX mbuf alloc failed port=%u qid=%u",
enic->port_id, (unsigned)rq->index);
@@
-295,10
+284,6
@@
enic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
/* A packet error means descriptor and data are untrusted */
packet_error = enic_cq_rx_to_pkt_err_flags(&cqd, &ol_err_flags);
/* A packet error means descriptor and data are untrusted */
packet_error = enic_cq_rx_to_pkt_err_flags(&cqd, &ol_err_flags);
- if (!packet_error)
- rx_pkt_len = enic_cq_rx_desc_n_bytes(&cqd);
- else
- rx_pkt_len = 0;
/* Get the mbuf to return and replace with one just allocated */
rxmb = rq->mbuf_ring[rx_id];
/* Get the mbuf to return and replace with one just allocated */
rxmb = rq->mbuf_ring[rx_id];
@@
-319,24
+304,27
@@
enic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
+ rx_id);
/* Push descriptor for newly allocated mbuf */
+ rx_id);
/* Push descriptor for newly allocated mbuf */
- dma_addr = (dma_addr_t)(nmb->buf_physaddr + nmb->data_off);
+ dma_addr = (dma_addr_t)(nmb->buf_physaddr
+ + RTE_PKTMBUF_HEADROOM);
rqd_ptr->address = rte_cpu_to_le_64(dma_addr);
rqd_ptr->address = rte_cpu_to_le_64(dma_addr);
- rqd_ptr->length_type = cpu_to_le16(nmb->buf_len);
+ rqd_ptr->length_type = cpu_to_le16(nmb->buf_len
+ - RTE_PKTMBUF_HEADROOM);
/* Fill in the rest of the mbuf */
rxmb->data_off = RTE_PKTMBUF_HEADROOM;
rxmb->nb_segs = 1;
rxmb->next = NULL;
/* Fill in the rest of the mbuf */
rxmb->data_off = RTE_PKTMBUF_HEADROOM;
rxmb->nb_segs = 1;
rxmb->next = NULL;
- rxmb->pkt_len = rx_pkt_len;
- rxmb->data_len = rx_pkt_len;
rxmb->port = enic->port_id;
if (!packet_error) {
rxmb->port = enic->port_id;
if (!packet_error) {
+ rxmb->pkt_len = enic_cq_rx_desc_n_bytes(&cqd);
rxmb->packet_type = enic_cq_rx_flags_to_pkt_type(&cqd);
enic_cq_rx_to_pkt_flags(&cqd, rxmb);
} else {
rxmb->packet_type = enic_cq_rx_flags_to_pkt_type(&cqd);
enic_cq_rx_to_pkt_flags(&cqd, rxmb);
} else {
+ rxmb->pkt_len = 0;
rxmb->packet_type = 0;
rxmb->ol_flags = 0;
}
rxmb->packet_type = 0;
rxmb->ol_flags = 0;
}
+ rxmb->data_len = rxmb->pkt_len;
/* prefetch mbuf data for caller */
rte_packet_prefetch(RTE_PTR_ADD(rxmb->buf_addr,
/* prefetch mbuf data for caller */
rte_packet_prefetch(RTE_PTR_ADD(rxmb->buf_addr,