mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 15:15:28 -04:00
ixgbevf: Improve error handling in mailbox
Add new handling for error codes: IXGBE_ERR_CONFIG - ixgbe_mbx_operations is not correctly set IXGBE_ERR_TIMEOUT - mailbox operation, e.g. poll for message, timeout Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com> Tested-by: Tony Brelinski <tony.brelinski@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
committed by
Tony Nguyen
parent
0edbecd570
commit
887a32031a
@@ -281,6 +281,9 @@ struct ixgbe_adv_tx_context_desc {
|
||||
#define IXGBE_ERR_INVALID_MAC_ADDR -1
|
||||
#define IXGBE_ERR_RESET_FAILED -2
|
||||
#define IXGBE_ERR_INVALID_ARGUMENT -3
|
||||
#define IXGBE_ERR_CONFIG -4
|
||||
#define IXGBE_ERR_MBX -5
|
||||
#define IXGBE_ERR_TIMEOUT -6
|
||||
|
||||
/* Transmit Config masks */
|
||||
#define IXGBE_TXDCTL_ENABLE 0x02000000 /* Ena specific Tx Queue */
|
||||
|
||||
@@ -15,6 +15,9 @@ static s32 ixgbevf_poll_for_msg(struct ixgbe_hw *hw)
|
||||
struct ixgbe_mbx_info *mbx = &hw->mbx;
|
||||
int countdown = mbx->timeout;
|
||||
|
||||
if (!countdown || !mbx->ops.check_for_msg)
|
||||
return IXGBE_ERR_CONFIG;
|
||||
|
||||
while (countdown && mbx->ops.check_for_msg(hw)) {
|
||||
countdown--;
|
||||
udelay(mbx->udelay);
|
||||
@@ -24,7 +27,7 @@ static s32 ixgbevf_poll_for_msg(struct ixgbe_hw *hw)
|
||||
if (!countdown)
|
||||
mbx->timeout = 0;
|
||||
|
||||
return countdown ? 0 : IXGBE_ERR_MBX;
|
||||
return countdown ? 0 : IXGBE_ERR_TIMEOUT;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -38,6 +41,9 @@ static s32 ixgbevf_poll_for_ack(struct ixgbe_hw *hw)
|
||||
struct ixgbe_mbx_info *mbx = &hw->mbx;
|
||||
int countdown = mbx->timeout;
|
||||
|
||||
if (!countdown || !mbx->ops.check_for_ack)
|
||||
return IXGBE_ERR_CONFIG;
|
||||
|
||||
while (countdown && mbx->ops.check_for_ack(hw)) {
|
||||
countdown--;
|
||||
udelay(mbx->udelay);
|
||||
@@ -47,7 +53,7 @@ static s32 ixgbevf_poll_for_ack(struct ixgbe_hw *hw)
|
||||
if (!countdown)
|
||||
mbx->timeout = 0;
|
||||
|
||||
return countdown ? 0 : IXGBE_ERR_MBX;
|
||||
return countdown ? 0 : IXGBE_ERR_TIMEOUT;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,7 +68,7 @@ static s32 ixgbevf_poll_for_ack(struct ixgbe_hw *hw)
|
||||
static s32 ixgbevf_read_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size)
|
||||
{
|
||||
struct ixgbe_mbx_info *mbx = &hw->mbx;
|
||||
s32 ret_val = IXGBE_ERR_MBX;
|
||||
s32 ret_val = IXGBE_ERR_CONFIG;
|
||||
|
||||
if (!mbx->ops.read)
|
||||
goto out;
|
||||
@@ -88,7 +94,7 @@ static s32 ixgbevf_read_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size)
|
||||
static s32 ixgbevf_write_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size)
|
||||
{
|
||||
struct ixgbe_mbx_info *mbx = &hw->mbx;
|
||||
s32 ret_val = IXGBE_ERR_MBX;
|
||||
s32 ret_val = IXGBE_ERR_CONFIG;
|
||||
|
||||
/* exit if either we can't write or there isn't a defined timeout */
|
||||
if (!mbx->ops.write || !mbx->timeout)
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
#include "vf.h"
|
||||
|
||||
#define IXGBE_VFMAILBOX_SIZE 16 /* 16 32 bit words - 64 bytes */
|
||||
#define IXGBE_ERR_MBX -100
|
||||
|
||||
#define IXGBE_VFMAILBOX 0x002FC
|
||||
#define IXGBE_VFMBMEM 0x00200
|
||||
|
||||
Reference in New Issue
Block a user