void pktgen_packet_rate(port_info_t *info) { uint64_t wire_size = (pktgen_wire_size(info) * 8); uint64_t link = (uint64_t)info->link.link_speed * Million; uint64_t pps = ((link / wire_size) * info->tx_rate) / 100; uint64_t cpp = (pps > 0) ? (pktgen.hz / pps) : (pktgen.hz / 4); info->tx_pps = pps; info->tx_cycles = ((cpp * info->tx_burst) / wr_get_port_txcnt(pktgen.l2p, info->pid)); }
void pktgen_packet_rate(port_info_t *info) { /* 0 1 2 3 4 5 6 7 8 9 10 */ static int64_t ff[11] = { 31, 30, 25, 30, 17, 17, 17, 20, 50, 60, 90 }; uint64_t wire_size = (pktgen_wire_size(info) * 8); uint64_t link = (uint64_t)info->link.link_speed * Million; uint64_t pps = ((link / wire_size) * info->tx_rate) / 100; uint64_t cpp = (pps > 0) ? (pktgen.hz / pps) : (pktgen.hz / 4); info->tx_pps = pps; info->tx_cycles = ((cpp * info->tx_burst) / wr_get_port_txcnt(pktgen.l2p, info->pid)); info->tx_cycles -= ff[info->tx_rate / 10]; }