/* mbox message */ struct octep_ctrl_mbox_msg { /* mbox transaction header */ union octep_ctrl_mbox_msg_hdr hdr; /* number of sg buffer's */ int sg_num; /* message buffer's */ struct octep_ctrl_mbox_msg_buf sg_list[OCTEP_CTRL_MBOX_MSG_DESC_MAX];
};
/* Mbox queue */ struct octep_ctrl_mbox_q { /* size of queue buffer */
u32 sz; /* producer address in bar mem */
u8 __iomem *hw_prod; /* consumer address in bar mem */
u8 __iomem *hw_cons; /* q base address in bar mem */
u8 __iomem *hw_q;
};
struct octep_ctrl_mbox { /* control plane version */
u64 version; /* size of bar memory */
u32 barmem_sz; /* pointer to BAR memory */
u8 __iomem *barmem; /* host-to-fw queue */ struct octep_ctrl_mbox_q h2fq; /* fw-to-host queue */ struct octep_ctrl_mbox_q f2hq; /* lock for h2fq */ struct mutex h2fq_lock; /* lock for f2hq */ struct mutex f2hq_lock; /* Min control plane version supported by firmware */
u32 min_fw_version; /* Max control plane version supported by firmware */
u32 max_fw_version;
};
/* Initialize control mbox. * * @param mbox: non-null pointer to struct octep_ctrl_mbox. * * return value: 0 on success, -errno on failure.
*/ int octep_ctrl_mbox_init(struct octep_ctrl_mbox *mbox);
/* Send mbox message. * * @param mbox: non-null pointer to struct octep_ctrl_mbox. * @param msg: non-null pointer to struct octep_ctrl_mbox_msg. * Caller should fill msg.sz and msg.desc.sz for each message. * * return value: 0 on success, -errno on failure.
*/ int octep_ctrl_mbox_send(struct octep_ctrl_mbox *mbox, struct octep_ctrl_mbox_msg *msg);
/* Retrieve mbox message. * * @param mbox: non-null pointer to struct octep_ctrl_mbox. * @param msg: non-null pointer to struct octep_ctrl_mbox_msg. * Caller should fill msg.sz and msg.desc.sz for each message. * * return value: 0 on success, -errno on failure.
*/ int octep_ctrl_mbox_recv(struct octep_ctrl_mbox *mbox, struct octep_ctrl_mbox_msg *msg);
/* Uninitialize control mbox. * * @param mbox: non-null pointer to struct octep_ctrl_mbox. * * return value: 0 on success, -errno on failure.
*/ int octep_ctrl_mbox_uninit(struct octep_ctrl_mbox *mbox);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.