be2net: use v1 of SET_FLOW_CONTROL command
authorSuresh Reddy <Suresh.Reddy@emulex.com>
Fri, 12 Sep 2014 12:09:17 +0000 (17:39 +0530)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Sep 2014 21:12:15 +0000 (17:12 -0400)
In some configurations the FW doesn't allow changing flow control settings
of a link. Unless a v1 version of the SET_FLOW_CONTROL cmd is used, the FW
doesn't report an error to the driver.

Signed-off-by: Suresh Reddy <Suresh.Reddy@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_cmds.c
drivers/net/ethernet/emulex/benet/be_cmds.h

index 8bb6fd9138196c8e41972ef7b3048780451d2102..5d8016c0c13477315542206378bbf53d52577e30 100644 (file)
@@ -1948,6 +1948,7 @@ int be_cmd_set_flow_control(struct be_adapter *adapter, u32 tx_fc, u32 rx_fc)
                               OPCODE_COMMON_SET_FLOW_CONTROL, sizeof(*req),
                               wrb, NULL);
 
+       req->hdr.version = 1;
        req->tx_flow_control = cpu_to_le16((u16)tx_fc);
        req->rx_flow_control = cpu_to_le16((u16)rx_fc);
 
@@ -1955,6 +1956,10 @@ int be_cmd_set_flow_control(struct be_adapter *adapter, u32 tx_fc, u32 rx_fc)
 
 err:
        spin_unlock_bh(&adapter->mcc_lock);
+
+       if (base_status(status) == MCC_STATUS_FEATURE_NOT_SUPPORTED)
+               return  -EOPNOTSUPP;
+
        return status;
 }
 
index 0e1186856aa61ba9cef38e16fa14589fec8c11a0..3b1606cb3cbf00c78dd569dc54fb4903b1478c89 100644 (file)
@@ -57,7 +57,8 @@ enum mcc_base_status {
        MCC_STATUS_ILLEGAL_FIELD = 3,
        MCC_STATUS_INSUFFICIENT_BUFFER = 4,
        MCC_STATUS_UNAUTHORIZED_REQUEST = 5,
-       MCC_STATUS_NOT_SUPPORTED = 66
+       MCC_STATUS_NOT_SUPPORTED = 66,
+       MCC_STATUS_FEATURE_NOT_SUPPORTED = 68
 };
 
 /* Additional status */