freebsd-skq/sys/dev/etherswitch/etherswitch_if.m
ray 304e13439b Locking for etherswitch framework:
* add lock/unlock methods;
* add lock/unlock default implementation;
* surround switch IOCTLs with locking;
* add lock/unlock implementation for arswitch;

Submitted by:	Luiz Otavio O Souza
Approved by:	adrian (mentor)
2012-10-15 12:20:40 +00:00

116 lines
1.4 KiB
Objective-C

# $FreeBSD$
#include <sys/bus.h>
# Needed for ifreq/ifmediareq
#include <sys/socket.h>
#include <net/if.h>
#include <dev/etherswitch/etherswitch.h>
INTERFACE etherswitch;
#
# Default implementation
#
CODE {
static void
null_etherswitch_lock(device_t dev)
{
}
static void
null_etherswitch_unlock(device_t dev)
{
}
};
#
# Return device info
#
METHOD etherswitch_info_t* getinfo {
device_t dev;
}
#
# Lock access to switch registers
#
METHOD void lock {
device_t dev;
} DEFAULT null_etherswitch_lock;
#
# Unlock access to switch registers
#
METHOD void unlock {
device_t dev;
} DEFAULT null_etherswitch_unlock;
#
# Read switch register
#
METHOD int readreg {
device_t dev;
int reg;
};
#
# Write switch register
#
METHOD int writereg {
device_t dev;
int reg;
int value;
};
#
# Read PHY register
#
METHOD int readphyreg {
device_t dev;
int phy;
int reg;
};
#
# Write PHY register
#
METHOD int writephyreg {
device_t dev;
int phy;
int reg;
int value;
};
#
# Get port configuration
#
METHOD int getport {
device_t dev;
etherswitch_port_t *vg;
}
#
# Set port configuration
#
METHOD int setport {
device_t dev;
etherswitch_port_t *vg;
}
#
# Get VLAN group configuration
#
METHOD int getvgroup {
device_t dev;
etherswitch_vlangroup_t *vg;
}
#
# Set VLAN group configuration
#
METHOD int setvgroup {
device_t dev;
etherswitch_vlangroup_t *vg;
}