From fc0f950d52eda8bfcb852d4600caae13d1adda78 Mon Sep 17 00:00:00 2001 From: luigi Date: Fri, 10 Jan 2014 16:01:44 +0000 Subject: [PATCH] Fix netmap emulation when NICs attached to a VALE switch have a different number of tx and rx rings Submitted by: Vincenzo Maffione --- sys/dev/netmap/netmap_vale.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sys/dev/netmap/netmap_vale.c b/sys/dev/netmap/netmap_vale.c index f988b84e78b2..cec2ac15a7e9 100644 --- a/sys/dev/netmap/netmap_vale.c +++ b/sys/dev/netmap/netmap_vale.c @@ -1835,12 +1835,15 @@ netmap_bwrap_register(struct netmap_adapter *na, int onoff) hostna->up.na_lut_objtotal = na->na_lut_objtotal; } - /* cross-link the netmap rings */ - for (i = 0; i <= na->num_tx_rings; i++) { + /* cross-link the netmap rings + * The original number of rings comes from hwna, + * rx rings on one side equals tx rings on the other. + */ + for (i = 0; i <= na->num_rx_rings; i++) { hwna->tx_rings[i].nkr_num_slots = na->rx_rings[i].nkr_num_slots; hwna->tx_rings[i].ring = na->rx_rings[i].ring; } - for (i = 0; i <= na->num_rx_rings; i++) { + for (i = 0; i <= na->num_tx_rings; i++) { hwna->rx_rings[i].nkr_num_slots = na->tx_rings[i].nkr_num_slots; hwna->rx_rings[i].ring = na->tx_rings[i].ring; }