rendered paste body#include </usr/src/sys/net/ethernet.h>
#define PROTO_USB_CONF 0x03
//#define VENDOR_USB_REQUEST (USB_DIR_IN | USB_TYPE_VENDOR) use UT_READ_VENDOR_DEVICE
#define CONTROL_USB_GET_MAC_ADDR_UT_02 0x63
#define CONTROL_USB_GET_MAC_ADDR_UT_04 0x4d
#define UT_DEVICE_UT_02 0x0101
#define UT_DEVICE_UT_04 0x0401
#define IB_PROTO 0xac
#define STATUS_READY 0x06
/**
* enum ib_net_flag - radio frame flag field.
*/
enum ib_net_flag
{
FLAG_BROADCAST = 0x08,
FLAG_EXTENSION = 0x80,
};
/**
* struct ib_net_radio_t - radio frame header.
* @word: packet length and flags.
* word[0].2 word[0].1 word[0].0 word[1]: packet length.
* word[0].3: broadcast flag.
* word[0].6 word[0].5 word[0].4: priority field (ignore this field).
* word[0].7: extension flag (drop packet if set).
* @packet: packet identifier.
* @check: ones' complement of word[1].
* @proto: next protocol field.
* @payload: payload.
*/
struct ib_net_radio_t {
unsigned char word[2];
unsigned char packet;
unsigned char check;
unsigned char proto[2];
unsigned char payload[0];
};
#define IB_NET_RADIO_HEAD sizeof(struct ib_net_radio_t)
#define IB_NET_RADIO_SIZE ((IB_NET_RADIO_HEAD + ETH_DATA_LEN + 31) & ~31)
#define IB_NET_NBUF(word0, word1) ((((word0) & 0x07) << 8) | (word1))
/**
* struct ib_net_ether_t - ethernet frame header.
* @dest: destination MAC address.
* @source: source MAC address.
* @proto: next protocol field.
* @payload: payload.
*/
struct ib_net_ether_t {
unsigned char dest[ETHER_ADDR_LEN];
unsigned char source[ETHER_ADDR_LEN];
unsigned char proto[2];
unsigned char payload[0];
};
#define IB_NET_ETHER_HEAD sizeof(struct ib_net_ether_t)
#if 0
#define IB_LOCK(_sc) mtx_lock(&(_sc)->ib_mtx)
#define IB_UNLOCK(_sc) mtx_unlock(&(_sc)->ib_mtx)
#else
#define IB_LOCK(_sc)
#define IB_UNLOCK(_sc)
#endif