Fix port throughput related statistics for i40e virtual functions
[samplevnf.git] / VNFs / DPPD-PROX / handle_qinq_encap4.c
index 0b31660..e5c16af 100644 (file)
@@ -152,7 +152,7 @@ static void init_task_qinq_encap4(struct task_base *tbase, struct task_args *tar
 
        struct prox_port_cfg *port = find_reachable_port(targ);
        if (port) {
-               task->offload_crc = port->capabilities.tx_offload_cksum;
+               task->offload_crc = port->requested_tx_offload & (DEV_TX_OFFLOAD_IPV4_CKSUM | DEV_TX_OFFLOAD_UDP_CKSUM);
        }
 
        /* TODO: check if it is not necessary to limit reverse mapping
@@ -163,6 +163,10 @@ static void init_task_qinq_encap4(struct task_base *tbase, struct task_args *tar
        }
 
        /* task->src_mac[entry->port_idx] = *(uint64_t*)&prox_port_cfg[entry->port_idx].eth_addr; */
+       if (targ->runtime_flags & TASK_CLASSIFY) {
+               int rc = init_port_sched(&task->sched_port, targ);
+               PROX_PANIC(rc, "Did not find any QoS task to transmit to => undefined sched_port parameters\n");
+       }
 }
 
 static void arp_msg(struct task_base *tbase, void **data, uint16_t n_msgs)
@@ -541,7 +545,7 @@ static inline uint8_t handle_qinq_encap4(struct task_qinq_encap4 *task, struct c
                uint8_t queue = task->dscp[cpe_pkt->ipv4_hdr.type_of_service >> 2] & 0x3;
                uint8_t tc = task->dscp[cpe_pkt->ipv4_hdr.type_of_service >> 2] >> 2;
 
-               rte_sched_port_pkt_write(mbuf, 0, entry->user, tc, queue, 0);
+               prox_rte_sched_port_pkt_write(task->sched_port, mbuf, 0, entry->user, tc, queue, 0);
        }
 #ifdef ENABLE_EXTRA_USER_STATISTICS
        task->stats_per_user[entry->user]++;