Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/hyperv/netvsc/if_hnvar.h
Show All 26 Lines | |||||
*/ | */ | ||||
#ifndef _IF_HNVAR_H_ | #ifndef _IF_HNVAR_H_ | ||||
#define _IF_HNVAR_H_ | #define _IF_HNVAR_H_ | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <dev/hyperv/include/vmbus.h> | #include <dev/hyperv/include/vmbus.h> | ||||
#include <dev/hyperv/netvsc/hv_net_vsc.h> | #include <dev/hyperv/netvsc/if_hnreg.h> | ||||
struct netvsc_dev_; | struct netvsc_dev_; | ||||
struct nvsp_msg_; | struct nvsp_msg_; | ||||
struct vmbus_channel; | struct vmbus_channel; | ||||
struct hn_send_ctx; | struct hn_send_ctx; | ||||
typedef void (*hn_sent_callback_t) | typedef void (*hn_sent_callback_t) | ||||
(struct hn_send_ctx *, struct netvsc_dev_ *, | (struct hn_send_ctx *, struct netvsc_dev_ *, | ||||
struct vmbus_channel *, const struct nvsp_msg_ *, int); | struct vmbus_channel *, const struct nvsp_msg_ *, int); | ||||
struct hn_send_ctx { | struct hn_send_ctx { | ||||
hn_sent_callback_t hn_cb; | hn_sent_callback_t hn_cb; | ||||
void *hn_cbarg; | void *hn_cbarg; | ||||
uint32_t hn_chim_idx; | uint32_t hn_chim_idx; | ||||
int hn_chim_sz; | int hn_chim_sz; | ||||
}; | }; | ||||
#define HN_SEND_CTX_INITIALIZER(cb, cbarg) \ | #define HN_SEND_CTX_INITIALIZER(cb, cbarg) \ | ||||
{ \ | { \ | ||||
.hn_cb = cb, \ | .hn_cb = cb, \ | ||||
.hn_cbarg = cbarg, \ | .hn_cbarg = cbarg, \ | ||||
.hn_chim_idx = NVSP_1_CHIMNEY_SEND_INVALID_SECTION_INDEX, \ | .hn_chim_idx = HN_NVS_CHIM_IDX_INVALID, \ | ||||
.hn_chim_sz = 0 \ | .hn_chim_sz = 0 \ | ||||
} | } | ||||
static __inline void | static __inline void | ||||
hn_send_ctx_init(struct hn_send_ctx *sndc, hn_sent_callback_t cb, | hn_send_ctx_init(struct hn_send_ctx *sndc, hn_sent_callback_t cb, | ||||
void *cbarg, uint32_t chim_idx, int chim_sz) | void *cbarg, uint32_t chim_idx, int chim_sz) | ||||
{ | { | ||||
sndc->hn_cb = cb; | sndc->hn_cb = cb; | ||||
sndc->hn_cbarg = cbarg; | sndc->hn_cbarg = cbarg; | ||||
sndc->hn_chim_idx = chim_idx; | sndc->hn_chim_idx = chim_idx; | ||||
sndc->hn_chim_sz = chim_sz; | sndc->hn_chim_sz = chim_sz; | ||||
} | } | ||||
static __inline void | static __inline void | ||||
hn_send_ctx_init_simple(struct hn_send_ctx *sndc, hn_sent_callback_t cb, | hn_send_ctx_init_simple(struct hn_send_ctx *sndc, hn_sent_callback_t cb, | ||||
void *cbarg) | void *cbarg) | ||||
{ | { | ||||
hn_send_ctx_init(sndc, cb, cbarg, | hn_send_ctx_init(sndc, cb, cbarg, HN_NVS_CHIM_IDX_INVALID, 0); | ||||
NVSP_1_CHIMNEY_SEND_INVALID_SECTION_INDEX, 0); | |||||
} | } | ||||
static __inline int | static __inline int | ||||
hn_nvs_send(struct vmbus_channel *chan, uint16_t flags, | hn_nvs_send(struct vmbus_channel *chan, uint16_t flags, | ||||
void *nvs_msg, int nvs_msglen, struct hn_send_ctx *sndc) | void *nvs_msg, int nvs_msglen, struct hn_send_ctx *sndc) | ||||
{ | { | ||||
return (vmbus_chan_send(chan, VMBUS_CHANPKT_TYPE_INBAND, flags, | return (vmbus_chan_send(chan, VMBUS_CHANPKT_TYPE_INBAND, flags, | ||||
Show All 18 Lines |