]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
Merge remote-tracking branch 'input-current/for-linus'
[karo-tx-linux.git] / drivers / net / ethernet / intel / i40evf / i40evf_virtchnl.c
index d4eb1a5e7d42c4562a659202685d0e8331d384c9..32e620e1eb5c9549db7f2743a1b2b2986523666f 100644 (file)
@@ -156,7 +156,8 @@ int i40evf_send_vf_config_msg(struct i40evf_adapter *adapter)
        caps = I40E_VIRTCHNL_VF_OFFLOAD_L2 |
               I40E_VIRTCHNL_VF_OFFLOAD_RSS_AQ |
               I40E_VIRTCHNL_VF_OFFLOAD_RSS_REG |
-              I40E_VIRTCHNL_VF_OFFLOAD_VLAN;
+              I40E_VIRTCHNL_VF_OFFLOAD_VLAN |
+              I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR;
        adapter->current_op = I40E_VIRTCHNL_OP_GET_VF_RESOURCES;
        adapter->aq_required &= ~I40EVF_FLAG_AQ_GET_CONFIG;
        if (PF_IS_V11(adapter))
@@ -234,8 +235,8 @@ void i40evf_configure_queues(struct i40evf_adapter *adapter)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot configure queues, command %d pending\n",
+                       adapter->current_op);
                return;
        }
        adapter->current_op = I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES;
@@ -288,8 +289,8 @@ void i40evf_enable_queues(struct i40evf_adapter *adapter)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot enable queues, command %d pending\n",
+                       adapter->current_op);
                return;
        }
        adapter->current_op = I40E_VIRTCHNL_OP_ENABLE_QUEUES;
@@ -313,8 +314,8 @@ void i40evf_disable_queues(struct i40evf_adapter *adapter)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot disable queues, command %d pending\n",
+                       adapter->current_op);
                return;
        }
        adapter->current_op = I40E_VIRTCHNL_OP_DISABLE_QUEUES;
@@ -341,8 +342,8 @@ void i40evf_map_queues(struct i40evf_adapter *adapter)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot map queues to vectors, command %d pending\n",
+                       adapter->current_op);
                return;
        }
        adapter->current_op = I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP;
@@ -393,8 +394,8 @@ void i40evf_add_ether_addrs(struct i40evf_adapter *adapter)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot add filters, command %d pending\n",
+                       adapter->current_op);
                return;
        }
        list_for_each_entry(f, &adapter->mac_filter_list, list) {
@@ -410,8 +411,7 @@ void i40evf_add_ether_addrs(struct i40evf_adapter *adapter)
        len = sizeof(struct i40e_virtchnl_ether_addr_list) +
              (count * sizeof(struct i40e_virtchnl_ether_addr));
        if (len > I40EVF_MAX_AQ_BUF_SIZE) {
-               dev_warn(&adapter->pdev->dev, "%s: Too many MAC address changes in one request\n",
-                        __func__);
+               dev_warn(&adapter->pdev->dev, "Too many add MAC changes in one request\n");
                count = (I40EVF_MAX_AQ_BUF_SIZE -
                         sizeof(struct i40e_virtchnl_ether_addr_list)) /
                        sizeof(struct i40e_virtchnl_ether_addr);
@@ -453,8 +453,8 @@ void i40evf_del_ether_addrs(struct i40evf_adapter *adapter)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot remove filters, command %d pending\n",
+                       adapter->current_op);
                return;
        }
        list_for_each_entry(f, &adapter->mac_filter_list, list) {
@@ -470,8 +470,7 @@ void i40evf_del_ether_addrs(struct i40evf_adapter *adapter)
        len = sizeof(struct i40e_virtchnl_ether_addr_list) +
              (count * sizeof(struct i40e_virtchnl_ether_addr));
        if (len > I40EVF_MAX_AQ_BUF_SIZE) {
-               dev_warn(&adapter->pdev->dev, "%s: Too many MAC address changes in one request\n",
-                        __func__);
+               dev_warn(&adapter->pdev->dev, "Too many delete MAC changes in one request\n");
                count = (I40EVF_MAX_AQ_BUF_SIZE -
                         sizeof(struct i40e_virtchnl_ether_addr_list)) /
                        sizeof(struct i40e_virtchnl_ether_addr);
@@ -513,8 +512,8 @@ void i40evf_add_vlans(struct i40evf_adapter *adapter)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot add VLANs, command %d pending\n",
+                       adapter->current_op);
                return;
        }
 
@@ -531,8 +530,7 @@ void i40evf_add_vlans(struct i40evf_adapter *adapter)
        len = sizeof(struct i40e_virtchnl_vlan_filter_list) +
              (count * sizeof(u16));
        if (len > I40EVF_MAX_AQ_BUF_SIZE) {
-               dev_warn(&adapter->pdev->dev, "%s: Too many VLAN changes in one request\n",
-                        __func__);
+               dev_warn(&adapter->pdev->dev, "Too many add VLAN changes in one request\n");
                count = (I40EVF_MAX_AQ_BUF_SIZE -
                         sizeof(struct i40e_virtchnl_vlan_filter_list)) /
                        sizeof(u16);
@@ -572,8 +570,8 @@ void i40evf_del_vlans(struct i40evf_adapter *adapter)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot remove VLANs, command %d pending\n",
+                       adapter->current_op);
                return;
        }
 
@@ -590,8 +588,7 @@ void i40evf_del_vlans(struct i40evf_adapter *adapter)
        len = sizeof(struct i40e_virtchnl_vlan_filter_list) +
              (count * sizeof(u16));
        if (len > I40EVF_MAX_AQ_BUF_SIZE) {
-               dev_warn(&adapter->pdev->dev, "%s: Too many VLAN changes in one request\n",
-                        __func__);
+               dev_warn(&adapter->pdev->dev, "Too many delete VLAN changes in one request\n");
                count = (I40EVF_MAX_AQ_BUF_SIZE -
                         sizeof(struct i40e_virtchnl_vlan_filter_list)) /
                        sizeof(u16);
@@ -629,8 +626,8 @@ void i40evf_set_promiscuous(struct i40evf_adapter *adapter, int flags)
 
        if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) {
                /* bail because we already have a command pending */
-               dev_err(&adapter->pdev->dev, "%s: command %d pending\n",
-                       __func__, adapter->current_op);
+               dev_err(&adapter->pdev->dev, "Cannot set promiscuous mode, command %d pending\n",
+                       adapter->current_op);
                return;
        }
        adapter->current_op = I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE;
@@ -720,17 +717,16 @@ void i40evf_virtchnl_completion(struct i40evf_adapter *adapter,
                        }
                        break;
                default:
-                       dev_err(&adapter->pdev->dev,
-                               "%s: Unknown event %d from pf\n",
-                               __func__, vpe->event);
+                       dev_err(&adapter->pdev->dev, "Unknown event %d from PF\n",
+                               vpe->event);
                        break;
                }
                return;
        }
        if (v_retval) {
-               dev_err(&adapter->pdev->dev, "%s: PF returned error %d (%s) to our request %d\n",
-                       __func__, v_retval,
-                       i40evf_stat_str(&adapter->hw, v_retval), v_opcode);
+               dev_err(&adapter->pdev->dev, "PF returned error %d (%s) to our request %d\n",
+                       v_retval, i40evf_stat_str(&adapter->hw, v_retval),
+                       v_opcode);
        }
        switch (v_opcode) {
        case I40E_VIRTCHNL_OP_GET_STATS: {
@@ -756,6 +752,8 @@ void i40evf_virtchnl_completion(struct i40evf_adapter *adapter,
                          sizeof(struct i40e_virtchnl_vsi_resource);
                memcpy(adapter->vf_res, msg, min(msglen, len));
                i40e_vf_parse_hw_config(&adapter->hw, adapter->vf_res);
+               /* restore current mac address */
+               ether_addr_copy(adapter->hw.mac.addr, netdev->dev_addr);
                i40evf_process_config(adapter);
                }
                break;