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/iavf: fix NAT-T payload length
[dpdk.git]
/
drivers
/
net
/
virtio
/
virtio_rxtx_simple_altivec.c
diff --git
a/drivers/net/virtio/virtio_rxtx_simple_altivec.c
b/drivers/net/virtio/virtio_rxtx_simple_altivec.c
index
f09a1ed
..
e7f0ed6
100644
(file)
--- a/
drivers/net/virtio/virtio_rxtx_simple_altivec.c
+++ b/
drivers/net/virtio/virtio_rxtx_simple_altivec.c
@@
-41,7
+41,7
@@
virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
uint16_t nb_pkts)
{
struct virtnet_rx *rxvq = rx_queue;
uint16_t nb_pkts)
{
struct virtnet_rx *rxvq = rx_queue;
- struct virtqueue *vq =
rxvq->vq
;
+ struct virtqueue *vq =
virtnet_rxq_to_vq(rxvq)
;
struct virtio_hw *hw = vq->hw;
uint16_t nb_used, nb_total;
uint16_t desc_idx;
struct virtio_hw *hw = vq->hw;
uint16_t nb_used, nb_total;
uint16_t desc_idx;
@@
-50,9
+50,9
@@
virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
struct rte_mbuf **sw_ring_end;
struct rte_mbuf **ref_rx_pkts;
uint16_t nb_pkts_received = 0;
struct rte_mbuf **sw_ring_end;
struct rte_mbuf **ref_rx_pkts;
uint16_t nb_pkts_received = 0;
- const vector unsigned char zero = {0};
+ const
__
vector unsigned char zero = {0};
- const vector unsigned char shuf_msk1 = {
+ const
__
vector unsigned char shuf_msk1 = {
0xFF, 0xFF, 0xFF, 0xFF, /* packet type */
4, 5, 0xFF, 0xFF, /* vlan tci */
4, 5, /* dat len */
0xFF, 0xFF, 0xFF, 0xFF, /* packet type */
4, 5, 0xFF, 0xFF, /* vlan tci */
4, 5, /* dat len */
@@
-60,7
+60,7
@@
virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
0xFF, 0xFF, 0xFF, 0xFF
};
0xFF, 0xFF, 0xFF, 0xFF
};
- const vector unsigned char shuf_msk2 = {
+ const
__
vector unsigned char shuf_msk2 = {
0xFF, 0xFF, 0xFF, 0xFF, /* packet type */
12, 13, 0xFF, 0xFF, /* pkt len */
12, 13, /* dat len */
0xFF, 0xFF, 0xFF, 0xFF, /* packet type */
12, 13, 0xFF, 0xFF, /* pkt len */
12, 13, /* dat len */
@@
-72,7
+72,7
@@
virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
* Subtract the header length.
* In which case do we need the header length in used->len ?
*/
* Subtract the header length.
* In which case do we need the header length in used->len ?
*/
- const vector unsigned short len_adjust = {
+ const
__
vector unsigned short len_adjust = {
0, 0,
(uint16_t)-vq->hw->vtnet_hdr_size, 0,
(uint16_t)-vq->hw->vtnet_hdr_size, 0,
0, 0,
(uint16_t)-vq->hw->vtnet_hdr_size, 0,
(uint16_t)-vq->hw->vtnet_hdr_size, 0,
@@
-85,6
+85,12
@@
virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
if (unlikely(nb_pkts < RTE_VIRTIO_DESC_PER_LOOP))
return 0;
if (unlikely(nb_pkts < RTE_VIRTIO_DESC_PER_LOOP))
return 0;
+ if (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {
+ virtio_rxq_rearm_vec(rxvq);
+ if (unlikely(virtqueue_kick_prepare(vq)))
+ virtqueue_notify(vq);
+ }
+
nb_used = virtqueue_nused(vq);
rte_compiler_barrier();
nb_used = virtqueue_nused(vq);
rte_compiler_barrier();
@@
-102,78
+108,72
@@
virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
rte_prefetch0(rused);
rte_prefetch0(rused);
- if (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {
- virtio_rxq_rearm_vec(rxvq);
- if (unlikely(virtqueue_kick_prepare(vq)))
- virtqueue_notify(vq);
- }
-
nb_total = nb_used;
ref_rx_pkts = rx_pkts;
for (nb_pkts_received = 0;
nb_pkts_received < nb_total;) {
nb_total = nb_used;
ref_rx_pkts = rx_pkts;
for (nb_pkts_received = 0;
nb_pkts_received < nb_total;) {
- vector unsigned char desc[RTE_VIRTIO_DESC_PER_LOOP / 2];
- vector unsigned char mbp[RTE_VIRTIO_DESC_PER_LOOP / 2];
- vector unsigned char pkt_mb[RTE_VIRTIO_DESC_PER_LOOP];
+
__
vector unsigned char desc[RTE_VIRTIO_DESC_PER_LOOP / 2];
+
__
vector unsigned char mbp[RTE_VIRTIO_DESC_PER_LOOP / 2];
+
__
vector unsigned char pkt_mb[RTE_VIRTIO_DESC_PER_LOOP];
mbp[0] = vec_vsx_ld(0, (unsigned char const *)(sw_ring + 0));
desc[0] = vec_vsx_ld(0, (unsigned char const *)(rused + 0));
mbp[0] = vec_vsx_ld(0, (unsigned char const *)(sw_ring + 0));
desc[0] = vec_vsx_ld(0, (unsigned char const *)(rused + 0));
- *(vector unsigned char *)&rx_pkts[0] = mbp[0];
+ *(
__
vector unsigned char *)&rx_pkts[0] = mbp[0];
mbp[1] = vec_vsx_ld(0, (unsigned char const *)(sw_ring + 2));
desc[1] = vec_vsx_ld(0, (unsigned char const *)(rused + 2));
mbp[1] = vec_vsx_ld(0, (unsigned char const *)(sw_ring + 2));
desc[1] = vec_vsx_ld(0, (unsigned char const *)(rused + 2));
- *(vector unsigned char *)&rx_pkts[2] = mbp[1];
+ *(
__
vector unsigned char *)&rx_pkts[2] = mbp[1];
mbp[2] = vec_vsx_ld(0, (unsigned char const *)(sw_ring + 4));
desc[2] = vec_vsx_ld(0, (unsigned char const *)(rused + 4));
mbp[2] = vec_vsx_ld(0, (unsigned char const *)(sw_ring + 4));
desc[2] = vec_vsx_ld(0, (unsigned char const *)(rused + 4));
- *(vector unsigned char *)&rx_pkts[4] = mbp[2];
+ *(
__
vector unsigned char *)&rx_pkts[4] = mbp[2];
mbp[3] = vec_vsx_ld(0, (unsigned char const *)(sw_ring + 6));
desc[3] = vec_vsx_ld(0, (unsigned char const *)(rused + 6));
mbp[3] = vec_vsx_ld(0, (unsigned char const *)(sw_ring + 6));
desc[3] = vec_vsx_ld(0, (unsigned char const *)(rused + 6));
- *(vector unsigned char *)&rx_pkts[6] = mbp[3];
+ *(
__
vector unsigned char *)&rx_pkts[6] = mbp[3];
pkt_mb[0] = vec_perm(desc[0], zero, shuf_msk1);
pkt_mb[1] = vec_perm(desc[0], zero, shuf_msk2);
pkt_mb[0] = vec_perm(desc[0], zero, shuf_msk1);
pkt_mb[1] = vec_perm(desc[0], zero, shuf_msk2);
- pkt_mb[0] = (vector unsigned char)
- ((vector unsigned short)pkt_mb[0] + len_adjust);
- pkt_mb[1] = (vector unsigned char)
- ((vector unsigned short)pkt_mb[1] + len_adjust);
- *(vector unsigned char *)&rx_pkts[0]->rx_descriptor_fields1 =
+ pkt_mb[0] = (
__
vector unsigned char)
+ ((
__
vector unsigned short)pkt_mb[0] + len_adjust);
+ pkt_mb[1] = (
__
vector unsigned char)
+ ((
__
vector unsigned short)pkt_mb[1] + len_adjust);
+ *(
__
vector unsigned char *)&rx_pkts[0]->rx_descriptor_fields1 =
pkt_mb[0];
pkt_mb[0];
- *(vector unsigned char *)&rx_pkts[1]->rx_descriptor_fields1 =
+ *(
__
vector unsigned char *)&rx_pkts[1]->rx_descriptor_fields1 =
pkt_mb[1];
pkt_mb[2] = vec_perm(desc[1], zero, shuf_msk1);
pkt_mb[3] = vec_perm(desc[1], zero, shuf_msk2);
pkt_mb[1];
pkt_mb[2] = vec_perm(desc[1], zero, shuf_msk1);
pkt_mb[3] = vec_perm(desc[1], zero, shuf_msk2);
- pkt_mb[2] = (vector unsigned char)
- ((vector unsigned short)pkt_mb[2] + len_adjust);
- pkt_mb[3] = (vector unsigned char)
- ((vector unsigned short)pkt_mb[3] + len_adjust);
- *(vector unsigned char *)&rx_pkts[2]->rx_descriptor_fields1 =
+ pkt_mb[2] = (
__
vector unsigned char)
+ ((
__
vector unsigned short)pkt_mb[2] + len_adjust);
+ pkt_mb[3] = (
__
vector unsigned char)
+ ((
__
vector unsigned short)pkt_mb[3] + len_adjust);
+ *(
__
vector unsigned char *)&rx_pkts[2]->rx_descriptor_fields1 =
pkt_mb[2];
pkt_mb[2];
- *(vector unsigned char *)&rx_pkts[3]->rx_descriptor_fields1 =
+ *(
__
vector unsigned char *)&rx_pkts[3]->rx_descriptor_fields1 =
pkt_mb[3];
pkt_mb[4] = vec_perm(desc[2], zero, shuf_msk1);
pkt_mb[5] = vec_perm(desc[2], zero, shuf_msk2);
pkt_mb[3];
pkt_mb[4] = vec_perm(desc[2], zero, shuf_msk1);
pkt_mb[5] = vec_perm(desc[2], zero, shuf_msk2);
- pkt_mb[4] = (vector unsigned char)
- ((vector unsigned short)pkt_mb[4] + len_adjust);
- pkt_mb[5] = (vector unsigned char)
- ((vector unsigned short)pkt_mb[5] + len_adjust);
- *(vector unsigned char *)&rx_pkts[4]->rx_descriptor_fields1 =
+ pkt_mb[4] = (
__
vector unsigned char)
+ ((
__
vector unsigned short)pkt_mb[4] + len_adjust);
+ pkt_mb[5] = (
__
vector unsigned char)
+ ((
__
vector unsigned short)pkt_mb[5] + len_adjust);
+ *(
__
vector unsigned char *)&rx_pkts[4]->rx_descriptor_fields1 =
pkt_mb[4];
pkt_mb[4];
- *(vector unsigned char *)&rx_pkts[5]->rx_descriptor_fields1 =
+ *(
__
vector unsigned char *)&rx_pkts[5]->rx_descriptor_fields1 =
pkt_mb[5];
pkt_mb[6] = vec_perm(desc[3], zero, shuf_msk1);
pkt_mb[7] = vec_perm(desc[3], zero, shuf_msk2);
pkt_mb[5];
pkt_mb[6] = vec_perm(desc[3], zero, shuf_msk1);
pkt_mb[7] = vec_perm(desc[3], zero, shuf_msk2);
- pkt_mb[6] = (vector unsigned char)
- ((vector unsigned short)pkt_mb[6] + len_adjust);
- pkt_mb[7] = (vector unsigned char)
- ((vector unsigned short)pkt_mb[7] + len_adjust);
- *(vector unsigned char *)&rx_pkts[6]->rx_descriptor_fields1 =
+ pkt_mb[6] = (
__
vector unsigned char)
+ ((
__
vector unsigned short)pkt_mb[6] + len_adjust);
+ pkt_mb[7] = (
__
vector unsigned char)
+ ((
__
vector unsigned short)pkt_mb[7] + len_adjust);
+ *(
__
vector unsigned char *)&rx_pkts[6]->rx_descriptor_fields1 =
pkt_mb[6];
pkt_mb[6];
- *(vector unsigned char *)&rx_pkts[7]->rx_descriptor_fields1 =
+ *(
__
vector unsigned char *)&rx_pkts[7]->rx_descriptor_fields1 =
pkt_mb[7];
if (unlikely(nb_used <= RTE_VIRTIO_DESC_PER_LOOP)) {
pkt_mb[7];
if (unlikely(nb_used <= RTE_VIRTIO_DESC_PER_LOOP)) {