diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc/igc_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 41 | 
1 files changed, 19 insertions, 22 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 81c21a893ede..2e1cfbd82f4f 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -3385,7 +3385,7 @@ static int igc_flex_filter_select(struct igc_adapter *adapter,  	u32 fhftsl;  	if (input->index >= MAX_FLEX_FILTER) { -		dev_err(&adapter->pdev->dev, "Wrong Flex Filter index selected!\n"); +		netdev_err(adapter->netdev, "Wrong Flex Filter index selected!\n");  		return -EINVAL;  	} @@ -3420,7 +3420,6 @@ static int igc_flex_filter_select(struct igc_adapter *adapter,  static int igc_write_flex_filter_ll(struct igc_adapter *adapter,  				    struct igc_flex_filter *input)  { -	struct device *dev = &adapter->pdev->dev;  	struct igc_hw *hw = &adapter->hw;  	u8 *data = input->data;  	u8 *mask = input->mask; @@ -3434,7 +3433,7 @@ static int igc_write_flex_filter_ll(struct igc_adapter *adapter,  	 * out early to avoid surprises later.  	 */  	if (input->length % 8 != 0) { -		dev_err(dev, "The length of a flex filter has to be 8 byte aligned!\n"); +		netdev_err(adapter->netdev, "The length of a flex filter has to be 8 byte aligned!\n");  		return -EINVAL;  	} @@ -3504,8 +3503,8 @@ static int igc_write_flex_filter_ll(struct igc_adapter *adapter,  	}  	wr32(IGC_WUFC, wufc); -	dev_dbg(&adapter->pdev->dev, "Added flex filter %u to HW.\n", -		input->index); +	netdev_dbg(adapter->netdev, "Added flex filter %u to HW.\n", +		   input->index);  	return 0;  } @@ -3577,9 +3576,9 @@ static bool igc_flex_filter_in_use(struct igc_adapter *adapter)  static int igc_add_flex_filter(struct igc_adapter *adapter,  			       struct igc_nfc_rule *rule)  { -	struct igc_flex_filter flex = { };  	struct igc_nfc_filter *filter = &rule->filter;  	unsigned int eth_offset, user_offset; +	struct igc_flex_filter flex = { };  	int ret, index;  	bool vlan; @@ -3615,10 +3614,12 @@ static int igc_add_flex_filter(struct igc_adapter *adapter,  					  ETH_ALEN, NULL);  	/* Add VLAN etype */ -	if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_ETYPE) -		igc_flex_filter_add_field(&flex, &filter->vlan_etype, 12, -					  sizeof(filter->vlan_etype), -					  NULL); +	if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_ETYPE) { +		__be16 vlan_etype = cpu_to_be16(filter->vlan_etype); + +		igc_flex_filter_add_field(&flex, &vlan_etype, 12, +					  sizeof(vlan_etype), NULL); +	}  	/* Add VLAN TCI */  	if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_TCI) @@ -5276,7 +5277,7 @@ igc_features_check(struct sk_buff *skb, struct net_device *dev,  	unsigned int network_hdr_len, mac_hdr_len;  	/* Make certain the headers can be described by a context descriptor */ -	mac_hdr_len = skb_network_header(skb) - skb->data; +	mac_hdr_len = skb_network_offset(skb);  	if (unlikely(mac_hdr_len > IGC_MAX_MAC_HDR_LEN))  		return features & ~(NETIF_F_HW_CSUM |  				    NETIF_F_SCTP_CRC | @@ -5302,25 +5303,22 @@ igc_features_check(struct sk_buff *skb, struct net_device *dev,  static void igc_tsync_interrupt(struct igc_adapter *adapter)  { -	u32 ack, tsauxc, sec, nsec, tsicr;  	struct igc_hw *hw = &adapter->hw; +	u32 tsauxc, sec, nsec, tsicr;  	struct ptp_clock_event event;  	struct timespec64 ts;  	tsicr = rd32(IGC_TSICR); -	ack = 0;  	if (tsicr & IGC_TSICR_SYS_WRAP) {  		event.type = PTP_CLOCK_PPS;  		if (adapter->ptp_caps.pps)  			ptp_clock_event(adapter->ptp_clock, &event); -		ack |= IGC_TSICR_SYS_WRAP;  	}  	if (tsicr & IGC_TSICR_TXTS) {  		/* retrieve hardware timestamp */  		igc_ptp_tx_tstamp_event(adapter); -		ack |= IGC_TSICR_TXTS;  	}  	if (tsicr & IGC_TSICR_TT0) { @@ -5334,7 +5332,6 @@ static void igc_tsync_interrupt(struct igc_adapter *adapter)  		wr32(IGC_TSAUXC, tsauxc);  		adapter->perout[0].start = ts;  		spin_unlock(&adapter->tmreg_lock); -		ack |= IGC_TSICR_TT0;  	}  	if (tsicr & IGC_TSICR_TT1) { @@ -5348,7 +5345,6 @@ static void igc_tsync_interrupt(struct igc_adapter *adapter)  		wr32(IGC_TSAUXC, tsauxc);  		adapter->perout[1].start = ts;  		spin_unlock(&adapter->tmreg_lock); -		ack |= IGC_TSICR_TT1;  	}  	if (tsicr & IGC_TSICR_AUTT0) { @@ -5358,7 +5354,6 @@ static void igc_tsync_interrupt(struct igc_adapter *adapter)  		event.index = 0;  		event.timestamp = sec * NSEC_PER_SEC + nsec;  		ptp_clock_event(adapter->ptp_clock, &event); -		ack |= IGC_TSICR_AUTT0;  	}  	if (tsicr & IGC_TSICR_AUTT1) { @@ -5368,11 +5363,7 @@ static void igc_tsync_interrupt(struct igc_adapter *adapter)  		event.index = 1;  		event.timestamp = sec * NSEC_PER_SEC + nsec;  		ptp_clock_event(adapter->ptp_clock, &event); -		ack |= IGC_TSICR_AUTT1;  	} - -	/* acknowledge the interrupts */ -	wr32(IGC_TSICR, ack);  }  /** @@ -6976,6 +6967,12 @@ static int igc_probe(struct pci_dev *pdev,  	pm_runtime_put_noidle(&pdev->dev); +	if (IS_ENABLED(CONFIG_IGC_LEDS)) { +		err = igc_led_setup(adapter); +		if (err) +			goto err_register; +	} +  	return 0;  err_register:  | 
