qlcnic: Fix programming number of arguments in a command.
authorRajesh Borundia <rajesh.borundia@qlogic.com>
Tue, 14 Oct 2014 11:41:45 +0000 (07:41 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Oct 2014 21:05:17 +0000 (17:05 -0400)
o Initially we were programming maximum number of arguments.
  Instead we should program number of arguments required in
  a command.
o Maximum number of arguments for 82xx adapter is four. Fix it
  for GET_ESWITCH_STATS command.

Signed-off-by: Rajesh Borundia <rajesh.borundia@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c

index ffbae29..243752f 100644 (file)
@@ -32,7 +32,7 @@ static const struct qlcnic_mailbox_metadata qlcnic_mbx_tbl[] = {
        {QLCNIC_CMD_CONFIGURE_ESWITCH, 4, 1},
        {QLCNIC_CMD_GET_MAC_STATS, 4, 1},
        {QLCNIC_CMD_GET_ESWITCH_PORT_CONFIG, 4, 3},
-       {QLCNIC_CMD_GET_ESWITCH_STATS, 5, 1},
+       {QLCNIC_CMD_GET_ESWITCH_STATS, 4, 1},
        {QLCNIC_CMD_CONFIG_PORT, 4, 1},
        {QLCNIC_CMD_TEMP_SIZE, 4, 4},
        {QLCNIC_CMD_GET_TEMP_HDR, 4, 1},
@@ -129,7 +129,7 @@ int qlcnic_82xx_issue_cmd(struct qlcnic_adapter *adapter,
        }
 
        QLCWR32(adapter, QLCNIC_SIGN_CRB_OFFSET, signature);
-       for (i = 1; i < QLCNIC_CDRP_MAX_ARGS; i++)
+       for (i = 1; i < cmd->req.num; i++)
                QLCWR32(adapter, QLCNIC_CDRP_ARG(i), cmd->req.arg[i]);
        QLCWR32(adapter, QLCNIC_CDRP_CRB_OFFSET,
                QLCNIC_CDRP_FORM_CMD(cmd->req.arg[0]));