mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
rocker: mark copy-to-cpu pkts as forwarding offloaded
For pkts copied to the CPU (to be processed by guest driver), mark the Rx descriptor with flag "OFFLOAD_FWD" to indicate device has already forwarded pkt. The guest driver will use this indicator to avoid duplicate forwarding in the guest OS. Examples include bcast/mcast/unknown ucast pkts flooded to bridged ports. We want to avoid both the device and the guest bridge driver flooding these pkts, which would result in duplicates pkts on the wire. Packet sampling, such as sFlow, can also use this technique to mark pkts for the guest OS to record but otherwise drop. Signed-off-by: Scott Feldman <sfeldma@gmail.com> Message-id: 1435746792-41278-5-git-send-email-sfeldma@gmail.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
96497af0af
commit
d0d2555852
5 changed files with 15 additions and 3 deletions
|
@ -825,6 +825,8 @@ static OfDpaGroup *of_dpa_group_alloc(uint32_t id)
|
|||
static void of_dpa_output_l2_interface(OfDpaFlowContext *fc,
|
||||
OfDpaGroup *group)
|
||||
{
|
||||
uint8_t copy_to_cpu = fc->action_set.apply.copy_to_cpu;
|
||||
|
||||
if (group->l2_interface.pop_vlan) {
|
||||
of_dpa_flow_pkt_strip_vlan(fc);
|
||||
}
|
||||
|
@ -837,7 +839,8 @@ static void of_dpa_output_l2_interface(OfDpaFlowContext *fc,
|
|||
*/
|
||||
|
||||
if (group->l2_interface.out_pport == 0) {
|
||||
rx_produce(fc->of_dpa->world, fc->in_pport, fc->iov, fc->iovcnt);
|
||||
rx_produce(fc->of_dpa->world, fc->in_pport, fc->iov, fc->iovcnt,
|
||||
copy_to_cpu);
|
||||
} else if (group->l2_interface.out_pport != fc->in_pport) {
|
||||
rocker_port_eg(world_rocker(fc->of_dpa->world),
|
||||
group->l2_interface.out_pport,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue