diff options
Diffstat (limited to 'drivers/net/ethernet/emulex')
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be.h | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.c | 7 | ||||
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 16 | 
3 files changed, 16 insertions, 8 deletions
| diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h index f4825db5d179..5878df619b53 100644 --- a/drivers/net/ethernet/emulex/benet/be.h +++ b/drivers/net/ethernet/emulex/benet/be.h @@ -503,6 +503,7 @@ struct be_adapter {  };  #define be_physfn(adapter)		(!adapter->virtfn) +#define be_virtfn(adapter)		(adapter->virtfn)  #define	sriov_enabled(adapter)		(adapter->num_vfs > 0)  #define sriov_want(adapter)             (be_physfn(adapter) &&	\  					 (num_vfs || pci_num_vf(adapter->pdev))) diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index dbcd5262c016..e0e8bc1ef14c 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c @@ -1032,6 +1032,13 @@ int be_cmd_cq_create(struct be_adapter *adapter, struct be_queue_info *cq,  	} else {  		req->hdr.version = 2;  		req->page_size = 1; /* 1 for 4K */ + +		/* coalesce-wm field in this cmd is not relevant to Lancer. +		 * Lancer uses COMMON_MODIFY_CQ to set this field +		 */ +		if (!lancer_chip(adapter)) +			AMAP_SET_BITS(struct amap_cq_context_v2, coalescwm, +				      ctxt, coalesce_wm);  		AMAP_SET_BITS(struct amap_cq_context_v2, nodelay, ctxt,  								no_delay);  		AMAP_SET_BITS(struct amap_cq_context_v2, count, ctxt, diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index abde97471636..fee64bf10446 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -2658,8 +2658,8 @@ static int be_close(struct net_device *netdev)  	be_roce_dev_close(adapter); -	for_all_evt_queues(adapter, eqo, i) { -		if (adapter->flags & BE_FLAGS_NAPI_ENABLED) { +	if (adapter->flags & BE_FLAGS_NAPI_ENABLED) { +		for_all_evt_queues(adapter, eqo, i) {  			napi_disable(&eqo->napi);  			be_disable_busy_poll(eqo);  		} @@ -3253,12 +3253,10 @@ static int be_mac_setup(struct be_adapter *adapter)  		memcpy(mac, adapter->netdev->dev_addr, ETH_ALEN);  	} -	/* On BE3 VFs this cmd may fail due to lack of privilege. -	 * Ignore the failure as in this case pmac_id is fetched -	 * in the IFACE_CREATE cmd. -	 */ -	be_cmd_pmac_add(adapter, mac, adapter->if_handle, -			&adapter->pmac_id[0], 0); +	/* For BE3-R VFs, the PF programs the initial MAC address */ +	if (!(BEx_chip(adapter) && be_virtfn(adapter))) +		be_cmd_pmac_add(adapter, mac, adapter->if_handle, +				&adapter->pmac_id[0], 0);  	return 0;  } @@ -4599,6 +4597,7 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state)  	if (adapter->wol)  		be_setup_wol(adapter, true); +	be_intr_set(adapter, false);  	cancel_delayed_work_sync(&adapter->func_recovery_work);  	netif_device_detach(netdev); @@ -4634,6 +4633,7 @@ static int be_resume(struct pci_dev *pdev)  	if (status)  		return status; +	be_intr_set(adapter, true);  	/* tell fw we're ready to fire cmds */  	status = be_cmd_fw_init(adapter);  	if (status) |