diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igb')
| -rw-r--r-- | drivers/net/ethernet/intel/igb/e1000_82575.c | 33 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/igb/igb_hwmon.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 4 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/igb/igb_ptp.c | 2 | 
4 files changed, 23 insertions, 18 deletions
diff --git a/drivers/net/ethernet/intel/igb/e1000_82575.c b/drivers/net/ethernet/intel/igb/e1000_82575.c index b64542acfa3..12b1d848080 100644 --- a/drivers/net/ethernet/intel/igb/e1000_82575.c +++ b/drivers/net/ethernet/intel/igb/e1000_82575.c @@ -1818,27 +1818,32 @@ out:   **/  void igb_vmdq_set_anti_spoofing_pf(struct e1000_hw *hw, bool enable, int pf)  { -	u32 dtxswc; +	u32 reg_val, reg_offset;  	switch (hw->mac.type) {  	case e1000_82576: +		reg_offset = E1000_DTXSWC; +		break;  	case e1000_i350: -		dtxswc = rd32(E1000_DTXSWC); -		if (enable) { -			dtxswc |= (E1000_DTXSWC_MAC_SPOOF_MASK | -				   E1000_DTXSWC_VLAN_SPOOF_MASK); -			/* The PF can spoof - it has to in order to -			 * support emulation mode NICs */ -			dtxswc ^= (1 << pf | 1 << (pf + MAX_NUM_VFS)); -		} else { -			dtxswc &= ~(E1000_DTXSWC_MAC_SPOOF_MASK | -				    E1000_DTXSWC_VLAN_SPOOF_MASK); -		} -		wr32(E1000_DTXSWC, dtxswc); +		reg_offset = E1000_TXSWC;  		break;  	default: -		break; +		return; +	} + +	reg_val = rd32(reg_offset); +	if (enable) { +		reg_val |= (E1000_DTXSWC_MAC_SPOOF_MASK | +			     E1000_DTXSWC_VLAN_SPOOF_MASK); +		/* The PF can spoof - it has to in order to +		 * support emulation mode NICs +		 */ +		reg_val ^= (1 << pf | 1 << (pf + MAX_NUM_VFS)); +	} else { +		reg_val &= ~(E1000_DTXSWC_MAC_SPOOF_MASK | +			     E1000_DTXSWC_VLAN_SPOOF_MASK);  	} +	wr32(reg_offset, reg_val);  }  /** diff --git a/drivers/net/ethernet/intel/igb/igb_hwmon.c b/drivers/net/ethernet/intel/igb/igb_hwmon.c index 4623502054d..0478a1abe54 100644 --- a/drivers/net/ethernet/intel/igb/igb_hwmon.c +++ b/drivers/net/ethernet/intel/igb/igb_hwmon.c @@ -39,7 +39,7 @@  #include <linux/pci.h>  #ifdef CONFIG_IGB_HWMON -struct i2c_board_info i350_sensor_info = { +static struct i2c_board_info i350_sensor_info = {  	I2C_BOARD_INFO("i350bb", (0Xf8 >> 1)),  }; diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 4dbd62968c7..8496adfc6a6 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -2542,8 +2542,8 @@ static void igb_probe_vfs(struct igb_adapter *adapter)  	if ((hw->mac.type == e1000_i210) || (hw->mac.type == e1000_i211))  		return; -	igb_enable_sriov(pdev, max_vfs);  	pci_sriov_set_totalvfs(pdev, 7); +	igb_enable_sriov(pdev, max_vfs);  #endif /* CONFIG_PCI_IOV */  } @@ -2652,7 +2652,7 @@ static int igb_sw_init(struct igb_adapter *adapter)  		if (max_vfs > 7) {  			dev_warn(&pdev->dev,  				 "Maximum of 7 VFs per PF, using max\n"); -			adapter->vfs_allocated_count = 7; +			max_vfs = adapter->vfs_allocated_count = 7;  		} else  			adapter->vfs_allocated_count = max_vfs;  		if (adapter->vfs_allocated_count) diff --git a/drivers/net/ethernet/intel/igb/igb_ptp.c b/drivers/net/ethernet/intel/igb/igb_ptp.c index 0987822359f..0a237507ee8 100644 --- a/drivers/net/ethernet/intel/igb/igb_ptp.c +++ b/drivers/net/ethernet/intel/igb/igb_ptp.c @@ -740,7 +740,7 @@ void igb_ptp_init(struct igb_adapter *adapter)  	case e1000_82576:  		snprintf(adapter->ptp_caps.name, 16, "%pm", netdev->dev_addr);  		adapter->ptp_caps.owner = THIS_MODULE; -		adapter->ptp_caps.max_adj = 1000000000; +		adapter->ptp_caps.max_adj = 999999881;  		adapter->ptp_caps.n_ext_ts = 0;  		adapter->ptp_caps.pps = 0;  		adapter->ptp_caps.adjfreq = igb_ptp_adjfreq_82576;  |