Index: sys/dev/ixl/if_ixl.c =================================================================== --- sys/dev/ixl/if_ixl.c +++ sys/dev/ixl/if_ixl.c @@ -5562,6 +5562,38 @@ } static void +ixl_vf_config_tx_msg(struct ixl_pf *pf, struct ixl_vf *vf, void *msg, + uint16_t msg_size) +{ + + if (msg_size != sizeof(struct i40e_virtchnl_txq_info)) { + i40e_send_vf_nack(pf, vf, I40E_VIRTCHNL_OP_CONFIG_TX_QUEUE, + I40E_ERR_PARAM); + return; + } + + /* Also not implemented in Linux PF driver. */ + i40e_send_vf_nack(pf, vf, I40E_VIRTCHNL_OP_CONFIG_TX_QUEUE, + I40E_ERR_NOT_IMPLEMENTED); +} + +static void +ixl_vf_config_rx_msg(struct ixl_pf *pf, struct ixl_vf *vf, void *msg, + uint16_t msg_size) +{ + + if (msg_size != sizeof(struct i40e_virtchnl_rxq_info)) { + i40e_send_vf_nack(pf, vf, I40E_VIRTCHNL_OP_CONFIG_RX_QUEUE, + I40E_ERR_PARAM); + return; + } + + /* Also not implemented in Linux PF driver. */ + i40e_send_vf_nack(pf, vf, I40E_VIRTCHNL_OP_CONFIG_RX_QUEUE, + I40E_ERR_NOT_IMPLEMENTED); +} + +static void ixl_handle_vf_msg(struct ixl_pf *pf, struct i40e_arq_event_info *event) { struct ixl_vf *vf; @@ -5595,6 +5627,12 @@ case I40E_VIRTCHNL_OP_GET_VF_RESOURCES: ixl_vf_get_resources_msg(pf, vf, msg, msg_size); break; + case I40E_VIRTCHNL_OP_CONFIG_TX_QUEUE: + ixl_vf_config_tx_msg(pf, vf, msg, msg_size); + break; + case I40E_VIRTCHNL_OP_CONFIG_RX_QUEUE: + ixl_vf_config_rx_msg(pf, vf, msg, msg_size); + break; default: i40e_send_vf_nack(pf, vf, opcode, I40E_ERR_NOT_IMPLEMENTED); break;