Blame view

kernel/linux-rt-4.4.41/drivers/net/ethernet/sfc/ef10_sriov.h 2.62 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  /****************************************************************************
   * Driver for Solarflare network controllers and boards
   * Copyright 2015 Solarflare Communications Inc.
   *
   * This program is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 as published
   * by the Free Software Foundation, incorporated herein by reference.
   */
  
  #ifndef EF10_SRIOV_H
  #define EF10_SRIOV_H
  
  #include "net_driver.h"
  
  /**
   * struct ef10_vf - PF's store of VF data
   * @efx: efx_nic struct for the current VF
   * @pci_dev: the pci_dev struct for the VF, retained while the VF is assigned
   * @vport_id: vport ID for the VF
   * @vport_assigned: record whether the vport is currently assigned to the VF
   * @mac: MAC address for the VF, zero when address is removed from the vport
   * @vlan: Default VLAN for the VF or #EFX_EF10_NO_VLAN
   */
  struct ef10_vf {
  	struct efx_nic *efx;
  	struct pci_dev *pci_dev;
  	unsigned int vport_id;
  	unsigned int vport_assigned;
  	u8 mac[ETH_ALEN];
  	u16 vlan;
  #define EFX_EF10_NO_VLAN       0
  };
  
  static inline bool efx_ef10_sriov_wanted(struct efx_nic *efx)
  {
  	return false;
  }
  
  int efx_ef10_sriov_configure(struct efx_nic *efx, int num_vfs);
  int efx_ef10_sriov_init(struct efx_nic *efx);
  static inline void efx_ef10_sriov_reset(struct efx_nic *efx) {}
  void efx_ef10_sriov_fini(struct efx_nic *efx);
  static inline void efx_ef10_sriov_flr(struct efx_nic *efx, unsigned vf_i) {}
  
  int efx_ef10_sriov_set_vf_mac(struct efx_nic *efx, int vf, u8 *mac);
  
  int efx_ef10_sriov_set_vf_vlan(struct efx_nic *efx, int vf_i,
  			       u16 vlan, u8 qos);
  
  int efx_ef10_sriov_set_vf_spoofchk(struct efx_nic *efx, int vf,
  				   bool spoofchk);
  
  int efx_ef10_sriov_get_vf_config(struct efx_nic *efx, int vf_i,
  				 struct ifla_vf_info *ivf);
  
  int efx_ef10_sriov_set_vf_link_state(struct efx_nic *efx, int vf_i,
  				     int link_state);
  
  int efx_ef10_sriov_get_phys_port_id(struct efx_nic *efx,
  				    struct netdev_phys_item_id *ppid);
  
  int efx_ef10_vswitching_probe_pf(struct efx_nic *efx);
  int efx_ef10_vswitching_probe_vf(struct efx_nic *efx);
  int efx_ef10_vswitching_restore_pf(struct efx_nic *efx);
  int efx_ef10_vswitching_restore_vf(struct efx_nic *efx);
  void efx_ef10_vswitching_remove_pf(struct efx_nic *efx);
  void efx_ef10_vswitching_remove_vf(struct efx_nic *efx);
  int efx_ef10_vport_add_mac(struct efx_nic *efx,
  			   unsigned int port_id, u8 *mac);
  int efx_ef10_vport_del_mac(struct efx_nic *efx,
  			   unsigned int port_id, u8 *mac);
  int efx_ef10_vadaptor_alloc(struct efx_nic *efx, unsigned int port_id);
  int efx_ef10_vadaptor_free(struct efx_nic *efx, unsigned int port_id);
  
  #endif /* EF10_SRIOV_H */