Skip to content

Commit 1c9a98b

Browse files
321lipengdavem330
authored andcommitted
net: hns3: refactor out hclge_cmd_convert_err_code()
To improve code readability and maintainability, refactor hclge_cmd_convert_err_code() with an array of imp_errcode and common_errno mapping, instead of a bloated switch/case. Signed-off-by: Peng Li <[email protected]> Signed-off-by: Huazhong Tan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 4fb37e7 commit 1c9a98b

File tree

1 file changed

+27
-28
lines changed

1 file changed

+27
-28
lines changed

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -189,36 +189,35 @@ static bool hclge_is_special_opcode(u16 opcode)
189189
return false;
190190
}
191191

192+
struct errcode {
193+
u32 imp_errcode;
194+
int common_errno;
195+
};
196+
192197
static int hclge_cmd_convert_err_code(u16 desc_ret)
193198
{
194-
switch (desc_ret) {
195-
case HCLGE_CMD_EXEC_SUCCESS:
196-
return 0;
197-
case HCLGE_CMD_NO_AUTH:
198-
return -EPERM;
199-
case HCLGE_CMD_NOT_SUPPORTED:
200-
return -EOPNOTSUPP;
201-
case HCLGE_CMD_QUEUE_FULL:
202-
return -EXFULL;
203-
case HCLGE_CMD_NEXT_ERR:
204-
return -ENOSR;
205-
case HCLGE_CMD_UNEXE_ERR:
206-
return -ENOTBLK;
207-
case HCLGE_CMD_PARA_ERR:
208-
return -EINVAL;
209-
case HCLGE_CMD_RESULT_ERR:
210-
return -ERANGE;
211-
case HCLGE_CMD_TIMEOUT:
212-
return -ETIME;
213-
case HCLGE_CMD_HILINK_ERR:
214-
return -ENOLINK;
215-
case HCLGE_CMD_QUEUE_ILLEGAL:
216-
return -ENXIO;
217-
case HCLGE_CMD_INVALID:
218-
return -EBADR;
219-
default:
220-
return -EIO;
221-
}
199+
struct errcode hclge_cmd_errcode[] = {
200+
{HCLGE_CMD_EXEC_SUCCESS, 0},
201+
{HCLGE_CMD_NO_AUTH, -EPERM},
202+
{HCLGE_CMD_NOT_SUPPORTED, -EOPNOTSUPP},
203+
{HCLGE_CMD_QUEUE_FULL, -EXFULL},
204+
{HCLGE_CMD_NEXT_ERR, -ENOSR},
205+
{HCLGE_CMD_UNEXE_ERR, -ENOTBLK},
206+
{HCLGE_CMD_PARA_ERR, -EINVAL},
207+
{HCLGE_CMD_RESULT_ERR, -ERANGE},
208+
{HCLGE_CMD_TIMEOUT, -ETIME},
209+
{HCLGE_CMD_HILINK_ERR, -ENOLINK},
210+
{HCLGE_CMD_QUEUE_ILLEGAL, -ENXIO},
211+
{HCLGE_CMD_INVALID, -EBADR},
212+
};
213+
u32 errcode_count = ARRAY_SIZE(hclge_cmd_errcode);
214+
u32 i;
215+
216+
for (i = 0; i < errcode_count; i++)
217+
if (hclge_cmd_errcode[i].imp_errcode == desc_ret)
218+
return hclge_cmd_errcode[i].common_errno;
219+
220+
return -EIO;
222221
}
223222

224223
static int hclge_cmd_check_retval(struct hclge_hw *hw, struct hclge_desc *desc,

0 commit comments

Comments
 (0)