]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: ena: enable support of rss hash key and function changes
authorArthur Kiyanovski <akiyano@amazon.com>
Tue, 21 Jul 2020 13:38:09 +0000 (16:38 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Jul 2020 22:59:04 +0000 (15:59 -0700)
Add the rss_configurable_function_key bit to driver_supported_feature.

This bit tells the device that the driver in question supports the
retrieving and updating of RSS function and hash key, and therefore
the device should allow RSS function and key manipulation.

This commit turns on  device support for hash key and RSS function
management. Without this commit this feature is turned off at the
device and appears to the user as unsupported.

This commit concludes the following series of already merged commits:
commit f70a73267e1a ("net: ena: changes to RSS hash key allocation")
commit c74cff8c258f ("net: ena: change default RSS hash function to Toeplitz")
commit 0714685d8bef ("net: ena: allow setting the hash function without changing the key")
commit df0e56757a42 ("net: ena: fix error returning in ena_com_get_hash_function()")
commit 1440b397c0e5 ("net: ena: avoid unnecessary admin command when RSS function set fails")
commit fd9716306798 ("net: ena: rss: do not allocate key when not supported")
commit f8cfbd755ad6 ("net: ena: fix incorrect default RSS key")

The above commits represent the last part of the implementation of
this feature, and with them merged the feature can be enabled
in the device.

Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/amazon/ena/ena_admin_defs.h
drivers/net/ethernet/amazon/ena/ena_netdev.c

index afe87ff09b20c37e93c7c2424f20fcf86043abbc..7f7978b135a949daeea599879b5661155998904a 100644 (file)
@@ -817,7 +817,8 @@ struct ena_admin_host_info {
         * 1 : rx_offset
         * 2 : interrupt_moderation
         * 3 : rx_buf_mirroring
-        * 31:4 : reserved
+        * 4 : rss_configurable_function_key
+        * 31:5 : reserved
         */
        u32 driver_supported_features;
 };
@@ -1132,6 +1133,8 @@ struct ena_admin_ena_mmio_req_read_less_resp {
 #define ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK       BIT(2)
 #define ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_SHIFT          3
 #define ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_MASK           BIT(3)
+#define ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_SHIFT 4
+#define ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK BIT(4)
 
 /* aenq_common_desc */
 #define ENA_ADMIN_AENQ_COMMON_DESC_PHASE_MASK               BIT(0)
index 0563cb3125db7428c5f3301faa7f3f81f1f4ca32..491ea013868bf9c96dfec6027d8ef5c6fe39542f 100644 (file)
@@ -3126,7 +3126,8 @@ static void ena_config_host_info(struct ena_com_dev *ena_dev, struct pci_dev *pd
        host_info->driver_supported_features =
                ENA_ADMIN_HOST_INFO_RX_OFFSET_MASK |
                ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK |
-               ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_MASK;
+               ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_MASK |
+               ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK;
 
        rc = ena_com_set_host_attributes(ena_dev);
        if (rc) {