diff options
Diffstat (limited to 'drivers/net/ethernet/intel/i40e/i40e_dcb.c')
| -rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_dcb.c | 15 | 
1 files changed, 10 insertions, 5 deletions
| diff --git a/drivers/net/ethernet/intel/i40e/i40e_dcb.c b/drivers/net/ethernet/intel/i40e/i40e_dcb.c index 0fab3a9b51d9..55079fe3ed63 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_dcb.c +++ b/drivers/net/ethernet/intel/i40e/i40e_dcb.c @@ -1,7 +1,7 @@  /*******************************************************************************   *   * Intel Ethernet Controller XL710 Family Linux Driver - * Copyright(c) 2013 - 2014 Intel Corporation. + * Copyright(c) 2013 - 2017 Intel Corporation.   *   * This program is free software; you can redistribute it and/or modify it   * under the terms and conditions of the GNU General Public License, @@ -390,6 +390,8 @@ static void i40e_parse_cee_app_tlv(struct i40e_cee_feat_tlv *tlv,  	if (!dcbcfg->numapps)  		return; +	if (dcbcfg->numapps > I40E_DCBX_MAX_APPS) +		dcbcfg->numapps = I40E_DCBX_MAX_APPS;  	for (i = 0; i < dcbcfg->numapps; i++) {  		u8 up, selector; @@ -618,14 +620,17 @@ static void i40e_cee_to_dcb_v1_config(  	/* CEE PG data to ETS config */  	dcbcfg->etscfg.maxtcs = cee_cfg->oper_num_tc; +	/* Note that the FW creates the oper_prio_tc nibbles reversed +	 * from those in the CEE Priority Group sub-TLV. +	 */  	for (i = 0; i < 4; i++) {  		tc = (u8)((cee_cfg->oper_prio_tc[i] & -			 I40E_CEE_PGID_PRIO_1_MASK) >> -			 I40E_CEE_PGID_PRIO_1_SHIFT); -		dcbcfg->etscfg.prioritytable[i*2] =  tc; -		tc = (u8)((cee_cfg->oper_prio_tc[i] &  			 I40E_CEE_PGID_PRIO_0_MASK) >>  			 I40E_CEE_PGID_PRIO_0_SHIFT); +		dcbcfg->etscfg.prioritytable[i * 2] =  tc; +		tc = (u8)((cee_cfg->oper_prio_tc[i] & +			 I40E_CEE_PGID_PRIO_1_MASK) >> +			 I40E_CEE_PGID_PRIO_1_SHIFT);  		dcbcfg->etscfg.prioritytable[i*2 + 1] = tc;  	} | 
