mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
netdev-dpdk: Apply batch truncation API.
Instead of looping into each packet and check whether to truncate, the patch moves it out of the loop and uses batch API. If truncation is not set, checking 'trunc' in 'struct dp_packet_batch' at per-batch basis can skip the per-packet checking overhead. Signed-off-by: William Tu <u9012063@gmail.com> Acked-by: Daniele Di Proietto <diproiettod@vmware.com>
This commit is contained in:
committed by
Daniele Di Proietto
parent
38c4437843
commit
7d6d1a40dc
@@ -1411,6 +1411,8 @@ dpdk_do_tx_copy(struct netdev *netdev, int qid, struct dp_packet_batch *batch)
|
||||
ovs_mutex_lock(&nonpmd_mempool_mutex);
|
||||
}
|
||||
|
||||
dp_packet_batch_apply_cutlen(batch);
|
||||
|
||||
for (i = 0; i < batch->count; i++) {
|
||||
int size = dp_packet_size(batch->packets[i]);
|
||||
|
||||
@@ -1429,10 +1431,6 @@ dpdk_do_tx_copy(struct netdev *netdev, int qid, struct dp_packet_batch *batch)
|
||||
break;
|
||||
}
|
||||
|
||||
/* Cut the size so only the truncated size is copied. */
|
||||
size -= dp_packet_get_cutlen(batch->packets[i]);
|
||||
dp_packet_reset_cutlen(batch->packets[i]);
|
||||
|
||||
/* We have to do a copy for now */
|
||||
memcpy(rte_pktmbuf_mtod(mbufs[newcnt], void *),
|
||||
dp_packet_data(batch->packets[i]), size);
|
||||
@@ -1506,12 +1504,11 @@ netdev_dpdk_send__(struct netdev_dpdk *dev, int qid,
|
||||
unsigned int temp_cnt = 0;
|
||||
int cnt = batch->count;
|
||||
|
||||
dp_packet_batch_apply_cutlen(batch);
|
||||
|
||||
for (int i = 0; i < cnt; i++) {
|
||||
int size = dp_packet_size(batch->packets[i]);
|
||||
|
||||
size -= dp_packet_get_cutlen(batch->packets[i]);
|
||||
dp_packet_set_size(batch->packets[i], size);
|
||||
|
||||
if (OVS_UNLIKELY(size > dev->max_packet_len)) {
|
||||
if (next_tx_idx != i) {
|
||||
temp_cnt = i - next_tx_idx;
|
||||
|
Reference in New Issue
Block a user