diff options
Diffstat (limited to 'drivers/net/ethernet/qlogic')
| -rw-r--r-- | drivers/net/ethernet/qlogic/netxen/netxen_nic.h | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c | 12 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qed/qed_dev.c | 5 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qed/qed_l2.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qed/qed_ll2.c | 3 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qed/qed_main.c | 9 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qed/qed_sriov.c | 5 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qede/qede.h | 6 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 25 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qede/qede_main.c | 35 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c | 8 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | 4 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 4 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c | 1 | 
16 files changed, 83 insertions, 41 deletions
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic.h b/drivers/net/ethernet/qlogic/netxen/netxen_nic.h index f13fa7396aef..3d36d23df0c6 100644 --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic.h +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic.h @@ -854,7 +854,7 @@ typedef struct {  	   The following is packed:  	   - N cardrsp_rds_rings  	   - N cardrs_sds_rings */ -	char data[0]; +	char data[];  } nx_cardrsp_rx_ctx_t;  #define SIZEOF_HOSTRQ_RX(HOSTRQ_RX, rds_rings, sds_rings)	\ diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c index de8d54b23f73..1d1e183d3a8b 100644 --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c @@ -18,7 +18,6 @@  #include <linux/ipv6.h>  #include <linux/inetdevice.h>  #include <linux/sysfs.h> -#include <linux/aer.h>  MODULE_DESCRIPTION("QLogic/NetXen (1/10) GbE Intelligent Ethernet Driver");  MODULE_LICENSE("GPL"); @@ -1464,9 +1463,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	if ((err = pci_request_regions(pdev, netxen_nic_driver_name)))  		goto err_out_disable_pdev; -	if (NX_IS_REVISION_P3(pdev->revision)) -		pci_enable_pcie_error_reporting(pdev); -  	pci_set_master(pdev);  	netdev = alloc_etherdev(sizeof(struct netxen_adapter)); @@ -1603,8 +1599,6 @@ err_out_free_netdev:  	free_netdev(netdev);  err_out_free_res: -	if (NX_IS_REVISION_P3(pdev->revision)) -		pci_disable_pcie_error_reporting(pdev);  	pci_release_regions(pdev);  err_out_disable_pdev: @@ -1659,10 +1653,8 @@ static void netxen_nic_remove(struct pci_dev *pdev)  	netxen_release_firmware(adapter); -	if (NX_IS_REVISION_P3(pdev->revision)) { +	if (NX_IS_REVISION_P3(pdev->revision))  		netxen_cleanup_minidump(adapter); -		pci_disable_pcie_error_reporting(pdev); -	}  	pci_release_regions(pdev);  	pci_disable_device(pdev); @@ -1862,7 +1854,7 @@ netxen_tso_check(struct net_device *netdev,  	if (protocol == cpu_to_be16(ETH_P_8021Q)) { -		vh = (struct vlan_ethhdr *)skb->data; +		vh = skb_vlan_eth_hdr(skb);  		protocol = vh->h_vlan_encapsulated_proto;  		flags = FLAGS_VLAN_TAGGED; diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c index d61cd32ec3b6..86a93cac2647 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_dev.c +++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c @@ -5083,6 +5083,11 @@ static int qed_init_wfq_param(struct qed_hwfn *p_hwfn,  	num_vports = p_hwfn->qm_info.num_vports; +	if (num_vports < 2) { +		DP_NOTICE(p_hwfn, "Unexpected num_vports: %d\n", num_vports); +		return -EINVAL; +	} +  	/* Accounting for the vports which are configured for WFQ explicitly */  	for (i = 0; i < num_vports; i++) {  		u32 tmp_speed; diff --git a/drivers/net/ethernet/qlogic/qed/qed_l2.c b/drivers/net/ethernet/qlogic/qed/qed_l2.c index 2edd6bf64a3c..7776d3bdd459 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_l2.c +++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c @@ -1903,7 +1903,7 @@ void qed_get_vport_stats(struct qed_dev *cdev, struct qed_eth_stats *stats)  {  	u32 i; -	if (!cdev) { +	if (!cdev || cdev->recov_in_prog) {  		memset(stats, 0, sizeof(*stats));  		return;  	} diff --git a/drivers/net/ethernet/qlogic/qed/qed_ll2.c b/drivers/net/ethernet/qlogic/qed/qed_ll2.c index e5116a86cfbc..717a0b3f89bd 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_ll2.c +++ b/drivers/net/ethernet/qlogic/qed/qed_ll2.c @@ -646,13 +646,13 @@ static int qed_ll2_lb_rxq_handler(struct qed_hwfn *p_hwfn,  	struct qed_ll2_rx_queue *p_rx = &p_ll2_conn->rx_queue;  	u16 packet_length = 0, parse_flags = 0, vlan = 0;  	struct qed_ll2_rx_packet *p_pkt = NULL; -	u32 num_ooo_add_to_peninsula = 0, cid;  	union core_rx_cqe_union *cqe = NULL;  	u16 cq_new_idx = 0, cq_old_idx = 0;  	struct qed_ooo_buffer *p_buffer;  	struct ooo_opaque *ooo_opq;  	u8 placement_offset = 0;  	u8 cqe_type; +	u32 cid;  	cq_new_idx = le16_to_cpu(*p_rx->p_fw_cons);  	cq_old_idx = qed_chain_get_cons_idx(&p_rx->rcq_chain); @@ -762,7 +762,6 @@ static int qed_ll2_lb_rxq_handler(struct qed_hwfn *p_hwfn,  						   cid, ooo_opq->ooo_isle);  				break;  			case TCP_EVENT_ADD_PEN: -				num_ooo_add_to_peninsula++;  				qed_ooo_put_ready_buffer(p_hwfn,  							 p_hwfn->p_ooo_info,  							 p_buffer, true); diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c index c91898be7c03..f5af83342856 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_main.c +++ b/drivers/net/ethernet/qlogic/qed/qed_main.c @@ -23,7 +23,6 @@  #include <linux/qed/qed_if.h>  #include <linux/qed/qed_ll2_if.h>  #include <net/devlink.h> -#include <linux/aer.h>  #include <linux/phylink.h>  #include "qed.h" @@ -259,8 +258,6 @@ static void qed_free_pci(struct qed_dev *cdev)  {  	struct pci_dev *pdev = cdev->pdev; -	pci_disable_pcie_error_reporting(pdev); -  	if (cdev->doorbells && cdev->db_size)  		iounmap(cdev->doorbells);  	if (cdev->regview) @@ -366,12 +363,6 @@ static int qed_init_pci(struct qed_dev *cdev, struct pci_dev *pdev)  		return -ENOMEM;  	} -	/* AER (Advanced Error reporting) configuration */ -	rc = pci_enable_pcie_error_reporting(pdev); -	if (rc) -		DP_VERBOSE(cdev, NETIF_MSG_DRV, -			   "Failed to configure PCIe AER [%d]\n", rc); -  	return 0;  err2: diff --git a/drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c b/drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c index 6190adf965bc..f55eed092f25 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c +++ b/drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c @@ -422,7 +422,7 @@ qed_mfw_get_tlv_time_value(struct qed_mfw_tlv_time *p_time,  	if (p_time->hour > 23)  		p_time->hour = 0;  	if (p_time->min > 59) -		p_time->hour = 0; +		p_time->min = 0;  	if (p_time->msec > 999)  		p_time->msec = 0;  	if (p_time->usec > 999) diff --git a/drivers/net/ethernet/qlogic/qed/qed_sriov.c b/drivers/net/ethernet/qlogic/qed/qed_sriov.c index 2bf18748581d..fa167b1aa019 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_sriov.c +++ b/drivers/net/ethernet/qlogic/qed/qed_sriov.c @@ -4404,6 +4404,9 @@ qed_iov_configure_min_tx_rate(struct qed_dev *cdev, int vfid, u32 rate)  	}  	vf = qed_iov_get_vf_info(QED_LEADING_HWFN(cdev), (u16)vfid, true); +	if (!vf) +		return -EINVAL; +  	vport_id = vf->vport_id;  	return qed_configure_vport_wfq(cdev, vport_id, rate); @@ -5152,7 +5155,7 @@ static void qed_iov_handle_trust_change(struct qed_hwfn *hwfn)  		/* Validate that the VF has a configured vport */  		vf = qed_iov_get_vf_info(hwfn, i, true); -		if (!vf->vport_instance) +		if (!vf || !vf->vport_instance)  			continue;  		memset(¶ms, 0, sizeof(params)); diff --git a/drivers/net/ethernet/qlogic/qede/qede.h b/drivers/net/ethernet/qlogic/qede/qede.h index f90dcfe9ee68..4d83ceebdc49 100644 --- a/drivers/net/ethernet/qlogic/qede/qede.h +++ b/drivers/net/ethernet/qlogic/qede/qede.h @@ -6,8 +6,6 @@  #ifndef _QEDE_H_  #define _QEDE_H_ -#include <linux/compiler.h> -#include <linux/version.h>  #include <linux/workqueue.h>  #include <linux/netdevice.h>  #include <linux/interrupt.h> @@ -271,6 +269,10 @@ struct qede_dev {  #define QEDE_ERR_WARN			3  	struct qede_dump_info		dump_info; +	struct delayed_work		periodic_task; +	unsigned long			stats_coal_ticks; +	u32				stats_coal_usecs; +	spinlock_t			stats_lock; /* lock for vport stats access */  };  enum QEDE_STATE { diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c index 8034d812d5a0..95820cf1cd6c 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c +++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c @@ -4,7 +4,6 @@   * Copyright (c) 2019-2020 Marvell International Ltd.   */ -#include <linux/version.h>  #include <linux/types.h>  #include <linux/netdevice.h>  #include <linux/etherdevice.h> @@ -430,6 +429,8 @@ static void qede_get_ethtool_stats(struct net_device *dev,  		}  	} +	spin_lock(&edev->stats_lock); +  	for (i = 0; i < QEDE_NUM_STATS; i++) {  		if (qede_is_irrelevant_stat(edev, i))  			continue; @@ -439,6 +440,8 @@ static void qede_get_ethtool_stats(struct net_device *dev,  		buf++;  	} +	spin_unlock(&edev->stats_lock); +  	__qede_unlock(edev);  } @@ -830,6 +833,7 @@ out:  	coal->rx_coalesce_usecs = rx_coal;  	coal->tx_coalesce_usecs = tx_coal; +	coal->stats_block_coalesce_usecs = edev->stats_coal_usecs;  	return rc;  } @@ -843,6 +847,19 @@ int qede_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal,  	int i, rc = 0;  	u16 rxc, txc; +	if (edev->stats_coal_usecs != coal->stats_block_coalesce_usecs) { +		edev->stats_coal_usecs = coal->stats_block_coalesce_usecs; +		if (edev->stats_coal_usecs) { +			edev->stats_coal_ticks = usecs_to_jiffies(edev->stats_coal_usecs); +			schedule_delayed_work(&edev->periodic_task, 0); + +			DP_INFO(edev, "Configured stats coal ticks=%lu jiffies\n", +				edev->stats_coal_ticks); +		} else { +			cancel_delayed_work_sync(&edev->periodic_task); +		} +	} +  	if (!netif_running(dev)) {  		DP_INFO(edev, "Interface is down\n");  		return -EINVAL; @@ -2253,7 +2270,8 @@ out:  }  static const struct ethtool_ops qede_ethtool_ops = { -	.supported_coalesce_params	= ETHTOOL_COALESCE_USECS, +	.supported_coalesce_params	= ETHTOOL_COALESCE_USECS | +					  ETHTOOL_COALESCE_STATS_BLOCK_USECS,  	.get_link_ksettings		= qede_get_link_ksettings,  	.set_link_ksettings		= qede_set_link_ksettings,  	.get_drvinfo			= qede_get_drvinfo, @@ -2304,7 +2322,8 @@ static const struct ethtool_ops qede_ethtool_ops = {  };  static const struct ethtool_ops qede_vf_ethtool_ops = { -	.supported_coalesce_params	= ETHTOOL_COALESCE_USECS, +	.supported_coalesce_params	= ETHTOOL_COALESCE_USECS | +					  ETHTOOL_COALESCE_STATS_BLOCK_USECS,  	.get_link_ksettings		= qede_get_link_ksettings,  	.get_drvinfo			= qede_get_drvinfo,  	.get_msglevel			= qede_get_msglevel, diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c index 261f982ca40d..4b004a728190 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_main.c +++ b/drivers/net/ethernet/qlogic/qede/qede_main.c @@ -35,7 +35,6 @@  #include <net/ip6_checksum.h>  #include <linux/bitops.h>  #include <linux/vmalloc.h> -#include <linux/aer.h>  #include "qede.h"  #include "qede_ptp.h" @@ -308,6 +307,8 @@ void qede_fill_by_demand_stats(struct qede_dev *edev)  	edev->ops->get_vport_stats(edev->cdev, &stats); +	spin_lock(&edev->stats_lock); +  	p_common->no_buff_discards = stats.common.no_buff_discards;  	p_common->packet_too_big_discard = stats.common.packet_too_big_discard;  	p_common->ttl0_discard = stats.common.ttl0_discard; @@ -405,6 +406,8 @@ void qede_fill_by_demand_stats(struct qede_dev *edev)  		p_ah->tx_1519_to_max_byte_packets =  		    stats.ah.tx_1519_to_max_byte_packets;  	} + +	spin_unlock(&edev->stats_lock);  }  static void qede_get_stats64(struct net_device *dev, @@ -413,9 +416,10 @@ static void qede_get_stats64(struct net_device *dev,  	struct qede_dev *edev = netdev_priv(dev);  	struct qede_stats_common *p_common; -	qede_fill_by_demand_stats(edev);  	p_common = &edev->stats.common; +	spin_lock(&edev->stats_lock); +  	stats->rx_packets = p_common->rx_ucast_pkts + p_common->rx_mcast_pkts +  			    p_common->rx_bcast_pkts;  	stats->tx_packets = p_common->tx_ucast_pkts + p_common->tx_mcast_pkts + @@ -435,6 +439,8 @@ static void qede_get_stats64(struct net_device *dev,  		stats->collisions = edev->stats.bb.tx_total_collisions;  	stats->rx_crc_errors = p_common->rx_crc_errors;  	stats->rx_frame_errors = p_common->rx_align_errors; + +	spin_unlock(&edev->stats_lock);  }  #ifdef CONFIG_QED_SRIOV @@ -1064,6 +1070,23 @@ static void qede_unlock(struct qede_dev *edev)  	rtnl_unlock();  } +static void qede_periodic_task(struct work_struct *work) +{ +	struct qede_dev *edev = container_of(work, struct qede_dev, +					     periodic_task.work); + +	qede_fill_by_demand_stats(edev); +	schedule_delayed_work(&edev->periodic_task, edev->stats_coal_ticks); +} + +static void qede_init_periodic_task(struct qede_dev *edev) +{ +	INIT_DELAYED_WORK(&edev->periodic_task, qede_periodic_task); +	spin_lock_init(&edev->stats_lock); +	edev->stats_coal_usecs = USEC_PER_SEC; +	edev->stats_coal_ticks = usecs_to_jiffies(USEC_PER_SEC); +} +  static void qede_sp_task(struct work_struct *work)  {  	struct qede_dev *edev = container_of(work, struct qede_dev, @@ -1083,6 +1106,7 @@ static void qede_sp_task(struct work_struct *work)  	 */  	if (test_and_clear_bit(QEDE_SP_RECOVERY, &edev->sp_flags)) { +		cancel_delayed_work_sync(&edev->periodic_task);  #ifdef CONFIG_QED_SRIOV  		/* SRIOV must be disabled outside the lock to avoid a deadlock.  		 * The recovery of the active VFs is currently not supported. @@ -1273,6 +1297,7 @@ static int __qede_probe(struct pci_dev *pdev, u32 dp_module, u8 dp_level,  		 */  		INIT_DELAYED_WORK(&edev->sp_task, qede_sp_task);  		mutex_init(&edev->qede_lock); +		qede_init_periodic_task(edev);  		rc = register_netdev(edev->ndev);  		if (rc) { @@ -1297,6 +1322,11 @@ static int __qede_probe(struct pci_dev *pdev, u32 dp_module, u8 dp_level,  	edev->rx_copybreak = QEDE_RX_HDR_SIZE;  	qede_log_probe(edev); + +	/* retain user config (for example - after recovery) */ +	if (edev->stats_coal_usecs) +		schedule_delayed_work(&edev->periodic_task, 0); +  	return 0;  err4: @@ -1365,6 +1395,7 @@ static void __qede_remove(struct pci_dev *pdev, enum qede_remove_mode mode)  		unregister_netdev(ndev);  		cancel_delayed_work_sync(&edev->sp_task); +		cancel_delayed_work_sync(&edev->periodic_task);  		edev->ops->common->set_power_state(cdev, PCI_D0); diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c index 2fd5c6fdb500..bcef8ab715bf 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c @@ -8,7 +8,6 @@  #include <linux/ipv6.h>  #include <linux/ethtool.h>  #include <linux/interrupt.h> -#include <linux/aer.h>  #include "qlcnic.h"  #include "qlcnic_sriov.h" diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c index 87f76bac2e46..eb827b86ecae 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c @@ -628,7 +628,13 @@ int qlcnic_fw_create_ctx(struct qlcnic_adapter *dev)  	int i, err, ring;  	if (dev->flags & QLCNIC_NEED_FLR) { -		pci_reset_function(dev->pdev); +		err = pci_reset_function(dev->pdev); +		if (err) { +			dev_err(&dev->pdev->dev, +				"Adapter reset failed (%d). Please reboot\n", +				err); +			return err; +		}  		dev->flags &= ~QLCNIC_NEED_FLR;  	} diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c index 92930a055cbc..41894d154013 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c @@ -318,7 +318,7 @@ static void qlcnic_send_filter(struct qlcnic_adapter *adapter,  	if (adapter->flags & QLCNIC_VLAN_FILTERING) {  		if (protocol == ETH_P_8021Q) { -			vh = (struct vlan_ethhdr *)skb->data; +			vh = skb_vlan_eth_hdr(skb);  			vlan_id = ntohs(vh->h_vlan_TCI);  		} else if (skb_vlan_tag_present(skb)) {  			vlan_id = skb_vlan_tag_get(skb); @@ -468,7 +468,7 @@ static int qlcnic_tx_pkt(struct qlcnic_adapter *adapter,  	u32 producer = tx_ring->producer;  	if (protocol == ETH_P_8021Q) { -		vh = (struct vlan_ethhdr *)skb->data; +		vh = skb_vlan_eth_hdr(skb);  		flags = QLCNIC_FLAGS_VLAN_TAGGED;  		vlan_tci = ntohs(vh->h_vlan_TCI);  		protocol = ntohs(vh->h_vlan_encapsulated_proto); diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index 44dac3c0908e..90df4a0909fa 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c @@ -12,7 +12,6 @@  #include <net/ip.h>  #include <linux/ipv6.h>  #include <linux/inetdevice.h> -#include <linux/aer.h>  #include <linux/log2.h>  #include <linux/pci.h>  #include <net/vxlan.h> @@ -2445,7 +2444,6 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  		goto err_out_disable_pdev;  	pci_set_master(pdev); -	pci_enable_pcie_error_reporting(pdev);  	ahw = kzalloc(sizeof(struct qlcnic_hardware_context), GFP_KERNEL);  	if (!ahw) { @@ -2675,7 +2673,6 @@ err_out_free_hw_res:  	kfree(ahw);  err_out_free_res: -	pci_disable_pcie_error_reporting(pdev);  	pci_release_regions(pdev);  err_out_disable_pdev: @@ -2757,7 +2754,6 @@ static void qlcnic_remove(struct pci_dev *pdev)  	qlcnic_release_firmware(adapter); -	pci_disable_pcie_error_reporting(pdev);  	pci_release_regions(pdev);  	pci_disable_device(pdev); diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c index 5c2edb715d3e..74125188beb8 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c @@ -12,7 +12,6 @@  #include <linux/ipv6.h>  #include <linux/inetdevice.h>  #include <linux/sysfs.h> -#include <linux/aer.h>  #include <linux/log2.h>  #ifdef CONFIG_QLCNIC_HWMON  #include <linux/hwmon.h>  |