Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[intelxl] Provide a mechanism for handling "send to VF" events
Provide a weak stub function for handling the "send to VF" event used
for communications between the physical and virtual function drivers.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Apr 27, 2019
1 parent 17298d0 commit 7676924
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/drivers/net/intelxl.c
Expand Up @@ -658,6 +658,21 @@ static int intelxl_admin_link ( struct net_device *netdev ) {
return 0;
}

/**
* Handle virtual function event (when VF driver is not present)
*
* @v netdev Network device
* @v evt Admin queue event descriptor
* @v buf Admin queue event data buffer
*/
__weak void
intelxlvf_admin_event ( struct net_device *netdev __unused,
struct intelxl_admin_descriptor *evt __unused,
union intelxl_admin_buffer *buf __unused ) {

/* Nothing to do */
}

/**
* Refill admin event queue
*
Expand Down Expand Up @@ -711,6 +726,9 @@ static void intelxl_poll_admin ( struct net_device *netdev ) {
case cpu_to_le16 ( INTELXL_ADMIN_LINK ):
intelxl_admin_link ( netdev );
break;
case cpu_to_le16 ( INTELXL_ADMIN_SEND_TO_VF ):
intelxlvf_admin_event ( netdev, evt, buf );
break;
default:
DBGC ( intelxl, "INTELXL %p admin event %#x "
"unrecognised opcode %#04x\n", intelxl,
Expand Down
10 changes: 10 additions & 0 deletions src/drivers/net/intelxl.h
Expand Up @@ -289,6 +289,12 @@ struct intelxl_admin_link_params {
/** Link is up */
#define INTELXL_ADMIN_LINK_UP 0x01

/** Admin queue Send Message to PF command */
#define INTELXL_ADMIN_SEND_TO_PF 0x0801

/** Admin queue Send Message to VF command */
#define INTELXL_ADMIN_SEND_TO_VF 0x0802

/** Admin queue command parameters */
union intelxl_admin_params {
/** Additional data buffer command parameters */
Expand Down Expand Up @@ -824,4 +830,8 @@ struct intelxl_nic {
struct io_buffer *rx_iobuf[INTELXL_RX_NUM_DESC];
};

extern void intelxlvf_admin_event ( struct net_device *netdev,
struct intelxl_admin_descriptor *evt,
union intelxl_admin_buffer *buf );

#endif /* _INTELXL_H */

0 comments on commit 7676924

Please sign in to comment.