sfc: Clean up Siena SR-IOV support in preparation for EF10 SR-IOV support
Subsystems (3)
cover sfc: Clean up Siena SR-IOV support in preparation for EF10 SR-IOV support
This patch series provides a base and clean up for the upcoming EF10 SRIOV patches.
Shradha Shah (3):
sfc: Move the current VF state from efx_nic into siena_nic_data
sfc: Rename implementations in siena_sriov.c to have a 'siena' prefix
sfc: Add NIC type operations to replace direct calls from efx.c into
siena_sriov.c
drivers/net/ethernet/sfc/ef10.c | 5 + drivers/net/ethernet/sfc/efx.c | 22 +-- drivers/net/ethernet/sfc/falcon.c | 10 ++ drivers/net/ethernet/sfc/farch.c | 27 ++-- drivers/net/ethernet/sfc/mcdi.c | 2 +- drivers/net/ethernet/sfc/net_driver.h | 19 +-- drivers/net/ethernet/sfc/nic.h | 112 +++++++++----- drivers/net/ethernet/sfc/siena.c | 8 +- drivers/net/ethernet/sfc/siena_sriov.c | 269 ++++++++++++++++++--------------- 9 files changed, 281 insertions(+), 193 deletions(-)
PATCH 1/3 sfc: Move the current VF state from efx_nic into siena_nic_data
This patch series provides a base and cleanup for the upcoming EF10 SRIOV support.
This patch moves the VF state into siena_nic_data as a basis to save the VF state based on nic type.
--- drivers/net/ethernet/sfc/farch.c | 11 +++- drivers/net/ethernet/sfc/net_driver.h | 14 ------ drivers/net/ethernet/sfc/nic.h | 18 +++++++ drivers/net/ethernet/sfc/siena.c | 1 + drivers/net/ethernet/sfc/siena_sriov.c | 92 +++++++++++++++++++++------------- 5 files changed, 84 insertions(+), 52 deletions(-)
drivers/net/ethernet/sfc/farch.c +9 -2
@@ -226,6 +226,9 @@ static int efx_alloc_special_buffer(struct efx_nic *efx, struct efx_special_buffer *buffer, unsigned int len) { +#ifdef CONFIG_SFC_SRIOV +struct siena_nic_data *nic_data = efx->nic_data; +#endif len =ALIGN (len,EFX_BUF_SIZE );if (efx_nic_alloc_buffer (efx, &buffer->buf, len,GFP_KERNEL ))
@@ -238,7 +241,7 @@ static int efx_alloc_special_buffer(struct efx_nic *efx, efx->next_buffer_table += buffer->entries;#ifdef CONFIG_SFC_SRIOV BUG_ON (efx_sriov_enabled (efx) && - efx->vf_buftbl_base < efx->next_buffer_table); + nic_data->vf_buftbl_base < efx->next_buffer_table);#endif netif_dbg(efx, probe, efx->net_dev,
@@ -1668,6 +1671,10 @@ void efx_farch_dimension_resources(struct efx_nic *efx, unsigned sram_lim_qw) {unsigned vi_count, buftbl_min; +#ifdef CONFIG_SFC_SRIOV +struct siena_nic_data *nic_data = efx->nic_data; +#endif +/* Account for the buffer table entries backing the datapath channels * and the descriptor caches for those channels. */
@@ -1681,7 +1688,7 @@ void efx_farch_dimension_resources(struct efx_nic *efx, unsigned sram_lim_qw)if (efx_sriov_wanted (efx)) {unsigned vi_dc_entries, buftbl_free, entries_per_vf, vf_limit; - efx->vf_buftbl_base = buftbl_min; + nic_data->vf_buftbl_base = buftbl_min; vi_dc_entries =RX_DC_ENTRIES +TX_DC_ENTRIES ; vi_count =max (vi_count,EFX_VI_BASE );
drivers/net/ethernet/sfc/net_driver.h +0 -14
@@ -913,13 +913,6 @@ struct vfdi_status;* @vf_count: Number of VFs intended to be enabled. * @vf_init_count: Number of VFs that have been fully initialised. * @vi_scale: log2 number of vnics per VF. -* @vf_buftbl_base: The zeroth buffer table index used to back VF queues. -* @vfdi_status: Common VFDI status page to be dmad to VF address space. -* @local_addr_list: List of local addresses. Protected by %local_lock. -* @local_page_list: List of DMA addressable pages used to broadcast -* %local_addr_list. Protected by %local_lock. -* @local_lock: Mutex protecting %local_addr_list and %local_page_list. -* @peer_work: Work item to broadcast peer addresses to VMs. * @ptp_data: PTP state data * @vpd_sn: Serial number read from VPD * @monitor_work: Hardware monitor workitem
@@ -1060,17 +1053,10 @@ struct efx_nic {wait_queue_head_t flush_wq;#ifdef CONFIG_SFC_SRIOV -struct efx_channel *vfdi_channel;struct efx_vf *vf;unsigned vf_count;unsigned vf_init_count;unsigned vi_scale; -unsigned vf_buftbl_base; -struct efx_buffer vfdi_status; -struct list_head local_addr_list; -struct list_head local_page_list; -struct mutex local_lock; -struct work_struct peer_work;#endif struct efx_ptp_data *ptp_data;
drivers/net/ethernet/sfc/nic.h +18 -0
@@ -378,12 +378,30 @@ enum {/** * struct siena_nic_data - Siena NIC state +* @efx: Pointer back to main interface structure * @wol_filter_id: Wake-on-LAN packet filter id * @stats: Hardware statistics +* @vf_buftbl_base: The zeroth buffer table index used to back VF queues. +* @vfdi_status: Common VFDI status page to be dmad to VF address space. +* @local_addr_list: List of local addresses. Protected by %local_lock. +* @local_page_list: List of DMA addressable pages used to broadcast +* %local_addr_list. Protected by %local_lock. +* @local_lock: Mutex protecting %local_addr_list and %local_page_list. +* @peer_work: Work item to broadcast peer addresses to VMs. */ struct siena_nic_data { +struct efx_nic *efx;int wol_filter_id;u64 stats[SIENA_STAT_COUNT ]; +#ifdef CONFIG_SFC_SRIOV +struct efx_channel *vfdi_channel; +unsigned vf_buftbl_base; +struct efx_buffer vfdi_status; +struct list_head local_addr_list; +struct list_head local_page_list; +struct mutex local_lock; +struct work_struct peer_work; +#endif };enum {
drivers/net/ethernet/sfc/siena.c +1 -0
@@ -251,6 +251,7 @@ static int siena_probe_nic(struct efx_nic *efx) nic_data =kzalloc (sizeof (struct siena_nic_data ),GFP_KERNEL );if (!nic_data)return -ENOMEM ; + nic_data->efx = efx; efx->nic_data = nic_data;if (efx_farch_fpga_ver (efx) !=0 ) {
drivers/net/ethernet/sfc/siena_sriov.c +56 -36
293 lines not on this page · raw message
PATCH 2/3 sfc: Rename implementations in siena_sriov.c to have a 'siena' prefix
In reply to Shradha ShahPatch in preparation for the upcoming EF10 sriov support.
--- drivers/net/ethernet/sfc/efx.c | 21 ++-- drivers/net/ethernet/sfc/farch.c | 16 +-- drivers/net/ethernet/sfc/mcdi.c | 2 +- drivers/net/ethernet/sfc/nic.h | 70 +++++++------ drivers/net/ethernet/sfc/siena.c | 2 +- drivers/net/ethernet/sfc/siena_sriov.c | 179 +++++++++++++++++---------------- 6 files changed, 149 insertions(+), 141 deletions(-)
drivers/net/ethernet/sfc/efx.c +11 -10
@@ -1314,7 +1314,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 */ -if (efx_sriov_wanted (efx) &&efx_vf_size (efx) >1 && +if (efx_siena_sriov_wanted (efx) &&efx_vf_size (efx) >1 && count >efx_vf_size (efx)) {netif_warn (efx, probe, efx->net_dev, "Reducing number of RSS channels from %u to %u for "
@@ -1426,7 +1426,8 @@ static int efx_probe_interrupts(struct efx_nic *efx) }/* RSS might be usable on VFs even if it is disabled on the PF */ - efx->rss_spread = ((efx->n_rx_channels >1 || !efx_sriov_wanted (efx)) ? + efx->rss_spread = ((efx->n_rx_channels >1 || + !efx_siena_sriov_wanted (efx)) ? efx->n_rx_channels :efx_vf_size (efx));return 0 ;
@@ -2166,7 +2167,7 @@ static int efx_set_mac_address(struct net_device *net_dev, void *data) }ether_addr_copy (net_dev->dev_addr, new_addr); -efx_sriov_mac_address_changed (efx); +efx_siena_sriov_mac_address_changed (efx);/* Reconfigure the MAC */ mutex_lock (&efx->mac_lock);
@@ -2210,10 +2211,10 @@ static const struct net_device_ops efx_farch_netdev_ops = { .ndo_set_rx_mode = efx_set_rx_mode, .ndo_set_features = efx_set_features,#ifdef CONFIG_SFC_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, - .ndo_get_vf_config = efx_sriov_get_vf_config, + .ndo_set_vf_mac = efx_siena_sriov_set_vf_mac, + .ndo_set_vf_vlan = efx_siena_sriov_set_vf_vlan, + .ndo_set_vf_spoofchk = efx_siena_sriov_set_vf_spoofchk, + .ndo_get_vf_config = efx_siena_sriov_get_vf_config,#endif #ifdef CONFIG_NET_POLL_CONTROLLER .ndo_poll_controller = efx_netpoll,
@@ -2433,7 +2434,7 @@ int efx_reset_up(struct efx_nic *efx, enum reset_type method, bool ok)if (rc) goto fail;efx_restore_filters (efx); -efx_sriov_reset (efx); +efx_siena_sriov_reset (efx);mutex_unlock (&efx->mac_lock);
@@ -2826,7 +2827,7 @@ static void efx_pci_remove(struct pci_dev *pci_dev)efx_disable_interrupts (efx);rtnl_unlock (); -efx_sriov_fini (efx); +efx_siena_sriov_fini (efx);efx_unregister_netdev (efx);efx_mtd_remove (efx);
@@ -3023,7 +3024,7 @@ static int efx_pci_probe(struct pci_dev *pci_dev,if (rc) goto fail4; - rc =efx_sriov_init (efx); + rc =efx_siena_sriov_init (efx);if (rc)netif_err (efx, probe, efx->net_dev,"SR-IOV can't be enabled rc %d\n" , rc);
drivers/net/ethernet/sfc/farch.c +8 -8
@@ -240,7 +240,7 @@ static int efx_alloc_special_buffer(struct efx_nic *efx, buffer->index = efx->next_buffer_table; efx->next_buffer_table += buffer->entries;#ifdef CONFIG_SFC_SRIOV -BUG_ON (efx_sriov_enabled (efx) && +BUG_ON (efx_siena_sriov_enabled (efx) && nic_data->vf_buftbl_base < efx->next_buffer_table);#endif
@@ -670,7 +670,7 @@ static int efx_farch_do_flush(struct efx_nic *efx)* the firmware (though we will still have to poll for * completion). If that fails, fall back to the old scheme. */ -if (efx_sriov_enabled (efx)) { +if (efx_siena_sriov_enabled (efx)) { rc =efx_mcdi_flush_rxqs (efx);if (!rc) goto wait;
@@ -1198,13 +1198,13 @@ 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); -efx_sriov_tx_flush_done (efx, event); +efx_siena_sriov_tx_flush_done (efx, event);break ;case FSE_AZ_RX_DESCQ_FLS_DONE_EV :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); -efx_sriov_rx_flush_done (efx, event); +efx_siena_sriov_rx_flush_done (efx, event);break ;case FSE_AZ_EVQ_INIT_DONE_EV : netif_dbg(efx, hw, efx->net_dev,
@@ -1243,7 +1243,7 @@ efx_farch_handle_driver_event(struct efx_channel *channel, efx_qword_t *event) ev_sub_data);efx_schedule_reset (efx,RESET_TYPE_DMA_ERROR ); }else -efx_sriov_desc_fetch_err (efx, ev_sub_data); +efx_siena_sriov_desc_fetch_err (efx, ev_sub_data);break ;case FSE_BZ_TX_DSC_ERROR_EV :if (ev_sub_data <EFX_VI_BASE ) {
@@ -1253,7 +1253,7 @@ efx_farch_handle_driver_event(struct efx_channel *channel, efx_qword_t *event) ev_sub_data);efx_schedule_reset (efx,RESET_TYPE_DMA_ERROR ); }else -efx_sriov_desc_fetch_err (efx, ev_sub_data); +efx_siena_sriov_desc_fetch_err (efx, ev_sub_data);break ;default : netif_vdbg(efx, hw, efx->net_dev,
@@ -1318,7 +1318,7 @@ int efx_farch_ev_process(struct efx_channel *channel, int budget)efx_farch_handle_driver_event (channel, &event);break ;case FSE_CZ_EV_CODE_USER_EV : -efx_sriov_event (channel, &event); +efx_siena_sriov_event (channel, &event);break ;case FSE_CZ_EV_CODE_MCDI_EV :efx_mcdi_process_event (channel, &event);
@@ -1685,7 +1685,7 @@ void efx_farch_dimension_resources(struct efx_nic *efx, unsigned sram_lim_qw) vi_count =max (efx->n_channels, efx->n_tx_channels *EFX_TXQ_TYPES );#ifdef CONFIG_SFC_SRIOV -if (efx_sriov_wanted (efx)) { +if (efx_siena_sriov_wanted (efx)) {unsigned vi_dc_entries, buftbl_free, entries_per_vf, vf_limit; nic_data->vf_buftbl_base = buftbl_min;
drivers/net/ethernet/sfc/mcdi.c +1 -1
@@ -1035,7 +1035,7 @@ void efx_mcdi_process_event(struct efx_channel *channel,/* MAC stats are gather lazily. We can ignore this. */ break ;case MCDI_EVENT_CODE_FLR : -efx_sriov_flr (efx,MCDI_EVENT_FIELD (*event,FLR_VF )); +efx_siena_sriov_flr (efx,MCDI_EVENT_FIELD (*event,FLR_VF ));break ;case MCDI_EVENT_CODE_PTP_RX :case MCDI_EVENT_CODE_PTP_FAULT :
drivers/net/ethernet/sfc/nic.h +37 -33
99 lines not on this page · raw message
drivers/net/ethernet/sfc/siena.c +1 -1
@@ -307,7 +307,7 @@ static int siena_probe_nic(struct efx_nic *efx)if (rc) goto fail5; -efx_sriov_probe (efx); +efx_siena_sriov_probe (efx);efx_ptp_defer_probe_with_channel (efx);return 0 ;
drivers/net/ethernet/sfc/siena_sriov.c +91 -88
574 lines not on this page · raw message
PATCH 3/3 sfc: Add NIC type operations to replace direct calls from efx.c into siena_sriov.c
In reply to Shradha ShahAlso add dummy functions where required to avoid NULL pointer dereference.
--- drivers/net/ethernet/sfc/ef10.c | 5 +++++ drivers/net/ethernet/sfc/efx.c | 13 +++++++------ drivers/net/ethernet/sfc/falcon.c | 10 ++++++++++ drivers/net/ethernet/sfc/farch.c | 2 +- drivers/net/ethernet/sfc/net_driver.h | 5 +++++ drivers/net/ethernet/sfc/nic.h | 24 +++++++++++++++++++++++- drivers/net/ethernet/sfc/siena.c | 5 +++++ 7 files changed, 56 insertions(+), 8 deletions(-)
drivers/net/ethernet/sfc/ef10.c +5 -0
@@ -3688,6 +3688,11 @@ const struct efx_nic_type efx_hunt_a0_nic_type = { .ptp_write_host_time = efx_ef10_ptp_write_host_time, .ptp_set_ts_sync_events = efx_ef10_ptp_set_ts_sync_events, .ptp_set_ts_config = efx_ef10_ptp_set_ts_config, + .sriov_init = efx_ef10_sriov_init, + .sriov_fini = efx_ef10_sriov_fini, + .sriov_mac_address_changed = efx_ef10_sriov_mac_address_changed, + .sriov_wanted = efx_ef10_sriov_wanted, + .sriov_reset = efx_ef10_sriov_reset, .revision = EFX_REV_HUNT_A0, .max_dma_mask = DMA_BIT_MASK(ESF_DZ_TX_KER_BUF_ADDR_WIDTH),
drivers/net/ethernet/sfc/efx.c +7 -6
@@ -1314,7 +1314,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 */ -if (efx_siena_sriov_wanted (efx) &&efx_vf_size (efx) >1 && +if (efx->type->sriov_wanted (efx) &&efx_vf_size (efx) >1 && count >efx_vf_size (efx)) {netif_warn (efx, probe, efx->net_dev, "Reducing number of RSS channels from %u to %u for "
@@ -1426,8 +1426,9 @@ static int efx_probe_interrupts(struct efx_nic *efx) }/* RSS might be usable on VFs even if it is disabled on the PF */ + efx->rss_spread = ((efx->n_rx_channels >1 || - !efx_siena_sriov_wanted (efx)) ? + !efx->type->sriov_wanted (efx)) ? efx->n_rx_channels :efx_vf_size (efx));return 0 ;
@@ -2167,7 +2168,7 @@ static int efx_set_mac_address(struct net_device *net_dev, void *data) }ether_addr_copy (net_dev->dev_addr, new_addr); -efx_siena_sriov_mac_address_changed (efx); + efx->type->sriov_mac_address_changed (efx);/* Reconfigure the MAC */ mutex_lock (&efx->mac_lock);
@@ -2434,7 +2435,7 @@ int efx_reset_up(struct efx_nic *efx, enum reset_type method, bool ok)if (rc) goto fail;efx_restore_filters (efx); -efx_siena_sriov_reset (efx); + efx->type->sriov_reset (efx);mutex_unlock (&efx->mac_lock);
@@ -2827,7 +2828,7 @@ static void efx_pci_remove(struct pci_dev *pci_dev)efx_disable_interrupts (efx);rtnl_unlock (); -efx_siena_sriov_fini (efx); + efx->type->sriov_fini (efx);efx_unregister_netdev (efx);efx_mtd_remove (efx);
@@ -3024,7 +3025,7 @@ static int efx_pci_probe(struct pci_dev *pci_dev,if (rc) goto fail4; - rc =efx_siena_sriov_init (efx); + rc = efx->type->sriov_init (efx);if (rc)netif_err (efx, probe, efx->net_dev,"SR-IOV can't be enabled rc %d\n" , rc);
drivers/net/ethernet/sfc/falcon.c +10 -0
@@ -2766,6 +2766,11 @@ const struct efx_nic_type falcon_a1_nic_type = { .mtd_write = falcon_mtd_write, .mtd_sync = falcon_mtd_sync, #endif + .sriov_init = efx_falcon_sriov_init, + .sriov_fini = efx_falcon_sriov_fini, + .sriov_mac_address_changed = efx_falcon_sriov_mac_address_changed, + .sriov_wanted = efx_falcon_sriov_wanted, + .sriov_reset = efx_falcon_sriov_reset, .revision = EFX_REV_FALCON_A1, .txd_ptr_tbl_base = FR_AA_TX_DESC_PTR_TBL_KER,
@@ -2862,6 +2867,11 @@ const struct efx_nic_type falcon_b0_nic_type = { .mtd_write = falcon_mtd_write, .mtd_sync = falcon_mtd_sync, #endif + .sriov_init = efx_falcon_sriov_init, + .sriov_fini = efx_falcon_sriov_fini, + .sriov_mac_address_changed = efx_falcon_sriov_mac_address_changed, + .sriov_wanted = efx_falcon_sriov_wanted, + .sriov_reset = efx_falcon_sriov_reset, .revision = EFX_REV_FALCON_B0, .txd_ptr_tbl_base = FR_BZ_TX_DESC_PTR_TBL,
drivers/net/ethernet/sfc/farch.c +1 -1
@@ -1685,7 +1685,7 @@ void efx_farch_dimension_resources(struct efx_nic *efx, unsigned sram_lim_qw) vi_count =max (efx->n_channels, efx->n_tx_channels *EFX_TXQ_TYPES );#ifdef CONFIG_SFC_SRIOV -if (efx_siena_sriov_wanted (efx)) { +if (efx->type->sriov_wanted (efx)) {unsigned vi_dc_entries, buftbl_free, entries_per_vf, vf_limit; nic_data->vf_buftbl_base = buftbl_min;
drivers/net/ethernet/sfc/net_driver.h +5 -0
@@ -1330,6 +1330,11 @@ struct efx_nic_type {int (*ptp_set_ts_sync_events)(struct efx_nic *efx,bool en,bool temp);int (*ptp_set_ts_config)(struct efx_nic *efx,struct hwtstamp_config *init); +int (*sriov_init)(struct efx_nic *efx); +void (*sriov_fini)(struct efx_nic *efx); +void (*sriov_mac_address_changed)(struct efx_nic *efx); +bool (*sriov_wanted)(struct efx_nic *efx); +void (*sriov_reset)(struct efx_nic *efx);int revision;unsigned int txd_ptr_tbl_base;
drivers/net/ethernet/sfc/nic.h +23 -1
@@ -540,6 +540,7 @@ struct efx_ef10_nic_data {#ifdef CONFIG_SFC_SRIOV +/* SIENA */ static inline bool efx_siena_sriov_wanted (struct efx_nic *efx) {return efx->vf_count !=0 ;
@@ -568,12 +569,19 @@ void efx_siena_sriov_reset(struct efx_nic *efx);void efx_siena_sriov_fini (struct efx_nic *efx);void efx_fini_sriov (void ); +/* EF10 */ +static inline bool efx_ef10_sriov_wanted (struct efx_nic *efx) {return false; } +static inline int efx_ef10_sriov_init (struct efx_nic *efx) {return -EOPNOTSUPP ; } +static inline void efx_ef10_sriov_mac_address_changed (struct efx_nic *efx) {} +static inline void efx_ef10_sriov_reset (struct efx_nic *efx) {} +static inline void efx_ef10_sriov_fini (struct efx_nic *efx) {} +#else +/* SIENA */ static inline bool efx_siena_sriov_wanted (struct efx_nic *efx) {return false; }static inline bool efx_siena_sriov_enabled (struct efx_nic *efx) {return false; }static inline unsigned int efx_vf_size (struct efx_nic *efx) {return 0 ; } -static inline int efx_init_sriov (void ) {return 0 ; }static inline void efx_siena_sriov_probe (struct efx_nic *efx) {}static inline int efx_siena_sriov_init (struct efx_nic *efx) {return -EOPNOTSUPP ; }
@@ -591,8 +599,22 @@ static inline void efx_siena_sriov_reset(struct efx_nic *efx) {}static inline void efx_siena_sriov_fini (struct efx_nic *efx) {}static inline void efx_fini_sriov (void ) {} +/* EF10 */ +static inline bool efx_ef10_sriov_wanted (struct efx_nic *efx) {return false; } +static inline int efx_ef10_sriov_init (struct efx_nic *efx) {return -EOPNOTSUPP ; } +static inline void efx_ef10_sriov_mac_address_changed (struct efx_nic *efx) {} +static inline void efx_ef10_sriov_reset (struct efx_nic *efx) {} +static inline void efx_ef10_sriov_fini (struct efx_nic *efx) {} +#endif +/* FALCON */ +static inline bool efx_falcon_sriov_wanted (struct efx_nic *efx) {return false; } +static inline int efx_falcon_sriov_init (struct efx_nic *efx) {return -EOPNOTSUPP ; } +static inline void efx_falcon_sriov_mac_address_changed (struct efx_nic *efx) {} +static inline void efx_falcon_sriov_reset (struct efx_nic *efx) {} +static inline void efx_falcon_sriov_fini (struct efx_nic *efx) {} +int efx_siena_sriov_set_vf_mac (struct net_device *dev,int vf,u8 *mac);int efx_siena_sriov_set_vf_vlan (struct net_device *dev,int vf,u16 vlan,u8 qos);
drivers/net/ethernet/sfc/siena.c +5 -0
@@ -997,6 +997,11 @@ 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, + .sriov_init = efx_siena_sriov_init, + .sriov_fini = efx_siena_sriov_fini, + .sriov_mac_address_changed = efx_siena_sriov_mac_address_changed, + .sriov_wanted = efx_siena_sriov_wanted, + .sriov_reset = efx_siena_sriov_reset, .revision = EFX_REV_SIENA_A0, .txd_ptr_tbl_base = FR_BZ_TX_DESC_PTR_TBL,
David Miller
maintainerFrom: Shradha Shah <[email protected]>
Date: Wed, 5 Nov 2014 12:15:09 +0000
Quoted 2 lines
This patch series provides a base and clean up for the upcoming EF10 SRIOV patches.
Series applied, thanks.