hyperv/hn: Cap default # of rings to 8.

8 gives the best performance in both Azure and local Hyper-V on both
10Ge and 40Ge. More rings are still allowed by manual configuration.

Reviewed by:	Dexuan Cui <decui microsoft com>
MFC after:	1 week
Sponsored by:	Microsoft OSTC
Differential Revision:	https://reviews.freebsd.org/D5879
This commit is contained in:
Sepherosa Ziehau 2016-04-11 06:31:52 +00:00
parent 083b2c353d
commit 0e86334196

View File

@ -136,6 +136,8 @@ __FBSDID("$FreeBSD$");
#define HN_LROENT_CNT_DEF 128
#define HN_RING_CNT_DEF_MAX 8
#define HN_RNDIS_MSG_LEN \
(sizeof(rndis_msg) + \
RNDIS_HASH_PPI_SIZE + \
@ -460,8 +462,14 @@ netvsc_attach(device_t dev)
* The # of RX rings to use is same as the # of channels to use.
*/
ring_cnt = hn_chan_cnt;
if (ring_cnt <= 0 || ring_cnt > mp_ncpus)
if (ring_cnt <= 0) {
/* Default */
ring_cnt = mp_ncpus;
if (ring_cnt > HN_RING_CNT_DEF_MAX)
ring_cnt = HN_RING_CNT_DEF_MAX;
} else if (ring_cnt > mp_ncpus) {
ring_cnt = mp_ncpus;
}
tx_ring_cnt = hn_tx_ring_cnt;
if (tx_ring_cnt <= 0 || tx_ring_cnt > ring_cnt)