]> git.baikalelectronics.ru Git - kernel.git/commitdiff
siena: Make SRIOV support specific for Siena
authorMartin Habets <habetsm.xilinx@gmail.com>
Wed, 11 May 2022 16:19:36 +0000 (17:19 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 12 May 2022 23:49:29 +0000 (16:49 -0700)
Add a Siena Kconfig option and use it in stead of the sfc one.

Signed-off-by: Martin Habets <habetsm.xilinx@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
13 files changed:
drivers/net/ethernet/sfc/Kconfig
drivers/net/ethernet/sfc/siena/Kconfig
drivers/net/ethernet/sfc/siena/Makefile
drivers/net/ethernet/sfc/siena/efx.c
drivers/net/ethernet/sfc/siena/efx.h
drivers/net/ethernet/sfc/siena/efx_channels.c
drivers/net/ethernet/sfc/siena/efx_common.c
drivers/net/ethernet/sfc/siena/farch.c
drivers/net/ethernet/sfc/siena/net_driver.h
drivers/net/ethernet/sfc/siena/nic.h
drivers/net/ethernet/sfc/siena/siena.c
drivers/net/ethernet/sfc/siena/siena_sriov.h
drivers/net/ethernet/sfc/siena/sriov.h

index 79b8ccaeee01d59d32572c2af19ee815b2468279..4c85b26279c56014bc3fb132cbd2d5bc1292c63f 100644 (file)
@@ -47,7 +47,7 @@ config SFC_MCDI_MON
          This exposes the on-board firmware-managed sensors as a
          hardware monitor device.
 config SFC_SRIOV
-       bool "Solarflare SFC9000/SFC9100-family SR-IOV support"
+       bool "Solarflare SFC9100-family SR-IOV support"
        depends on SFC && PCI_IOV
        default y
        help
index 805b902f903d8b527700e59f9a4a8ec88fac7905..26a8cb838d47cb09b3978a01c36699f9e6ced7c1 100644 (file)
@@ -18,3 +18,11 @@ config SFC_SIENA_MTD
          This exposes the on-board flash and/or EEPROM as MTD devices
          (e.g. /dev/mtd1).  This is required to update the firmware or
          the boot configuration under Linux.
+config SFC_SIENA_SRIOV
+       bool "Solarflare SFC9000-family SR-IOV support"
+       depends on SFC_SIENA && PCI_IOV
+       default n
+       help
+         This enables support for the Single Root I/O Virtualization
+         features, allowing accelerated network performance in
+         virtualized environments.
index 3729095a51d970516a95749801f2a13b77c826d1..f7384299667cd91395ec8a76a2d418a58556a1f6 100644 (file)
@@ -6,6 +6,6 @@ sfc-siena-y             += farch.o siena.o \
                           mcdi.o mcdi_port.o mcdi_port_common.o \
                           mcdi_mon.o
 sfc-siena-$(CONFIG_SFC_SIENA_MTD)      += mtd.o
-sfc-siena-$(CONFIG_SFC_SRIOV)          += siena_sriov.o
+sfc-siena-$(CONFIG_SFC_SIENA_SRIOV)    += siena_sriov.o
 
 obj-$(CONFIG_SFC_SIENA)        += sfc-siena.o
index 3f6e732f5fdc28ac53bbd0d562144c4c11af2837..01809666a3d11833f4576e596d68b510b2d04429 100644 (file)
@@ -359,7 +359,7 @@ static int efx_probe_all(struct efx_nic *efx)
                goto fail3;
        }
 
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        rc = efx->type->vswitching_probe(efx);
        if (rc) /* not fatal; the PF will still work fine */
                netif_warn(efx, probe, efx->net_dev,
@@ -383,7 +383,7 @@ static int efx_probe_all(struct efx_nic *efx)
  fail5:
        efx_siena_remove_filters(efx);
  fail4:
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        efx->type->vswitching_remove(efx);
 #endif
  fail3:
@@ -402,7 +402,7 @@ static void efx_remove_all(struct efx_nic *efx)
 
        efx_siena_remove_channels(efx);
        efx_siena_remove_filters(efx);
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        efx->type->vswitching_remove(efx);
 #endif
        efx_remove_port(efx);
@@ -592,7 +592,7 @@ static const struct net_device_ops efx_netdev_ops = {
        .ndo_features_check     = efx_siena_features_check,
        .ndo_vlan_rx_add_vid    = efx_vlan_rx_add_vid,
        .ndo_vlan_rx_kill_vid   = efx_vlan_rx_kill_vid,
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        .ndo_set_vf_mac         = efx_sriov_set_vf_mac,
        .ndo_set_vf_vlan        = efx_sriov_set_vf_vlan,
        .ndo_set_vf_spoofchk    = efx_sriov_set_vf_spoofchk,
@@ -1108,7 +1108,7 @@ static int efx_pci_probe(struct pci_dev *pci_dev,
 /* efx_pci_sriov_configure returns the actual number of Virtual Functions
  * enabled on success
  */
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
 static int efx_pci_sriov_configure(struct pci_dev *dev, int num_vfs)
 {
        int rc;
@@ -1250,7 +1250,7 @@ static struct pci_driver efx_pci_driver = {
        .remove         = efx_pci_remove,
        .driver.pm      = &efx_pm_ops,
        .err_handler    = &efx_siena_err_handlers,
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        .sriov_configure = efx_pci_sriov_configure,
 #endif
 };
index 1d9755e59d75f8a3514c9d7105fd32a232a5c852..27d1d3f19cae9a4457d4f504e553a15d6a1bff6a 100644 (file)
@@ -177,7 +177,7 @@ static inline void efx_siena_mtd_rename(struct efx_nic *efx) {}
 static inline void efx_siena_mtd_remove(struct efx_nic *efx) {}
 #endif
 
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
 static inline unsigned int efx_vf_size(struct efx_nic *efx)
 {
        return 1 << efx->vi_scale;
index 276cd7d8873296dc9408978a52b7bc0d92647b17..28391875de6949da9bc6288f62bfffa640ac79b5 100644 (file)
@@ -110,7 +110,7 @@ static unsigned int efx_wanted_parallelism(struct efx_nic *efx)
        /* If RSS is requested for the PF *and* VFs then we can't write RSS
         * table entries that are inaccessible to VFs
         */
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        if (efx->type->sriov_wanted) {
                if (efx->type->sriov_wanted(efx) && efx_vf_size(efx) > 1 &&
                    count > efx_vf_size(efx)) {
@@ -348,7 +348,7 @@ int efx_siena_probe_interrupts(struct efx_nic *efx)
 
        rss_spread = efx->n_rx_channels;
        /* RSS might be usable on VFs even if it is disabled on the PF */
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        if (efx->type->sriov_wanted) {
                efx->rss_spread = ((rss_spread > 1 ||
                                    !efx->type->sriov_wanted(efx)) ?
index 7c400fd590f5343287fd13bdd2511fdf094d0099..3aef8d216f95286b69465a38044d938853b4ecf7 100644 (file)
@@ -778,7 +778,7 @@ int efx_siena_reset_up(struct efx_nic *efx, enum reset_type method, bool ok)
        if (rc)
                goto fail;
 
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        rc = efx->type->vswitching_restore(efx);
        if (rc) /* not fatal; the PF will still work fine */
                netif_warn(efx, probe, efx->net_dev,
index a24ba23fd19f9ef26656d2e2b95a0bdc418736bd..cce23803c652ca20ae206abceb2b5a03e99a3f79 100644 (file)
@@ -228,7 +228,7 @@ static int efx_alloc_special_buffer(struct efx_nic *efx,
                                    struct efx_special_buffer *buffer,
                                    unsigned int len)
 {
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        struct siena_nic_data *nic_data = efx->nic_data;
 #endif
        len = ALIGN(len, EFX_BUF_SIZE);
@@ -241,7 +241,7 @@ static int efx_alloc_special_buffer(struct efx_nic *efx,
        /* Select new buffer ID */
        buffer->index = efx->next_buffer_table;
        efx->next_buffer_table += buffer->entries;
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        BUG_ON(efx_siena_sriov_enabled(efx) &&
               nic_data->vf_buftbl_base < efx->next_buffer_table);
 #endif
@@ -1187,7 +1187,7 @@ efx_farch_handle_driver_event(struct efx_channel *channel, efx_qword_t *event)
                netif_vdbg(efx, hw, efx->net_dev, "channel %d TXQ %d flushed\n",
                           channel->channel, ev_sub_data);
                efx_farch_handle_tx_flush_done(efx, event);
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
                efx_siena_sriov_tx_flush_done(efx, event);
 #endif
                break;
@@ -1195,7 +1195,7 @@ efx_farch_handle_driver_event(struct efx_channel *channel, efx_qword_t *event)
                netif_vdbg(efx, hw, efx->net_dev, "channel %d RXQ %d flushed\n",
                           channel->channel, ev_sub_data);
                efx_farch_handle_rx_flush_done(efx, event);
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
                efx_siena_sriov_rx_flush_done(efx, event);
 #endif
                break;
@@ -1233,7 +1233,7 @@ efx_farch_handle_driver_event(struct efx_channel *channel, efx_qword_t *event)
                                  ev_sub_data);
                        efx_siena_schedule_reset(efx, RESET_TYPE_DMA_ERROR);
                }
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
                else
                        efx_siena_sriov_desc_fetch_err(efx, ev_sub_data);
 #endif
@@ -1246,7 +1246,7 @@ efx_farch_handle_driver_event(struct efx_channel *channel, efx_qword_t *event)
                                  ev_sub_data);
                        efx_siena_schedule_reset(efx, RESET_TYPE_DMA_ERROR);
                }
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
                else
                        efx_siena_sriov_desc_fetch_err(efx, ev_sub_data);
 #endif
@@ -1307,7 +1307,7 @@ int efx_farch_ev_process(struct efx_channel *channel, int budget)
                case FSE_AZ_EV_CODE_DRIVER_EV:
                        efx_farch_handle_driver_event(channel, &event);
                        break;
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
                case FSE_CZ_EV_CODE_USER_EV:
                        efx_siena_sriov_event(channel, &event);
                        break;
@@ -1671,7 +1671,7 @@ void efx_farch_rx_pull_indir_table(struct efx_nic *efx)
 void efx_farch_dimension_resources(struct efx_nic *efx, unsigned sram_lim_qw)
 {
        unsigned vi_count, total_tx_channels;
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        struct siena_nic_data *nic_data;
        unsigned buftbl_min;
 #endif
@@ -1679,7 +1679,7 @@ void efx_farch_dimension_resources(struct efx_nic *efx, unsigned sram_lim_qw)
        total_tx_channels = efx->n_tx_channels + efx->n_extra_tx_channels;
        vi_count = max(efx->n_channels, total_tx_channels * EFX_MAX_TXQ_PER_CHANNEL);
 
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        nic_data = efx->nic_data;
        /* Account for the buffer table entries backing the datapath channels
         * and the descriptor caches for those channels.
index 6af172fb0b101177fece7a1277a41b776fb550a0..a8f6c3699c8b7bca814aa235652992f9310082cc 100644 (file)
@@ -1096,7 +1096,7 @@ struct efx_nic {
        atomic_t rxq_flush_outstanding;
        wait_queue_head_t flush_wq;
 
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        unsigned vf_count;
        unsigned vf_init_count;
        unsigned vi_scale;
index 935cb0ab5ec07cef67c129ae5e76cf0f322d19bd..6def31070edb45662cd0261212886e619d2536bf 100644 (file)
@@ -104,7 +104,7 @@ struct siena_nic_data {
        struct efx_nic *efx;
        int wol_filter_id;
        u64 stats[SIENA_STAT_COUNT];
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        struct siena_vf *vf;
        struct efx_channel *vfdi_channel;
        unsigned vf_buftbl_base;
index 9fe8ffc3a8d342bfb492e25ba1cdcd07e604fb02..a44c8fa257487289bcc01874c597d9e0b245ceb6 100644 (file)
@@ -328,7 +328,7 @@ static int siena_probe_nic(struct efx_nic *efx)
        if (rc)
                goto fail5;
 
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        efx_siena_sriov_probe(efx);
 #endif
        efx_siena_ptp_defer_probe_with_channel(efx);
@@ -1068,7 +1068,7 @@ const struct efx_nic_type siena_a0_nic_type = {
 #endif
        .ptp_write_host_time = siena_ptp_write_host_time,
        .ptp_set_ts_config = siena_ptp_set_ts_config,
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
        .sriov_configure = efx_siena_sriov_configure,
        .sriov_init = efx_siena_sriov_init,
        .sriov_fini = efx_siena_sriov_fini,
index e548c4daf189711f67e459a0a6918ad54c23bbf0..69a7a18e9ba0478174fdc9aeeb5207b7041e785e 100644 (file)
@@ -54,18 +54,18 @@ int efx_siena_sriov_set_vf_spoofchk(struct efx_nic *efx, int vf,
 int efx_siena_sriov_get_vf_config(struct efx_nic *efx, int vf,
                                  struct ifla_vf_info *ivf);
 
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
 
 static inline bool efx_siena_sriov_enabled(struct efx_nic *efx)
 {
        return efx->vf_init_count != 0;
 }
-#else /* !CONFIG_SFC_SRIOV */
+#else /* !CONFIG_SFC_SIENA_SRIOV */
 static inline bool efx_siena_sriov_enabled(struct efx_nic *efx)
 {
        return false;
 }
-#endif /* CONFIG_SFC_SRIOV */
+#endif /* CONFIG_SFC_SIENA_SRIOV */
 
 void efx_siena_sriov_probe(struct efx_nic *efx);
 void efx_siena_sriov_tx_flush_done(struct efx_nic *efx, efx_qword_t *event);
index fbde67319d87e55aa74232d5e9b451ffb7d796de..a6981bad76215ff641ca6cb142b30369ea6a190d 100644 (file)
@@ -9,7 +9,7 @@
 
 #include "net_driver.h"
 
-#ifdef CONFIG_SFC_SRIOV
+#ifdef CONFIG_SFC_SIENA_SRIOV
 
 static inline
 int efx_sriov_set_vf_mac(struct net_device *net_dev, int vf_i, u8 *mac)
@@ -78,6 +78,6 @@ int efx_sriov_set_vf_link_state(struct net_device *net_dev, int vf_i,
        else
                return -EOPNOTSUPP;
 }
-#endif /* CONFIG_SFC_SRIOV */
+#endif /* CONFIG_SFC_SIENA_SRIOV */
 
 #endif /* EFX_SRIOV_H */