diff options
Diffstat (limited to 'drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c')
| -rw-r--r-- | drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c | 44 | 
1 files changed, 22 insertions, 22 deletions
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c index 2dc0bac76717..66d12f5b4ca8 100644 --- a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c +++ b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c @@ -80,8 +80,9 @@ int i40evf_send_api_ver(struct i40evf_adapter *adapter)   * @adapter: adapter structure   *   * Compare API versions with the PF. Must be called after admin queue is - * initialized. Returns 0 if API versions match, -EIO if - * they do not, or I40E_ERR_ADMIN_QUEUE_NO_WORK if the admin queue is empty. + * initialized. Returns 0 if API versions match, -EIO if they do not, + * I40E_ERR_ADMIN_QUEUE_NO_WORK if the admin queue is empty, and any errors + * from the firmware are propagated.   **/  int i40evf_verify_api_ver(struct i40evf_adapter *adapter)  { @@ -102,13 +103,13 @@ int i40evf_verify_api_ver(struct i40evf_adapter *adapter)  		goto out_alloc;  	err = (i40e_status)le32_to_cpu(event.desc.cookie_low); -	if (err) { -		err = -EIO; +	if (err)  		goto out_alloc; -	}  	if ((enum i40e_virtchnl_ops)le32_to_cpu(event.desc.cookie_high) !=  	    I40E_VIRTCHNL_OP_VERSION) { +		dev_info(&adapter->pdev->dev, "Invalid reply type %d from PF\n", +			 le32_to_cpu(event.desc.cookie_high));  		err = -EIO;  		goto out_alloc;  	} @@ -247,11 +248,11 @@ void i40evf_configure_queues(struct i40evf_adapter *adapter)  		vqpi++;  	} +	adapter->aq_pending |= I40EVF_FLAG_AQ_CONFIGURE_QUEUES; +	adapter->aq_required &= ~I40EVF_FLAG_AQ_CONFIGURE_QUEUES;  	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES,  			   (u8 *)vqci, len);  	kfree(vqci); -	adapter->aq_pending |= I40EVF_FLAG_AQ_CONFIGURE_QUEUES; -	adapter->aq_required &= ~I40EVF_FLAG_AQ_CONFIGURE_QUEUES;  }  /** @@ -274,10 +275,10 @@ void i40evf_enable_queues(struct i40evf_adapter *adapter)  	vqs.vsi_id = adapter->vsi_res->vsi_id;  	vqs.tx_queues = (1 << adapter->vsi_res->num_queue_pairs) - 1;  	vqs.rx_queues = vqs.tx_queues; -	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ENABLE_QUEUES, -			   (u8 *)&vqs, sizeof(vqs));  	adapter->aq_pending |= I40EVF_FLAG_AQ_ENABLE_QUEUES;  	adapter->aq_required &= ~I40EVF_FLAG_AQ_ENABLE_QUEUES; +	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ENABLE_QUEUES, +			   (u8 *)&vqs, sizeof(vqs));  }  /** @@ -300,10 +301,10 @@ void i40evf_disable_queues(struct i40evf_adapter *adapter)  	vqs.vsi_id = adapter->vsi_res->vsi_id;  	vqs.tx_queues = (1 << adapter->vsi_res->num_queue_pairs) - 1;  	vqs.rx_queues = vqs.tx_queues; -	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DISABLE_QUEUES, -			   (u8 *)&vqs, sizeof(vqs));  	adapter->aq_pending |= I40EVF_FLAG_AQ_DISABLE_QUEUES;  	adapter->aq_required &= ~I40EVF_FLAG_AQ_DISABLE_QUEUES; +	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DISABLE_QUEUES, +			   (u8 *)&vqs, sizeof(vqs));  }  /** @@ -351,11 +352,11 @@ void i40evf_map_queues(struct i40evf_adapter *adapter)  	vimi->vecmap[v_idx].txq_map = 0;  	vimi->vecmap[v_idx].rxq_map = 0; +	adapter->aq_pending |= I40EVF_FLAG_AQ_MAP_VECTORS; +	adapter->aq_required &= ~I40EVF_FLAG_AQ_MAP_VECTORS;  	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP,  			   (u8 *)vimi, len);  	kfree(vimi); -	adapter->aq_pending |= I40EVF_FLAG_AQ_MAP_VECTORS; -	adapter->aq_required &= ~I40EVF_FLAG_AQ_MAP_VECTORS;  }  /** @@ -412,12 +413,11 @@ void i40evf_add_ether_addrs(struct i40evf_adapter *adapter)  			f->add = false;  		}  	} +	adapter->aq_pending |= I40EVF_FLAG_AQ_ADD_MAC_FILTER; +	adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_MAC_FILTER;  	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS,  			   (u8 *)veal, len);  	kfree(veal); -	adapter->aq_pending |= I40EVF_FLAG_AQ_ADD_MAC_FILTER; -	adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_MAC_FILTER; -  }  /** @@ -474,11 +474,11 @@ void i40evf_del_ether_addrs(struct i40evf_adapter *adapter)  			kfree(f);  		}  	} +	adapter->aq_pending |= I40EVF_FLAG_AQ_DEL_MAC_FILTER; +	adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_MAC_FILTER;  	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS,  			   (u8 *)veal, len);  	kfree(veal); -	adapter->aq_pending |= I40EVF_FLAG_AQ_DEL_MAC_FILTER; -	adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_MAC_FILTER;  }  /** @@ -535,10 +535,10 @@ void i40evf_add_vlans(struct i40evf_adapter *adapter)  			f->add = false;  		}  	} -	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ADD_VLAN, (u8 *)vvfl, len); -	kfree(vvfl);  	adapter->aq_pending |= I40EVF_FLAG_AQ_ADD_VLAN_FILTER;  	adapter->aq_required &= ~I40EVF_FLAG_AQ_ADD_VLAN_FILTER; +	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_ADD_VLAN, (u8 *)vvfl, len); +	kfree(vvfl);  }  /** @@ -596,10 +596,10 @@ void i40evf_del_vlans(struct i40evf_adapter *adapter)  			kfree(f);  		}  	} -	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DEL_VLAN, (u8 *)vvfl, len); -	kfree(vvfl);  	adapter->aq_pending |= I40EVF_FLAG_AQ_DEL_VLAN_FILTER;  	adapter->aq_required &= ~I40EVF_FLAG_AQ_DEL_VLAN_FILTER; +	i40evf_send_pf_msg(adapter, I40E_VIRTCHNL_OP_DEL_VLAN, (u8 *)vvfl, len); +	kfree(vvfl);  }  /**  | 
