]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
net: ena: change return value for unsupported features unsupported return value
authorNetanel Belgazal <netanel@amazon.com>
Fri, 23 Jun 2017 08:21:50 +0000 (11:21 +0300)
committerKamal Mostafa <kamal@canonical.com>
Mon, 10 Jul 2017 17:31:40 +0000 (10:31 -0700)
BugLink: http://bugs.launchpad.net/bugs/1701575
return -EOPNOTSUPP instead of -EPERM.

Signed-off-by: Netanel Belgazal <netanel@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit d1497638b6fedccaef875a5d9f09b3fe4ffbd22d net-next)
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Acked-by: Seth Forshee <seth.forshee@canonical.com>
Acked-by: Brad Figg <brad.figg@canonical.com>
drivers/net/ethernet/amazon/ena/ena_com.c
drivers/net/ethernet/amazon/ena/ena_ethtool.c
drivers/net/ethernet/amazon/ena/ena_netdev.c

index f5b237e0bd60e2f0e2e6fd5a95d78515285629b1..02752d5b5b601162e45d401fdb68095e3c8258e6 100644 (file)
@@ -494,7 +494,7 @@ static int ena_com_comp_status_to_errno(u8 comp_status)
        case ENA_ADMIN_RESOURCE_ALLOCATION_FAILURE:
                return -ENOMEM;
        case ENA_ADMIN_UNSUPPORTED_OPCODE:
-               return -EPERM;
+               return -EOPNOTSUPP;
        case ENA_ADMIN_BAD_OPCODE:
        case ENA_ADMIN_MALFORMED_REQUEST:
        case ENA_ADMIN_ILLEGAL_PARAMETER:
@@ -786,7 +786,7 @@ static int ena_com_get_feature_ex(struct ena_com_dev *ena_dev,
 
        if (!ena_com_check_supported_feature_id(ena_dev, feature_id)) {
                pr_debug("Feature %d isn't supported\n", feature_id);
-               return -EPERM;
+               return -EOPNOTSUPP;
        }
 
        memset(&get_cmd, 0x0, sizeof(get_cmd));
@@ -1324,7 +1324,7 @@ int ena_com_set_aenq_config(struct ena_com_dev *ena_dev, u32 groups_flag)
        if ((get_resp.u.aenq.supported_groups & groups_flag) != groups_flag) {
                pr_warn("Trying to set unsupported aenq events. supported flag: %x asked flag: %x\n",
                        get_resp.u.aenq.supported_groups, groups_flag);
-               return -EPERM;
+               return -EOPNOTSUPP;
        }
 
        memset(&cmd, 0x0, sizeof(cmd));
@@ -1909,7 +1909,7 @@ int ena_com_set_dev_mtu(struct ena_com_dev *ena_dev, int mtu)
 
        if (!ena_com_check_supported_feature_id(ena_dev, ENA_ADMIN_MTU)) {
                pr_debug("Feature %d isn't supported\n", ENA_ADMIN_MTU);
-               return -EPERM;
+               return -EOPNOTSUPP;
        }
 
        memset(&cmd, 0x0, sizeof(cmd));
@@ -1963,7 +1963,7 @@ int ena_com_set_hash_function(struct ena_com_dev *ena_dev)
                                                ENA_ADMIN_RSS_HASH_FUNCTION)) {
                pr_debug("Feature %d isn't supported\n",
                         ENA_ADMIN_RSS_HASH_FUNCTION);
-               return -EPERM;
+               return -EOPNOTSUPP;
        }
 
        /* Validate hash function is supported */
@@ -1975,7 +1975,7 @@ int ena_com_set_hash_function(struct ena_com_dev *ena_dev)
        if (get_resp.u.flow_hash_func.supported_func & (1 << rss->hash_func)) {
                pr_err("Func hash %d isn't supported by device, abort\n",
                       rss->hash_func);
-               return -EPERM;
+               return -EOPNOTSUPP;
        }
 
        memset(&cmd, 0x0, sizeof(cmd));
@@ -2034,7 +2034,7 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena_dev,
 
        if (!((1 << func) & get_resp.u.flow_hash_func.supported_func)) {
                pr_err("Flow hash function %d isn't supported\n", func);
-               return -EPERM;
+               return -EOPNOTSUPP;
        }
 
        switch (func) {
@@ -2127,7 +2127,7 @@ int ena_com_set_hash_ctrl(struct ena_com_dev *ena_dev)
                                                ENA_ADMIN_RSS_HASH_INPUT)) {
                pr_debug("Feature %d isn't supported\n",
                         ENA_ADMIN_RSS_HASH_INPUT);
-               return -EPERM;
+               return -EOPNOTSUPP;
        }
 
        memset(&cmd, 0x0, sizeof(cmd));
@@ -2208,7 +2208,7 @@ int ena_com_set_default_hash_ctrl(struct ena_com_dev *ena_dev)
                        pr_err("hash control doesn't support all the desire configuration. proto %x supported %x selected %x\n",
                               i, hash_ctrl->supported_fields[i].fields,
                               hash_ctrl->selected_fields[i].fields);
-                       return -EPERM;
+                       return -EOPNOTSUPP;
                }
        }
 
@@ -2286,7 +2286,7 @@ int ena_com_indirect_table_set(struct ena_com_dev *ena_dev)
                    ena_dev, ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG)) {
                pr_debug("Feature %d isn't supported\n",
                         ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG);
-               return -EPERM;
+               return -EOPNOTSUPP;
        }
 
        ret = ena_com_ind_tbl_convert_to_device(ena_dev);
@@ -2553,7 +2553,7 @@ int ena_com_init_interrupt_moderation(struct ena_com_dev *ena_dev)
                                 ENA_ADMIN_INTERRUPT_MODERATION);
 
        if (rc) {
-               if (rc == -EPERM) {
+               if (rc == -EOPNOTSUPP) {
                        pr_debug("Feature %d isn't supported\n",
                                 ENA_ADMIN_INTERRUPT_MODERATION);
                        rc = 0;
index 3ee55e2fd69465e12603890bce1b530be551a2d9..d51a67f4df0213eca9048b72e33a9d77800bf077 100644 (file)
@@ -539,12 +539,8 @@ static int ena_get_rss_hash(struct ena_com_dev *ena_dev,
        }
 
        rc = ena_com_get_hash_ctrl(ena_dev, proto, &hash_fields);
-       if (rc) {
-               /* If device don't have permission, return unsupported */
-               if (rc == -EPERM)
-                       rc = -EOPNOTSUPP;
+       if (rc)
                return rc;
-       }
 
        cmd->data = ena_flow_hash_to_flow_type(hash_fields);
 
@@ -612,7 +608,7 @@ static int ena_set_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info)
                rc = -EOPNOTSUPP;
        }
 
-       return (rc == -EPERM) ? -EOPNOTSUPP : rc;
+       return rc;
 }
 
 static int ena_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info,
@@ -638,7 +634,7 @@ static int ena_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info,
                rc = -EOPNOTSUPP;
        }
 
-       return (rc == -EPERM) ? -EOPNOTSUPP : rc;
+       return rc;
 }
 
 static u32 ena_get_rxfh_indir_size(struct net_device *netdev)
index d6076cb2434b10f71079a6722819cb780222b099..dd9c6fc5271dc9d5e1be542e077ac81c74337759 100644 (file)
@@ -1446,7 +1446,7 @@ static int ena_rss_configure(struct ena_adapter *adapter)
        /* In case the RSS table wasn't initialized by probe */
        if (!ena_dev->rss.tbl_log_size) {
                rc = ena_rss_init_default(adapter);
-               if (rc && (rc != -EPERM)) {
+               if (rc && (rc != -EOPNOTSUPP)) {
                        netif_err(adapter, ifup, adapter->netdev,
                                  "Failed to init RSS rc: %d\n", rc);
                        return rc;
@@ -1455,17 +1455,17 @@ static int ena_rss_configure(struct ena_adapter *adapter)
 
        /* Set indirect table */
        rc = ena_com_indirect_table_set(ena_dev);
-       if (unlikely(rc && rc != -EPERM))
+       if (unlikely(rc && rc != -EOPNOTSUPP))
                return rc;
 
        /* Configure hash function (if supported) */
        rc = ena_com_set_hash_function(ena_dev);
-       if (unlikely(rc && (rc != -EPERM)))
+       if (unlikely(rc && (rc != -EOPNOTSUPP)))
                return rc;
 
        /* Configure hash inputs (if supported) */
        rc = ena_com_set_hash_ctrl(ena_dev);
-       if (unlikely(rc && (rc != -EPERM)))
+       if (unlikely(rc && (rc != -EOPNOTSUPP)))
                return rc;
 
        return 0;
@@ -2144,7 +2144,7 @@ static void ena_config_host_info(struct ena_com_dev *ena_dev)
 
        rc = ena_com_set_host_attributes(ena_dev);
        if (rc) {
-               if (rc == -EPERM)
+               if (rc == -EOPNOTSUPP)
                        pr_warn("Cannot set host attributes\n");
                else
                        pr_err("Cannot set host attributes\n");
@@ -2181,7 +2181,7 @@ static void ena_config_debug_area(struct ena_adapter *adapter)
 
        rc = ena_com_set_host_attributes(adapter->ena_dev);
        if (rc) {
-               if (rc == -EPERM)
+               if (rc == -EOPNOTSUPP)
                        netif_warn(adapter, drv, adapter->netdev,
                                   "Cannot set host attributes\n");
                else
@@ -2888,7 +2888,7 @@ static int ena_rss_init_default(struct ena_adapter *adapter)
                val = ethtool_rxfh_indir_default(i, adapter->num_queues);
                rc = ena_com_indirect_table_fill_entry(ena_dev, i,
                                                       ENA_IO_RXQ_IDX(val));
-               if (unlikely(rc && (rc != -EPERM))) {
+               if (unlikely(rc && (rc != -EOPNOTSUPP))) {
                        dev_err(dev, "Cannot fill indirect table\n");
                        goto err_fill_indir;
                }
@@ -2896,13 +2896,13 @@ static int ena_rss_init_default(struct ena_adapter *adapter)
 
        rc = ena_com_fill_hash_function(ena_dev, ENA_ADMIN_CRC32, NULL,
                                        ENA_HASH_KEY_SIZE, 0xFFFFFFFF);
-       if (unlikely(rc && (rc != -EPERM))) {
+       if (unlikely(rc && (rc != -EOPNOTSUPP))) {
                dev_err(dev, "Cannot fill hash function\n");
                goto err_fill_indir;
        }
 
        rc = ena_com_set_default_hash_ctrl(ena_dev);
-       if (unlikely(rc && (rc != -EPERM))) {
+       if (unlikely(rc && (rc != -EOPNOTSUPP))) {
                dev_err(dev, "Cannot fill hash control\n");
                goto err_fill_indir;
        }
@@ -3116,7 +3116,7 @@ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                goto err_worker_destroy;
        }
        rc = ena_rss_init_default(adapter);
-       if (rc && (rc != -EPERM)) {
+       if (rc && (rc != -EOPNOTSUPP)) {
                dev_err(&pdev->dev, "Cannot init RSS rc: %d\n", rc);
                goto err_free_msix;
        }