/* The following definitions are for users of the vport subsytem: */
-void vport_lock(void);
-void vport_unlock(void);
-
int vport_init(void);
void vport_exit(void);
/**
* struct vport - one port within a datapath
+ * @rcu: RCU callback head for deferred destruction.
* @port_no: Index into @dp's @ports array.
* @dp: Datapath to which this port belongs.
* @kobj: Represents /sys/class/net/<devname>/brport.
* XAPI for Citrix XenServer. Deprecated.
*/
struct vport {
+ struct rcu_head rcu;
u16 port_no;
struct datapath *dp;
struct kobject kobj;
* @exit: Called at module unload.
* @create: Create a new vport configured as specified. On success returns
* a new vport allocated with vport_alloc(), otherwise an ERR_PTR() value.
- * @destroy: Detach and destroy a vport.
+ * @destroy: Destroys a vport. Must call vport_free() on the vport but not
+ * before an RCU grace period has elapsed.
* @set_options: Modify the configuration of an existing vport. May be %NULL
* if modification is not supported.
* @get_options: Appends vport-specific attributes for the configuration of an
* @get_iflink: Get the system interface index associated with the device that
* will be used to send packets (may be different than ifindex for tunnels).
* May be null if the device does not have an iflink.
- * @get_mtu: Get the device's MTU.
+ * @get_mtu: Get the device's MTU. May be %NULL if the device does not have an
+ * MTU (as e.g. some tunnels do not).
* @send: Send a packet on the device. Returns the length of the packet sent.
*/
struct vport_ops {