iavf: rename i40e_status to iavf_status
This is just a rename of an internal variable i40e_status, but it was a pretty big change and so deserved it's own patch. Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
129cf89e58
commit
0b6591e646
|
@ -34,9 +34,9 @@ static void i40e_adminq_init_regs(struct i40e_hw *hw)
|
||||||
* i40e_alloc_adminq_asq_ring - Allocate Admin Queue send rings
|
* i40e_alloc_adminq_asq_ring - Allocate Admin Queue send rings
|
||||||
* @hw: pointer to the hardware structure
|
* @hw: pointer to the hardware structure
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_alloc_adminq_asq_ring(struct i40e_hw *hw)
|
static iavf_status i40e_alloc_adminq_asq_ring(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code;
|
iavf_status ret_code;
|
||||||
|
|
||||||
ret_code = i40e_allocate_dma_mem(hw, &hw->aq.asq.desc_buf,
|
ret_code = i40e_allocate_dma_mem(hw, &hw->aq.asq.desc_buf,
|
||||||
i40e_mem_atq_ring,
|
i40e_mem_atq_ring,
|
||||||
|
@ -61,9 +61,9 @@ static i40e_status i40e_alloc_adminq_asq_ring(struct i40e_hw *hw)
|
||||||
* i40e_alloc_adminq_arq_ring - Allocate Admin Queue receive rings
|
* i40e_alloc_adminq_arq_ring - Allocate Admin Queue receive rings
|
||||||
* @hw: pointer to the hardware structure
|
* @hw: pointer to the hardware structure
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_alloc_adminq_arq_ring(struct i40e_hw *hw)
|
static iavf_status i40e_alloc_adminq_arq_ring(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code;
|
iavf_status ret_code;
|
||||||
|
|
||||||
ret_code = i40e_allocate_dma_mem(hw, &hw->aq.arq.desc_buf,
|
ret_code = i40e_allocate_dma_mem(hw, &hw->aq.arq.desc_buf,
|
||||||
i40e_mem_arq_ring,
|
i40e_mem_arq_ring,
|
||||||
|
@ -102,11 +102,11 @@ static void i40e_free_adminq_arq(struct i40e_hw *hw)
|
||||||
* i40e_alloc_arq_bufs - Allocate pre-posted buffers for the receive queue
|
* i40e_alloc_arq_bufs - Allocate pre-posted buffers for the receive queue
|
||||||
* @hw: pointer to the hardware structure
|
* @hw: pointer to the hardware structure
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_alloc_arq_bufs(struct i40e_hw *hw)
|
static iavf_status i40e_alloc_arq_bufs(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code;
|
|
||||||
struct i40e_aq_desc *desc;
|
struct i40e_aq_desc *desc;
|
||||||
struct i40e_dma_mem *bi;
|
struct i40e_dma_mem *bi;
|
||||||
|
iavf_status ret_code;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* We'll be allocating the buffer info memory first, then we can
|
/* We'll be allocating the buffer info memory first, then we can
|
||||||
|
@ -115,7 +115,8 @@ static i40e_status i40e_alloc_arq_bufs(struct i40e_hw *hw)
|
||||||
|
|
||||||
/* buffer_info structures do not need alignment */
|
/* buffer_info structures do not need alignment */
|
||||||
ret_code = i40e_allocate_virt_mem(hw, &hw->aq.arq.dma_head,
|
ret_code = i40e_allocate_virt_mem(hw, &hw->aq.arq.dma_head,
|
||||||
(hw->aq.num_arq_entries * sizeof(struct i40e_dma_mem)));
|
(hw->aq.num_arq_entries *
|
||||||
|
sizeof(struct i40e_dma_mem)));
|
||||||
if (ret_code)
|
if (ret_code)
|
||||||
goto alloc_arq_bufs;
|
goto alloc_arq_bufs;
|
||||||
hw->aq.arq.r.arq_bi = (struct i40e_dma_mem *)hw->aq.arq.dma_head.va;
|
hw->aq.arq.r.arq_bi = (struct i40e_dma_mem *)hw->aq.arq.dma_head.va;
|
||||||
|
@ -169,15 +170,16 @@ unwind_alloc_arq_bufs:
|
||||||
* i40e_alloc_asq_bufs - Allocate empty buffer structs for the send queue
|
* i40e_alloc_asq_bufs - Allocate empty buffer structs for the send queue
|
||||||
* @hw: pointer to the hardware structure
|
* @hw: pointer to the hardware structure
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_alloc_asq_bufs(struct i40e_hw *hw)
|
static iavf_status i40e_alloc_asq_bufs(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code;
|
|
||||||
struct i40e_dma_mem *bi;
|
struct i40e_dma_mem *bi;
|
||||||
|
iavf_status ret_code;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* No mapped memory needed yet, just the buffer info structures */
|
/* No mapped memory needed yet, just the buffer info structures */
|
||||||
ret_code = i40e_allocate_virt_mem(hw, &hw->aq.asq.dma_head,
|
ret_code = i40e_allocate_virt_mem(hw, &hw->aq.asq.dma_head,
|
||||||
(hw->aq.num_asq_entries * sizeof(struct i40e_dma_mem)));
|
(hw->aq.num_asq_entries *
|
||||||
|
sizeof(struct i40e_dma_mem)));
|
||||||
if (ret_code)
|
if (ret_code)
|
||||||
goto alloc_asq_bufs;
|
goto alloc_asq_bufs;
|
||||||
hw->aq.asq.r.asq_bi = (struct i40e_dma_mem *)hw->aq.asq.dma_head.va;
|
hw->aq.asq.r.asq_bi = (struct i40e_dma_mem *)hw->aq.asq.dma_head.va;
|
||||||
|
@ -253,9 +255,9 @@ static void i40e_free_asq_bufs(struct i40e_hw *hw)
|
||||||
*
|
*
|
||||||
* Configure base address and length registers for the transmit queue
|
* Configure base address and length registers for the transmit queue
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_config_asq_regs(struct i40e_hw *hw)
|
static iavf_status i40e_config_asq_regs(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code = 0;
|
iavf_status ret_code = 0;
|
||||||
u32 reg = 0;
|
u32 reg = 0;
|
||||||
|
|
||||||
/* Clear Head and Tail */
|
/* Clear Head and Tail */
|
||||||
|
@ -282,9 +284,9 @@ static i40e_status i40e_config_asq_regs(struct i40e_hw *hw)
|
||||||
*
|
*
|
||||||
* Configure base address and length registers for the receive (event queue)
|
* Configure base address and length registers for the receive (event queue)
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_config_arq_regs(struct i40e_hw *hw)
|
static iavf_status i40e_config_arq_regs(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code = 0;
|
iavf_status ret_code = 0;
|
||||||
u32 reg = 0;
|
u32 reg = 0;
|
||||||
|
|
||||||
/* Clear Head and Tail */
|
/* Clear Head and Tail */
|
||||||
|
@ -321,9 +323,9 @@ static i40e_status i40e_config_arq_regs(struct i40e_hw *hw)
|
||||||
* Do *NOT* hold the lock when calling this as the memory allocation routines
|
* Do *NOT* hold the lock when calling this as the memory allocation routines
|
||||||
* called are not going to be atomic context safe
|
* called are not going to be atomic context safe
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_init_asq(struct i40e_hw *hw)
|
static iavf_status i40e_init_asq(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code = 0;
|
iavf_status ret_code = 0;
|
||||||
|
|
||||||
if (hw->aq.asq.count > 0) {
|
if (hw->aq.asq.count > 0) {
|
||||||
/* queue already initialized */
|
/* queue already initialized */
|
||||||
|
@ -380,9 +382,9 @@ init_adminq_exit:
|
||||||
* Do *NOT* hold the lock when calling this as the memory allocation routines
|
* Do *NOT* hold the lock when calling this as the memory allocation routines
|
||||||
* called are not going to be atomic context safe
|
* called are not going to be atomic context safe
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_init_arq(struct i40e_hw *hw)
|
static iavf_status i40e_init_arq(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code = 0;
|
iavf_status ret_code = 0;
|
||||||
|
|
||||||
if (hw->aq.arq.count > 0) {
|
if (hw->aq.arq.count > 0) {
|
||||||
/* queue already initialized */
|
/* queue already initialized */
|
||||||
|
@ -432,9 +434,9 @@ init_adminq_exit:
|
||||||
*
|
*
|
||||||
* The main shutdown routine for the Admin Send Queue
|
* The main shutdown routine for the Admin Send Queue
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_shutdown_asq(struct i40e_hw *hw)
|
static iavf_status i40e_shutdown_asq(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code = 0;
|
iavf_status ret_code = 0;
|
||||||
|
|
||||||
mutex_lock(&hw->aq.asq_mutex);
|
mutex_lock(&hw->aq.asq_mutex);
|
||||||
|
|
||||||
|
@ -466,9 +468,9 @@ shutdown_asq_out:
|
||||||
*
|
*
|
||||||
* The main shutdown routine for the Admin Receive Queue
|
* The main shutdown routine for the Admin Receive Queue
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_shutdown_arq(struct i40e_hw *hw)
|
static iavf_status i40e_shutdown_arq(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code = 0;
|
iavf_status ret_code = 0;
|
||||||
|
|
||||||
mutex_lock(&hw->aq.arq_mutex);
|
mutex_lock(&hw->aq.arq_mutex);
|
||||||
|
|
||||||
|
@ -505,9 +507,9 @@ shutdown_arq_out:
|
||||||
* - hw->aq.arq_buf_size
|
* - hw->aq.arq_buf_size
|
||||||
* - hw->aq.asq_buf_size
|
* - hw->aq.asq_buf_size
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_init_adminq(struct i40e_hw *hw)
|
iavf_status iavf_init_adminq(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code;
|
iavf_status ret_code;
|
||||||
|
|
||||||
/* verify input for valid configuration */
|
/* verify input for valid configuration */
|
||||||
if ((hw->aq.num_arq_entries == 0) ||
|
if ((hw->aq.num_arq_entries == 0) ||
|
||||||
|
@ -549,9 +551,9 @@ init_adminq_exit:
|
||||||
* iavf_shutdown_adminq - shutdown routine for the Admin Queue
|
* iavf_shutdown_adminq - shutdown routine for the Admin Queue
|
||||||
* @hw: pointer to the hardware structure
|
* @hw: pointer to the hardware structure
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_shutdown_adminq(struct i40e_hw *hw)
|
iavf_status iavf_shutdown_adminq(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status ret_code = 0;
|
iavf_status ret_code = 0;
|
||||||
|
|
||||||
if (iavf_check_asq_alive(hw))
|
if (iavf_check_asq_alive(hw))
|
||||||
iavf_aq_queue_shutdown(hw, true);
|
iavf_aq_queue_shutdown(hw, true);
|
||||||
|
@ -570,7 +572,7 @@ i40e_status iavf_shutdown_adminq(struct i40e_hw *hw)
|
||||||
**/
|
**/
|
||||||
static u16 i40e_clean_asq(struct i40e_hw *hw)
|
static u16 i40e_clean_asq(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
struct i40e_adminq_ring *asq = &(hw->aq.asq);
|
struct i40e_adminq_ring *asq = &hw->aq.asq;
|
||||||
struct i40e_asq_cmd_details *details;
|
struct i40e_asq_cmd_details *details;
|
||||||
u16 ntc = asq->next_to_clean;
|
u16 ntc = asq->next_to_clean;
|
||||||
struct i40e_aq_desc desc_cb;
|
struct i40e_aq_desc desc_cb;
|
||||||
|
@ -616,7 +618,6 @@ bool iavf_asq_done(struct i40e_hw *hw)
|
||||||
* timing reliability than DD bit
|
* timing reliability than DD bit
|
||||||
*/
|
*/
|
||||||
return rd32(hw, hw->aq.asq.head) == hw->aq.asq.next_to_use;
|
return rd32(hw, hw->aq.asq.head) == hw->aq.asq.next_to_use;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -630,13 +631,13 @@ bool iavf_asq_done(struct i40e_hw *hw)
|
||||||
* This is the main send command driver routine for the Admin Queue send
|
* This is the main send command driver routine for the Admin Queue send
|
||||||
* queue. It runs the queue, cleans the queue, etc
|
* queue. It runs the queue, cleans the queue, etc
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_asq_send_command(struct i40e_hw *hw,
|
iavf_status iavf_asq_send_command(struct i40e_hw *hw,
|
||||||
struct i40e_aq_desc *desc,
|
struct i40e_aq_desc *desc,
|
||||||
void *buff, /* can be NULL */
|
void *buff, /* can be NULL */
|
||||||
u16 buff_size,
|
u16 buff_size,
|
||||||
struct i40e_asq_cmd_details *cmd_details)
|
struct i40e_asq_cmd_details *cmd_details)
|
||||||
{
|
{
|
||||||
i40e_status status = 0;
|
iavf_status status = 0;
|
||||||
struct i40e_dma_mem *dma_buff = NULL;
|
struct i40e_dma_mem *dma_buff = NULL;
|
||||||
struct i40e_asq_cmd_details *details;
|
struct i40e_asq_cmd_details *details;
|
||||||
struct i40e_aq_desc *desc_on_ring;
|
struct i40e_aq_desc *desc_on_ring;
|
||||||
|
@ -724,8 +725,8 @@ i40e_status iavf_asq_send_command(struct i40e_hw *hw,
|
||||||
*desc_on_ring = *desc;
|
*desc_on_ring = *desc;
|
||||||
|
|
||||||
/* if buff is not NULL assume indirect command */
|
/* if buff is not NULL assume indirect command */
|
||||||
if (buff != NULL) {
|
if (buff) {
|
||||||
dma_buff = &(hw->aq.asq.r.asq_bi[hw->aq.asq.next_to_use]);
|
dma_buff = &hw->aq.asq.r.asq_bi[hw->aq.asq.next_to_use];
|
||||||
/* copy the user buff into the respective DMA buff */
|
/* copy the user buff into the respective DMA buff */
|
||||||
memcpy(dma_buff->va, buff, buff_size);
|
memcpy(dma_buff->va, buff, buff_size);
|
||||||
desc_on_ring->datalen = cpu_to_le16(buff_size);
|
desc_on_ring->datalen = cpu_to_le16(buff_size);
|
||||||
|
@ -769,7 +770,7 @@ i40e_status iavf_asq_send_command(struct i40e_hw *hw,
|
||||||
/* if ready, copy the desc back to temp */
|
/* if ready, copy the desc back to temp */
|
||||||
if (iavf_asq_done(hw)) {
|
if (iavf_asq_done(hw)) {
|
||||||
*desc = *desc_on_ring;
|
*desc = *desc_on_ring;
|
||||||
if (buff != NULL)
|
if (buff)
|
||||||
memcpy(buff, dma_buff->va, buff_size);
|
memcpy(buff, dma_buff->va, buff_size);
|
||||||
retval = le16_to_cpu(desc->retval);
|
retval = le16_to_cpu(desc->retval);
|
||||||
if (retval != 0) {
|
if (retval != 0) {
|
||||||
|
@ -793,8 +794,7 @@ i40e_status iavf_asq_send_command(struct i40e_hw *hw,
|
||||||
|
|
||||||
i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE,
|
i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE,
|
||||||
"AQTX: desc and buffer writeback:\n");
|
"AQTX: desc and buffer writeback:\n");
|
||||||
iavf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, buff,
|
iavf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, buff, buff_size);
|
||||||
buff_size);
|
|
||||||
|
|
||||||
/* save writeback aq if requested */
|
/* save writeback aq if requested */
|
||||||
if (details->wb_desc)
|
if (details->wb_desc)
|
||||||
|
@ -826,8 +826,7 @@ asq_send_command_error:
|
||||||
*
|
*
|
||||||
* Fill the desc with default values
|
* Fill the desc with default values
|
||||||
**/
|
**/
|
||||||
void iavf_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc,
|
void iavf_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc, u16 opcode)
|
||||||
u16 opcode)
|
|
||||||
{
|
{
|
||||||
/* zero out the desc */
|
/* zero out the desc */
|
||||||
memset((void *)desc, 0, sizeof(struct i40e_aq_desc));
|
memset((void *)desc, 0, sizeof(struct i40e_aq_desc));
|
||||||
|
@ -845,13 +844,13 @@ void iavf_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc,
|
||||||
* the contents through e. It can also return how many events are
|
* the contents through e. It can also return how many events are
|
||||||
* left to process through 'pending'
|
* left to process through 'pending'
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_clean_arq_element(struct i40e_hw *hw,
|
iavf_status iavf_clean_arq_element(struct i40e_hw *hw,
|
||||||
struct i40e_arq_event_info *e,
|
struct i40e_arq_event_info *e,
|
||||||
u16 *pending)
|
u16 *pending)
|
||||||
{
|
{
|
||||||
i40e_status ret_code = 0;
|
|
||||||
u16 ntc = hw->aq.arq.next_to_clean;
|
u16 ntc = hw->aq.arq.next_to_clean;
|
||||||
struct i40e_aq_desc *desc;
|
struct i40e_aq_desc *desc;
|
||||||
|
iavf_status ret_code = 0;
|
||||||
struct i40e_dma_mem *bi;
|
struct i40e_dma_mem *bi;
|
||||||
u16 desc_idx;
|
u16 desc_idx;
|
||||||
u16 datalen;
|
u16 datalen;
|
||||||
|
@ -897,7 +896,7 @@ i40e_status iavf_clean_arq_element(struct i40e_hw *hw,
|
||||||
e->desc = *desc;
|
e->desc = *desc;
|
||||||
datalen = le16_to_cpu(desc->datalen);
|
datalen = le16_to_cpu(desc->datalen);
|
||||||
e->msg_len = min(datalen, e->buf_len);
|
e->msg_len = min(datalen, e->buf_len);
|
||||||
if (e->msg_buf != NULL && (e->msg_len != 0))
|
if (e->msg_buf && (e->msg_len != 0))
|
||||||
memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va,
|
memcpy(e->msg_buf, hw->aq.arq.r.arq_bi[desc_idx].va,
|
||||||
e->msg_len);
|
e->msg_len);
|
||||||
|
|
||||||
|
@ -930,7 +929,7 @@ i40e_status iavf_clean_arq_element(struct i40e_hw *hw,
|
||||||
|
|
||||||
clean_arq_element_out:
|
clean_arq_element_out:
|
||||||
/* Set pending if needed, unlock and return */
|
/* Set pending if needed, unlock and return */
|
||||||
if (pending != NULL)
|
if (pending)
|
||||||
*pending = (ntc > ntu ? hw->aq.arq.count : 0) + (ntu - ntc);
|
*pending = (ntc > ntu ? hw->aq.arq.count : 0) + (ntu - ntc);
|
||||||
|
|
||||||
clean_arq_element_err:
|
clean_arq_element_err:
|
||||||
|
|
|
@ -20,16 +20,12 @@ enum i40e_memory_type {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* prototype for functions used for dynamic memory allocation */
|
/* prototype for functions used for dynamic memory allocation */
|
||||||
i40e_status i40e_allocate_dma_mem(struct i40e_hw *hw,
|
iavf_status i40e_allocate_dma_mem(struct i40e_hw *hw, struct i40e_dma_mem *mem,
|
||||||
struct i40e_dma_mem *mem,
|
enum i40e_memory_type type,
|
||||||
enum i40e_memory_type type,
|
u64 size, u32 alignment);
|
||||||
u64 size, u32 alignment);
|
iavf_status i40e_free_dma_mem(struct i40e_hw *hw, struct i40e_dma_mem *mem);
|
||||||
i40e_status i40e_free_dma_mem(struct i40e_hw *hw,
|
iavf_status i40e_allocate_virt_mem(struct i40e_hw *hw,
|
||||||
struct i40e_dma_mem *mem);
|
struct i40e_virt_mem *mem, u32 size);
|
||||||
i40e_status i40e_allocate_virt_mem(struct i40e_hw *hw,
|
iavf_status i40e_free_virt_mem(struct i40e_hw *hw, struct i40e_virt_mem *mem);
|
||||||
struct i40e_virt_mem *mem,
|
|
||||||
u32 size);
|
|
||||||
i40e_status i40e_free_virt_mem(struct i40e_hw *hw,
|
|
||||||
struct i40e_virt_mem *mem);
|
|
||||||
|
|
||||||
#endif /* _I40E_ALLOC_H_ */
|
#endif /* _I40E_ALLOC_H_ */
|
||||||
|
|
|
@ -13,9 +13,9 @@
|
||||||
* This function sets the mac type of the adapter based on the
|
* This function sets the mac type of the adapter based on the
|
||||||
* vendor ID and device ID stored in the hw structure.
|
* vendor ID and device ID stored in the hw structure.
|
||||||
**/
|
**/
|
||||||
i40e_status i40e_set_mac_type(struct i40e_hw *hw)
|
iavf_status i40e_set_mac_type(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
i40e_status status = 0;
|
iavf_status status = 0;
|
||||||
|
|
||||||
if (hw->vendor_id == PCI_VENDOR_ID_INTEL) {
|
if (hw->vendor_id == PCI_VENDOR_ID_INTEL) {
|
||||||
switch (hw->device_id) {
|
switch (hw->device_id) {
|
||||||
|
@ -56,8 +56,7 @@ i40e_status i40e_set_mac_type(struct i40e_hw *hw)
|
||||||
status = I40E_ERR_DEVICE_NOT_SUPPORTED;
|
status = I40E_ERR_DEVICE_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
hw_dbg(hw, "i40e_set_mac_type found mac: %d, returns: %d\n",
|
hw_dbg(hw, "found mac: %d, returns: %d\n", hw->mac.type, status);
|
||||||
hw->mac.type, status);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,7 +125,7 @@ const char *iavf_aq_str(struct i40e_hw *hw, enum i40e_admin_queue_err aq_err)
|
||||||
* @hw: pointer to the HW structure
|
* @hw: pointer to the HW structure
|
||||||
* @stat_err: the status error code to convert
|
* @stat_err: the status error code to convert
|
||||||
**/
|
**/
|
||||||
const char *iavf_stat_str(struct i40e_hw *hw, i40e_status stat_err)
|
const char *iavf_stat_str(struct i40e_hw *hw, iavf_status stat_err)
|
||||||
{
|
{
|
||||||
switch (stat_err) {
|
switch (stat_err) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -285,7 +284,7 @@ void iavf_debug_aq(struct i40e_hw *hw, enum i40e_debug_mask mask, void *desc,
|
||||||
struct i40e_aq_desc *aq_desc = (struct i40e_aq_desc *)desc;
|
struct i40e_aq_desc *aq_desc = (struct i40e_aq_desc *)desc;
|
||||||
u8 *buf = (u8 *)buffer;
|
u8 *buf = (u8 *)buffer;
|
||||||
|
|
||||||
if ((!(mask & hw->debug_mask)) || (desc == NULL))
|
if ((!(mask & hw->debug_mask)) || !desc)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
i40e_debug(hw, mask,
|
i40e_debug(hw, mask,
|
||||||
|
@ -304,7 +303,7 @@ void iavf_debug_aq(struct i40e_hw *hw, enum i40e_debug_mask mask, void *desc,
|
||||||
le32_to_cpu(aq_desc->params.external.addr_high),
|
le32_to_cpu(aq_desc->params.external.addr_high),
|
||||||
le32_to_cpu(aq_desc->params.external.addr_low));
|
le32_to_cpu(aq_desc->params.external.addr_low));
|
||||||
|
|
||||||
if ((buffer != NULL) && (aq_desc->datalen != 0)) {
|
if (buffer && aq_desc->datalen) {
|
||||||
u16 len = le16_to_cpu(aq_desc->datalen);
|
u16 len = le16_to_cpu(aq_desc->datalen);
|
||||||
|
|
||||||
i40e_debug(hw, mask, "AQ CMD Buffer:\n");
|
i40e_debug(hw, mask, "AQ CMD Buffer:\n");
|
||||||
|
@ -349,16 +348,14 @@ bool iavf_check_asq_alive(struct i40e_hw *hw)
|
||||||
* Tell the Firmware that we're shutting down the AdminQ and whether
|
* Tell the Firmware that we're shutting down the AdminQ and whether
|
||||||
* or not the driver is unloading as well.
|
* or not the driver is unloading as well.
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_aq_queue_shutdown(struct i40e_hw *hw,
|
iavf_status iavf_aq_queue_shutdown(struct i40e_hw *hw, bool unloading)
|
||||||
bool unloading)
|
|
||||||
{
|
{
|
||||||
struct i40e_aq_desc desc;
|
struct i40e_aq_desc desc;
|
||||||
struct i40e_aqc_queue_shutdown *cmd =
|
struct i40e_aqc_queue_shutdown *cmd =
|
||||||
(struct i40e_aqc_queue_shutdown *)&desc.params.raw;
|
(struct i40e_aqc_queue_shutdown *)&desc.params.raw;
|
||||||
i40e_status status;
|
iavf_status status;
|
||||||
|
|
||||||
iavf_fill_default_direct_cmd_desc(&desc,
|
iavf_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_queue_shutdown);
|
||||||
i40e_aqc_opc_queue_shutdown);
|
|
||||||
|
|
||||||
if (unloading)
|
if (unloading)
|
||||||
cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING);
|
cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING);
|
||||||
|
@ -378,12 +375,12 @@ i40e_status iavf_aq_queue_shutdown(struct i40e_hw *hw,
|
||||||
*
|
*
|
||||||
* Internal function to get or set RSS look up table
|
* Internal function to get or set RSS look up table
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_aq_get_set_rss_lut(struct i40e_hw *hw,
|
static iavf_status i40e_aq_get_set_rss_lut(struct i40e_hw *hw,
|
||||||
u16 vsi_id, bool pf_lut,
|
u16 vsi_id, bool pf_lut,
|
||||||
u8 *lut, u16 lut_size,
|
u8 *lut, u16 lut_size,
|
||||||
bool set)
|
bool set)
|
||||||
{
|
{
|
||||||
i40e_status status;
|
iavf_status status;
|
||||||
struct i40e_aq_desc desc;
|
struct i40e_aq_desc desc;
|
||||||
struct i40e_aqc_get_set_rss_lut *cmd_resp =
|
struct i40e_aqc_get_set_rss_lut *cmd_resp =
|
||||||
(struct i40e_aqc_get_set_rss_lut *)&desc.params.raw;
|
(struct i40e_aqc_get_set_rss_lut *)&desc.params.raw;
|
||||||
|
@ -431,7 +428,7 @@ static i40e_status i40e_aq_get_set_rss_lut(struct i40e_hw *hw,
|
||||||
*
|
*
|
||||||
* get the RSS lookup table, PF or VSI type
|
* get the RSS lookup table, PF or VSI type
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_aq_get_rss_lut(struct i40e_hw *hw, u16 vsi_id,
|
iavf_status iavf_aq_get_rss_lut(struct i40e_hw *hw, u16 vsi_id,
|
||||||
bool pf_lut, u8 *lut, u16 lut_size)
|
bool pf_lut, u8 *lut, u16 lut_size)
|
||||||
{
|
{
|
||||||
return i40e_aq_get_set_rss_lut(hw, vsi_id, pf_lut, lut, lut_size,
|
return i40e_aq_get_set_rss_lut(hw, vsi_id, pf_lut, lut, lut_size,
|
||||||
|
@ -448,7 +445,7 @@ i40e_status iavf_aq_get_rss_lut(struct i40e_hw *hw, u16 vsi_id,
|
||||||
*
|
*
|
||||||
* set the RSS lookup table, PF or VSI type
|
* set the RSS lookup table, PF or VSI type
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_aq_set_rss_lut(struct i40e_hw *hw, u16 vsi_id,
|
iavf_status iavf_aq_set_rss_lut(struct i40e_hw *hw, u16 vsi_id,
|
||||||
bool pf_lut, u8 *lut, u16 lut_size)
|
bool pf_lut, u8 *lut, u16 lut_size)
|
||||||
{
|
{
|
||||||
return i40e_aq_get_set_rss_lut(hw, vsi_id, pf_lut, lut, lut_size, true);
|
return i40e_aq_get_set_rss_lut(hw, vsi_id, pf_lut, lut, lut_size, true);
|
||||||
|
@ -463,11 +460,12 @@ i40e_status iavf_aq_set_rss_lut(struct i40e_hw *hw, u16 vsi_id,
|
||||||
*
|
*
|
||||||
* get the RSS key per VSI
|
* get the RSS key per VSI
|
||||||
**/
|
**/
|
||||||
static i40e_status i40e_aq_get_set_rss_key(struct i40e_hw *hw, u16 vsi_id,
|
static
|
||||||
struct i40e_aqc_get_set_rss_key_data *key,
|
iavf_status i40e_aq_get_set_rss_key(struct i40e_hw *hw, u16 vsi_id,
|
||||||
bool set)
|
struct i40e_aqc_get_set_rss_key_data *key,
|
||||||
|
bool set)
|
||||||
{
|
{
|
||||||
i40e_status status;
|
iavf_status status;
|
||||||
struct i40e_aq_desc desc;
|
struct i40e_aq_desc desc;
|
||||||
struct i40e_aqc_get_set_rss_key *cmd_resp =
|
struct i40e_aqc_get_set_rss_key *cmd_resp =
|
||||||
(struct i40e_aqc_get_set_rss_key *)&desc.params.raw;
|
(struct i40e_aqc_get_set_rss_key *)&desc.params.raw;
|
||||||
|
@ -502,7 +500,7 @@ static i40e_status i40e_aq_get_set_rss_key(struct i40e_hw *hw, u16 vsi_id,
|
||||||
* @key: pointer to key info struct
|
* @key: pointer to key info struct
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_aq_get_rss_key(struct i40e_hw *hw, u16 vsi_id,
|
iavf_status iavf_aq_get_rss_key(struct i40e_hw *hw, u16 vsi_id,
|
||||||
struct i40e_aqc_get_set_rss_key_data *key)
|
struct i40e_aqc_get_set_rss_key_data *key)
|
||||||
{
|
{
|
||||||
return i40e_aq_get_set_rss_key(hw, vsi_id, key, false);
|
return i40e_aq_get_set_rss_key(hw, vsi_id, key, false);
|
||||||
|
@ -516,7 +514,7 @@ i40e_status iavf_aq_get_rss_key(struct i40e_hw *hw, u16 vsi_id,
|
||||||
*
|
*
|
||||||
* set the RSS key per VSI
|
* set the RSS key per VSI
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_aq_set_rss_key(struct i40e_hw *hw, u16 vsi_id,
|
iavf_status iavf_aq_set_rss_key(struct i40e_hw *hw, u16 vsi_id,
|
||||||
struct i40e_aqc_get_set_rss_key_data *key)
|
struct i40e_aqc_get_set_rss_key_data *key)
|
||||||
{
|
{
|
||||||
return i40e_aq_get_set_rss_key(hw, vsi_id, key, true);
|
return i40e_aq_get_set_rss_key(hw, vsi_id, key, true);
|
||||||
|
@ -900,14 +898,14 @@ struct i40e_rx_ptype_decoded iavf_ptype_lookup[] = {
|
||||||
* is sent asynchronously, i.e. iavf_asq_send_command() does not wait for
|
* is sent asynchronously, i.e. iavf_asq_send_command() does not wait for
|
||||||
* completion before returning.
|
* completion before returning.
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_aq_send_msg_to_pf(struct i40e_hw *hw,
|
iavf_status iavf_aq_send_msg_to_pf(struct i40e_hw *hw,
|
||||||
enum virtchnl_ops v_opcode,
|
enum virtchnl_ops v_opcode,
|
||||||
i40e_status v_retval, u8 *msg, u16 msglen,
|
iavf_status v_retval, u8 *msg, u16 msglen,
|
||||||
struct i40e_asq_cmd_details *cmd_details)
|
struct i40e_asq_cmd_details *cmd_details)
|
||||||
{
|
{
|
||||||
struct i40e_aq_desc desc;
|
|
||||||
struct i40e_asq_cmd_details details;
|
struct i40e_asq_cmd_details details;
|
||||||
i40e_status status;
|
struct i40e_aq_desc desc;
|
||||||
|
iavf_status status;
|
||||||
|
|
||||||
iavf_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_send_msg_to_pf);
|
iavf_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_send_msg_to_pf);
|
||||||
desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_SI);
|
desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_SI);
|
||||||
|
@ -971,7 +969,7 @@ void iavf_vf_parse_hw_config(struct i40e_hw *hw,
|
||||||
* as none will be forthcoming. Immediately after calling this function,
|
* as none will be forthcoming. Immediately after calling this function,
|
||||||
* the admin queue should be shut down and (optionally) reinitialized.
|
* the admin queue should be shut down and (optionally) reinitialized.
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_vf_reset(struct i40e_hw *hw)
|
iavf_status iavf_vf_reset(struct i40e_hw *hw)
|
||||||
{
|
{
|
||||||
return iavf_aq_send_msg_to_pf(hw, VIRTCHNL_OP_RESET_VF,
|
return iavf_aq_send_msg_to_pf(hw, VIRTCHNL_OP_RESET_VF,
|
||||||
0, NULL, 0, NULL);
|
0, NULL, 0, NULL);
|
||||||
|
|
|
@ -48,5 +48,5 @@ struct i40e_virt_mem {
|
||||||
extern void iavf_debug_d(void *hw, u32 mask, char *fmt_str, ...)
|
extern void iavf_debug_d(void *hw, u32 mask, char *fmt_str, ...)
|
||||||
__attribute__ ((format(gnu_printf, 3, 4)));
|
__attribute__ ((format(gnu_printf, 3, 4)));
|
||||||
|
|
||||||
typedef enum i40e_status_code i40e_status;
|
typedef enum i40e_status_code iavf_status;
|
||||||
#endif /* _I40E_OSDEP_H_ */
|
#endif /* _I40E_OSDEP_H_ */
|
||||||
|
|
|
@ -16,14 +16,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* adminq functions */
|
/* adminq functions */
|
||||||
i40e_status iavf_init_adminq(struct i40e_hw *hw);
|
iavf_status iavf_init_adminq(struct i40e_hw *hw);
|
||||||
i40e_status iavf_shutdown_adminq(struct i40e_hw *hw);
|
iavf_status iavf_shutdown_adminq(struct i40e_hw *hw);
|
||||||
void i40e_adminq_init_ring_data(struct i40e_hw *hw);
|
void i40e_adminq_init_ring_data(struct i40e_hw *hw);
|
||||||
i40e_status iavf_clean_arq_element(struct i40e_hw *hw,
|
iavf_status iavf_clean_arq_element(struct i40e_hw *hw,
|
||||||
struct i40e_arq_event_info *e,
|
struct i40e_arq_event_info *e,
|
||||||
u16 *events_pending);
|
u16 *events_pending);
|
||||||
i40e_status iavf_asq_send_command(struct i40e_hw *hw,
|
iavf_status iavf_asq_send_command(struct i40e_hw *hw, struct i40e_aq_desc *desc,
|
||||||
struct i40e_aq_desc *desc,
|
|
||||||
void *buff, /* can be NULL */
|
void *buff, /* can be NULL */
|
||||||
u16 buff_size,
|
u16 buff_size,
|
||||||
struct i40e_asq_cmd_details *cmd_details);
|
struct i40e_asq_cmd_details *cmd_details);
|
||||||
|
@ -36,20 +35,20 @@ void iavf_debug_aq(struct i40e_hw *hw, enum i40e_debug_mask mask,
|
||||||
void i40e_idle_aq(struct i40e_hw *hw);
|
void i40e_idle_aq(struct i40e_hw *hw);
|
||||||
void iavf_resume_aq(struct i40e_hw *hw);
|
void iavf_resume_aq(struct i40e_hw *hw);
|
||||||
bool iavf_check_asq_alive(struct i40e_hw *hw);
|
bool iavf_check_asq_alive(struct i40e_hw *hw);
|
||||||
i40e_status iavf_aq_queue_shutdown(struct i40e_hw *hw, bool unloading);
|
iavf_status iavf_aq_queue_shutdown(struct i40e_hw *hw, bool unloading);
|
||||||
const char *iavf_aq_str(struct i40e_hw *hw, enum i40e_admin_queue_err aq_err);
|
const char *iavf_aq_str(struct i40e_hw *hw, enum i40e_admin_queue_err aq_err);
|
||||||
const char *iavf_stat_str(struct i40e_hw *hw, i40e_status stat_err);
|
const char *iavf_stat_str(struct i40e_hw *hw, iavf_status stat_err);
|
||||||
|
|
||||||
i40e_status iavf_aq_get_rss_lut(struct i40e_hw *hw, u16 seid,
|
iavf_status iavf_aq_get_rss_lut(struct i40e_hw *hw, u16 seid,
|
||||||
bool pf_lut, u8 *lut, u16 lut_size);
|
bool pf_lut, u8 *lut, u16 lut_size);
|
||||||
i40e_status iavf_aq_set_rss_lut(struct i40e_hw *hw, u16 seid,
|
iavf_status iavf_aq_set_rss_lut(struct i40e_hw *hw, u16 seid,
|
||||||
bool pf_lut, u8 *lut, u16 lut_size);
|
bool pf_lut, u8 *lut, u16 lut_size);
|
||||||
i40e_status iavf_aq_get_rss_key(struct i40e_hw *hw, u16 seid,
|
iavf_status iavf_aq_get_rss_key(struct i40e_hw *hw, u16 seid,
|
||||||
struct i40e_aqc_get_set_rss_key_data *key);
|
struct i40e_aqc_get_set_rss_key_data *key);
|
||||||
i40e_status iavf_aq_set_rss_key(struct i40e_hw *hw, u16 seid,
|
iavf_status iavf_aq_set_rss_key(struct i40e_hw *hw, u16 seid,
|
||||||
struct i40e_aqc_get_set_rss_key_data *key);
|
struct i40e_aqc_get_set_rss_key_data *key);
|
||||||
|
|
||||||
i40e_status i40e_set_mac_type(struct i40e_hw *hw);
|
iavf_status i40e_set_mac_type(struct i40e_hw *hw);
|
||||||
|
|
||||||
extern struct i40e_rx_ptype_decoded iavf_ptype_lookup[];
|
extern struct i40e_rx_ptype_decoded iavf_ptype_lookup[];
|
||||||
|
|
||||||
|
@ -61,9 +60,9 @@ static inline struct i40e_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype)
|
||||||
/* i40e_common for VF drivers*/
|
/* i40e_common for VF drivers*/
|
||||||
void iavf_vf_parse_hw_config(struct i40e_hw *hw,
|
void iavf_vf_parse_hw_config(struct i40e_hw *hw,
|
||||||
struct virtchnl_vf_resource *msg);
|
struct virtchnl_vf_resource *msg);
|
||||||
i40e_status iavf_vf_reset(struct i40e_hw *hw);
|
iavf_status iavf_vf_reset(struct i40e_hw *hw);
|
||||||
i40e_status iavf_aq_send_msg_to_pf(struct i40e_hw *hw,
|
iavf_status iavf_aq_send_msg_to_pf(struct i40e_hw *hw,
|
||||||
enum virtchnl_ops v_opcode,
|
enum virtchnl_ops v_opcode,
|
||||||
i40e_status v_retval, u8 *msg, u16 msglen,
|
iavf_status v_retval, u8 *msg, u16 msglen,
|
||||||
struct i40e_asq_cmd_details *cmd_details);
|
struct i40e_asq_cmd_details *cmd_details);
|
||||||
#endif /* _I40E_PROTOTYPE_H_ */
|
#endif /* _I40E_PROTOTYPE_H_ */
|
||||||
|
|
|
@ -411,7 +411,7 @@ void iavf_enable_vlan_stripping(struct iavf_adapter *adapter);
|
||||||
void iavf_disable_vlan_stripping(struct iavf_adapter *adapter);
|
void iavf_disable_vlan_stripping(struct iavf_adapter *adapter);
|
||||||
void iavf_virtchnl_completion(struct iavf_adapter *adapter,
|
void iavf_virtchnl_completion(struct iavf_adapter *adapter,
|
||||||
enum virtchnl_ops v_opcode,
|
enum virtchnl_ops v_opcode,
|
||||||
i40e_status v_retval, u8 *msg, u16 msglen);
|
iavf_status v_retval, u8 *msg, u16 msglen);
|
||||||
int iavf_config_rss(struct iavf_adapter *adapter);
|
int iavf_config_rss(struct iavf_adapter *adapter);
|
||||||
int iavf_lan_add_device(struct iavf_adapter *adapter);
|
int iavf_lan_add_device(struct iavf_adapter *adapter);
|
||||||
int iavf_lan_del_device(struct iavf_adapter *adapter);
|
int iavf_lan_del_device(struct iavf_adapter *adapter);
|
||||||
|
|
|
@ -135,7 +135,7 @@ void iavf_notify_client_open(struct i40e_vsi *vsi)
|
||||||
static int iavf_client_release_qvlist(struct i40e_info *ldev)
|
static int iavf_client_release_qvlist(struct i40e_info *ldev)
|
||||||
{
|
{
|
||||||
struct iavf_adapter *adapter = ldev->vf;
|
struct iavf_adapter *adapter = ldev->vf;
|
||||||
i40e_status err;
|
iavf_status err;
|
||||||
|
|
||||||
if (adapter->aq_required)
|
if (adapter->aq_required)
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
|
@ -420,7 +420,7 @@ static u32 iavf_client_virtchnl_send(struct i40e_info *ldev,
|
||||||
u8 *msg, u16 len)
|
u8 *msg, u16 len)
|
||||||
{
|
{
|
||||||
struct iavf_adapter *adapter = ldev->vf;
|
struct iavf_adapter *adapter = ldev->vf;
|
||||||
i40e_status err;
|
iavf_status err;
|
||||||
|
|
||||||
if (adapter->aq_required)
|
if (adapter->aq_required)
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
|
@ -449,7 +449,7 @@ static int iavf_client_setup_qvlist(struct i40e_info *ldev,
|
||||||
struct virtchnl_iwarp_qvlist_info *v_qvlist_info;
|
struct virtchnl_iwarp_qvlist_info *v_qvlist_info;
|
||||||
struct iavf_adapter *adapter = ldev->vf;
|
struct iavf_adapter *adapter = ldev->vf;
|
||||||
struct i40e_qv_info *qv_info;
|
struct i40e_qv_info *qv_info;
|
||||||
i40e_status err;
|
iavf_status err;
|
||||||
u32 v_idx, i;
|
u32 v_idx, i;
|
||||||
u32 msg_size;
|
u32 msg_size;
|
||||||
|
|
||||||
|
|
|
@ -770,10 +770,7 @@ static int __iavf_set_coalesce(struct net_device *netdev,
|
||||||
(ec->rx_coalesce_usecs > I40E_MAX_ITR)) {
|
(ec->rx_coalesce_usecs > I40E_MAX_ITR)) {
|
||||||
netif_info(adapter, drv, netdev, "Invalid value, rx-usecs range is 0-8160\n");
|
netif_info(adapter, drv, netdev, "Invalid value, rx-usecs range is 0-8160\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
} else if (ec->tx_coalesce_usecs == 0) {
|
||||||
|
|
||||||
else
|
|
||||||
if (ec->tx_coalesce_usecs == 0) {
|
|
||||||
if (ec->use_adaptive_tx_coalesce)
|
if (ec->use_adaptive_tx_coalesce)
|
||||||
netif_info(adapter, drv, netdev, "tx-usecs=0, need to disable adaptive-tx for a complete disable\n");
|
netif_info(adapter, drv, netdev, "tx-usecs=0, need to disable adaptive-tx for a complete disable\n");
|
||||||
} else if ((ec->tx_coalesce_usecs < I40E_MIN_ITR) ||
|
} else if ((ec->tx_coalesce_usecs < I40E_MIN_ITR) ||
|
||||||
|
@ -996,9 +993,8 @@ static int iavf_set_rxfh(struct net_device *netdev, const u32 *indir,
|
||||||
if (!indir)
|
if (!indir)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (key) {
|
if (key)
|
||||||
memcpy(adapter->rss_key, key, adapter->rss_key_size);
|
memcpy(adapter->rss_key, key, adapter->rss_key_size);
|
||||||
}
|
|
||||||
|
|
||||||
/* Each 32 bits pointed by 'indir' is stored with a lut entry */
|
/* Each 32 bits pointed by 'indir' is stored with a lut entry */
|
||||||
for (i = 0; i < adapter->rss_lut_size; i++)
|
for (i = 0; i < adapter->rss_lut_size; i++)
|
||||||
|
|
|
@ -66,7 +66,7 @@ static struct workqueue_struct *iavf_wq;
|
||||||
* @size: size of memory requested
|
* @size: size of memory requested
|
||||||
* @alignment: what to align the allocation to
|
* @alignment: what to align the allocation to
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_allocate_dma_mem_d(struct i40e_hw *hw,
|
iavf_status iavf_allocate_dma_mem_d(struct i40e_hw *hw,
|
||||||
struct i40e_dma_mem *mem,
|
struct i40e_dma_mem *mem,
|
||||||
u64 size, u32 alignment)
|
u64 size, u32 alignment)
|
||||||
{
|
{
|
||||||
|
@ -89,7 +89,7 @@ i40e_status iavf_allocate_dma_mem_d(struct i40e_hw *hw,
|
||||||
* @hw: pointer to the HW structure
|
* @hw: pointer to the HW structure
|
||||||
* @mem: ptr to mem struct to free
|
* @mem: ptr to mem struct to free
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_free_dma_mem_d(struct i40e_hw *hw, struct i40e_dma_mem *mem)
|
iavf_status iavf_free_dma_mem_d(struct i40e_hw *hw, struct i40e_dma_mem *mem)
|
||||||
{
|
{
|
||||||
struct iavf_adapter *adapter = (struct iavf_adapter *)hw->back;
|
struct iavf_adapter *adapter = (struct iavf_adapter *)hw->back;
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ i40e_status iavf_free_dma_mem_d(struct i40e_hw *hw, struct i40e_dma_mem *mem)
|
||||||
* @mem: ptr to mem struct to fill out
|
* @mem: ptr to mem struct to fill out
|
||||||
* @size: size of memory requested
|
* @size: size of memory requested
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_allocate_virt_mem_d(struct i40e_hw *hw,
|
iavf_status iavf_allocate_virt_mem_d(struct i40e_hw *hw,
|
||||||
struct i40e_virt_mem *mem, u32 size)
|
struct i40e_virt_mem *mem, u32 size)
|
||||||
{
|
{
|
||||||
if (!mem)
|
if (!mem)
|
||||||
|
@ -126,7 +126,7 @@ i40e_status iavf_allocate_virt_mem_d(struct i40e_hw *hw,
|
||||||
* @hw: pointer to the HW structure
|
* @hw: pointer to the HW structure
|
||||||
* @mem: ptr to mem struct to free
|
* @mem: ptr to mem struct to free
|
||||||
**/
|
**/
|
||||||
i40e_status iavf_free_virt_mem_d(struct i40e_hw *hw,
|
iavf_status iavf_free_virt_mem_d(struct i40e_hw *hw,
|
||||||
struct i40e_virt_mem *mem)
|
struct i40e_virt_mem *mem)
|
||||||
{
|
{
|
||||||
if (!mem)
|
if (!mem)
|
||||||
|
@ -469,6 +469,7 @@ iavf_request_traffic_irqs(struct iavf_adapter *adapter, char *basename)
|
||||||
|
|
||||||
for (vector = 0; vector < q_vectors; vector++) {
|
for (vector = 0; vector < q_vectors; vector++) {
|
||||||
struct i40e_q_vector *q_vector = &adapter->q_vectors[vector];
|
struct i40e_q_vector *q_vector = &adapter->q_vectors[vector];
|
||||||
|
|
||||||
irq_num = adapter->msix_entries[vector + NONQ_VECS].vector;
|
irq_num = adapter->msix_entries[vector + NONQ_VECS].vector;
|
||||||
|
|
||||||
if (q_vector->tx.ring && q_vector->rx.ring) {
|
if (q_vector->tx.ring && q_vector->rx.ring) {
|
||||||
|
@ -1427,6 +1428,7 @@ static void iavf_free_q_vectors(struct iavf_adapter *adapter)
|
||||||
|
|
||||||
for (q_idx = 0; q_idx < num_q_vectors; q_idx++) {
|
for (q_idx = 0; q_idx < num_q_vectors; q_idx++) {
|
||||||
struct i40e_q_vector *q_vector = &adapter->q_vectors[q_idx];
|
struct i40e_q_vector *q_vector = &adapter->q_vectors[q_idx];
|
||||||
|
|
||||||
if (q_idx < napi_vectors)
|
if (q_idx < napi_vectors)
|
||||||
netif_napi_del(&q_vector->napi);
|
netif_napi_del(&q_vector->napi);
|
||||||
}
|
}
|
||||||
|
@ -2048,7 +2050,7 @@ static void iavf_adminq_task(struct work_struct *work)
|
||||||
struct i40e_hw *hw = &adapter->hw;
|
struct i40e_hw *hw = &adapter->hw;
|
||||||
struct i40e_arq_event_info event;
|
struct i40e_arq_event_info event;
|
||||||
enum virtchnl_ops v_op;
|
enum virtchnl_ops v_op;
|
||||||
i40e_status ret, v_ret;
|
iavf_status ret, v_ret;
|
||||||
u32 val, oldval;
|
u32 val, oldval;
|
||||||
u16 pending;
|
u16 pending;
|
||||||
|
|
||||||
|
@ -2063,7 +2065,7 @@ static void iavf_adminq_task(struct work_struct *work)
|
||||||
do {
|
do {
|
||||||
ret = iavf_clean_arq_element(hw, &event, &pending);
|
ret = iavf_clean_arq_element(hw, &event, &pending);
|
||||||
v_op = (enum virtchnl_ops)le32_to_cpu(event.desc.cookie_high);
|
v_op = (enum virtchnl_ops)le32_to_cpu(event.desc.cookie_high);
|
||||||
v_ret = (i40e_status)le32_to_cpu(event.desc.cookie_low);
|
v_ret = (iavf_status)le32_to_cpu(event.desc.cookie_low);
|
||||||
|
|
||||||
if (ret || !v_op)
|
if (ret || !v_op)
|
||||||
break; /* No event to process or error cleaning ARQ */
|
break; /* No event to process or error cleaning ARQ */
|
||||||
|
|
|
@ -22,7 +22,7 @@ static int iavf_send_pf_msg(struct iavf_adapter *adapter,
|
||||||
enum virtchnl_ops op, u8 *msg, u16 len)
|
enum virtchnl_ops op, u8 *msg, u16 len)
|
||||||
{
|
{
|
||||||
struct i40e_hw *hw = &adapter->hw;
|
struct i40e_hw *hw = &adapter->hw;
|
||||||
i40e_status err;
|
iavf_status err;
|
||||||
|
|
||||||
if (adapter->flags & IAVF_FLAG_PF_COMMS_FAILED)
|
if (adapter->flags & IAVF_FLAG_PF_COMMS_FAILED)
|
||||||
return 0; /* nothing to see here, move along */
|
return 0; /* nothing to see here, move along */
|
||||||
|
@ -69,7 +69,7 @@ int iavf_verify_api_ver(struct iavf_adapter *adapter)
|
||||||
struct i40e_hw *hw = &adapter->hw;
|
struct i40e_hw *hw = &adapter->hw;
|
||||||
struct i40e_arq_event_info event;
|
struct i40e_arq_event_info event;
|
||||||
enum virtchnl_ops op;
|
enum virtchnl_ops op;
|
||||||
i40e_status err;
|
iavf_status err;
|
||||||
|
|
||||||
event.buf_len = IAVF_MAX_AQ_BUF_SIZE;
|
event.buf_len = IAVF_MAX_AQ_BUF_SIZE;
|
||||||
event.msg_buf = kzalloc(event.buf_len, GFP_KERNEL);
|
event.msg_buf = kzalloc(event.buf_len, GFP_KERNEL);
|
||||||
|
@ -92,7 +92,7 @@ int iavf_verify_api_ver(struct iavf_adapter *adapter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
err = (i40e_status)le32_to_cpu(event.desc.cookie_low);
|
err = (iavf_status)le32_to_cpu(event.desc.cookie_low);
|
||||||
if (err)
|
if (err)
|
||||||
goto out_alloc;
|
goto out_alloc;
|
||||||
|
|
||||||
|
@ -144,13 +144,11 @@ int iavf_send_vf_config_msg(struct iavf_adapter *adapter)
|
||||||
adapter->current_op = VIRTCHNL_OP_GET_VF_RESOURCES;
|
adapter->current_op = VIRTCHNL_OP_GET_VF_RESOURCES;
|
||||||
adapter->aq_required &= ~IAVF_FLAG_AQ_GET_CONFIG;
|
adapter->aq_required &= ~IAVF_FLAG_AQ_GET_CONFIG;
|
||||||
if (PF_IS_V11(adapter))
|
if (PF_IS_V11(adapter))
|
||||||
return iavf_send_pf_msg(adapter,
|
return iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_VF_RESOURCES,
|
||||||
VIRTCHNL_OP_GET_VF_RESOURCES,
|
(u8 *)&caps, sizeof(caps));
|
||||||
(u8 *)&caps, sizeof(caps));
|
|
||||||
else
|
else
|
||||||
return iavf_send_pf_msg(adapter,
|
return iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_VF_RESOURCES,
|
||||||
VIRTCHNL_OP_GET_VF_RESOURCES,
|
NULL, 0);
|
||||||
NULL, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -193,7 +191,7 @@ int iavf_get_vf_config(struct iavf_adapter *adapter)
|
||||||
struct i40e_hw *hw = &adapter->hw;
|
struct i40e_hw *hw = &adapter->hw;
|
||||||
struct i40e_arq_event_info event;
|
struct i40e_arq_event_info event;
|
||||||
enum virtchnl_ops op;
|
enum virtchnl_ops op;
|
||||||
i40e_status err;
|
iavf_status err;
|
||||||
u16 len;
|
u16 len;
|
||||||
|
|
||||||
len = sizeof(struct virtchnl_vf_resource) +
|
len = sizeof(struct virtchnl_vf_resource) +
|
||||||
|
@ -218,7 +216,7 @@ int iavf_get_vf_config(struct iavf_adapter *adapter)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = (i40e_status)le32_to_cpu(event.desc.cookie_low);
|
err = (iavf_status)le32_to_cpu(event.desc.cookie_low);
|
||||||
memcpy(adapter->vf_res, event.msg_buf, min(event.msg_len, len));
|
memcpy(adapter->vf_res, event.msg_buf, min(event.msg_len, len));
|
||||||
|
|
||||||
/* some PFs send more queues than we should have so validate that
|
/* some PFs send more queues than we should have so validate that
|
||||||
|
@ -493,8 +491,7 @@ void iavf_add_ether_addrs(struct iavf_adapter *adapter)
|
||||||
|
|
||||||
spin_unlock_bh(&adapter->mac_vlan_list_lock);
|
spin_unlock_bh(&adapter->mac_vlan_list_lock);
|
||||||
|
|
||||||
iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_ETH_ADDR,
|
iavf_send_pf_msg(adapter, VIRTCHNL_OP_ADD_ETH_ADDR, (u8 *)veal, len);
|
||||||
(u8 *)veal, len);
|
|
||||||
kfree(veal);
|
kfree(veal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,8 +562,7 @@ void iavf_del_ether_addrs(struct iavf_adapter *adapter)
|
||||||
|
|
||||||
spin_unlock_bh(&adapter->mac_vlan_list_lock);
|
spin_unlock_bh(&adapter->mac_vlan_list_lock);
|
||||||
|
|
||||||
iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_ETH_ADDR,
|
iavf_send_pf_msg(adapter, VIRTCHNL_OP_DEL_ETH_ADDR, (u8 *)veal, len);
|
||||||
(u8 *)veal, len);
|
|
||||||
kfree(veal);
|
kfree(veal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -776,8 +772,8 @@ void iavf_request_stats(struct iavf_adapter *adapter)
|
||||||
adapter->current_op = VIRTCHNL_OP_GET_STATS;
|
adapter->current_op = VIRTCHNL_OP_GET_STATS;
|
||||||
vqs.vsi_id = adapter->vsi_res->vsi_id;
|
vqs.vsi_id = adapter->vsi_res->vsi_id;
|
||||||
/* queue maps are ignored for this message - only the vsi is used */
|
/* queue maps are ignored for this message - only the vsi is used */
|
||||||
if (iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_STATS,
|
if (iavf_send_pf_msg(adapter, VIRTCHNL_OP_GET_STATS, (u8 *)&vqs,
|
||||||
(u8 *)&vqs, sizeof(vqs)))
|
sizeof(vqs)))
|
||||||
/* if the request failed, don't lock out others */
|
/* if the request failed, don't lock out others */
|
||||||
adapter->current_op = VIRTCHNL_OP_UNKNOWN;
|
adapter->current_op = VIRTCHNL_OP_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
@ -1188,8 +1184,7 @@ void iavf_request_reset(struct iavf_adapter *adapter)
|
||||||
* This function handles the reply messages.
|
* This function handles the reply messages.
|
||||||
**/
|
**/
|
||||||
void iavf_virtchnl_completion(struct iavf_adapter *adapter,
|
void iavf_virtchnl_completion(struct iavf_adapter *adapter,
|
||||||
enum virtchnl_ops v_opcode,
|
enum virtchnl_ops v_opcode, iavf_status v_retval,
|
||||||
i40e_status v_retval,
|
|
||||||
u8 *msg, u16 msglen)
|
u8 *msg, u16 msglen)
|
||||||
{
|
{
|
||||||
struct net_device *netdev = adapter->netdev;
|
struct net_device *netdev = adapter->netdev;
|
||||||
|
@ -1198,6 +1193,7 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter,
|
||||||
struct virtchnl_pf_event *vpe =
|
struct virtchnl_pf_event *vpe =
|
||||||
(struct virtchnl_pf_event *)msg;
|
(struct virtchnl_pf_event *)msg;
|
||||||
bool link_up = vpe->event_data.link_event.link_status;
|
bool link_up = vpe->event_data.link_event.link_status;
|
||||||
|
|
||||||
switch (vpe->event) {
|
switch (vpe->event) {
|
||||||
case VIRTCHNL_EVENT_LINK_CHANGE:
|
case VIRTCHNL_EVENT_LINK_CHANGE:
|
||||||
adapter->link_speed =
|
adapter->link_speed =
|
||||||
|
@ -1323,8 +1319,7 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter,
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dev_err(&adapter->pdev->dev, "PF returned error %d (%s) to our request %d\n",
|
dev_err(&adapter->pdev->dev, "PF returned error %d (%s) to our request %d\n",
|
||||||
v_retval,
|
v_retval, iavf_stat_str(&adapter->hw, v_retval),
|
||||||
iavf_stat_str(&adapter->hw, v_retval),
|
|
||||||
v_opcode);
|
v_opcode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1402,6 +1397,7 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter,
|
||||||
break;
|
break;
|
||||||
case VIRTCHNL_OP_GET_RSS_HENA_CAPS: {
|
case VIRTCHNL_OP_GET_RSS_HENA_CAPS: {
|
||||||
struct virtchnl_rss_hena *vrh = (struct virtchnl_rss_hena *)msg;
|
struct virtchnl_rss_hena *vrh = (struct virtchnl_rss_hena *)msg;
|
||||||
|
|
||||||
if (msglen == sizeof(*vrh))
|
if (msglen == sizeof(*vrh))
|
||||||
adapter->hena = vrh->hena;
|
adapter->hena = vrh->hena;
|
||||||
else
|
else
|
||||||
|
@ -1412,6 +1408,7 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter,
|
||||||
case VIRTCHNL_OP_REQUEST_QUEUES: {
|
case VIRTCHNL_OP_REQUEST_QUEUES: {
|
||||||
struct virtchnl_vf_res_request *vfres =
|
struct virtchnl_vf_res_request *vfres =
|
||||||
(struct virtchnl_vf_res_request *)msg;
|
(struct virtchnl_vf_res_request *)msg;
|
||||||
|
|
||||||
if (vfres->num_queue_pairs != adapter->num_req_queues) {
|
if (vfres->num_queue_pairs != adapter->num_req_queues) {
|
||||||
dev_info(&adapter->pdev->dev,
|
dev_info(&adapter->pdev->dev,
|
||||||
"Requested %d queues, PF can support %d\n",
|
"Requested %d queues, PF can support %d\n",
|
||||||
|
|
Loading…
Reference in New Issue