be2net: request native mode each time the card is reset
authorSathya Perla <sathya.perla@emulex.com>
Tue, 19 Jul 2011 19:52:33 +0000 (19:52 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 Jul 2011 04:32:54 +0000 (21:32 -0700)
Currently be3-native mode is requested only in probe(). It must be requested, each time the card is reset either after an EEH error or after
sleep/hibernation.
Also, the be_cmd_check_native_mode() is better named be_cmd_req_native_mode()

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

index f520a5c..054fa67 100644 (file)
@@ -2390,7 +2390,7 @@ err:
 }
 
 /* Uses mbox */
-int be_cmd_check_native_mode(struct be_adapter *adapter)
+int be_cmd_req_native_mode(struct be_adapter *adapter)
 {
        struct be_mcc_wrb *wrb;
        struct be_cmd_req_set_func_cap *req;
index 1151df6..8e4d488 100644 (file)
@@ -1545,7 +1545,7 @@ extern int be_cmd_set_qos(struct be_adapter *adapter, u32 bps, u32 domain);
 extern void be_detect_dump_ue(struct be_adapter *adapter);
 extern int be_cmd_get_die_temperature(struct be_adapter *adapter);
 extern int be_cmd_get_cntl_attributes(struct be_adapter *adapter);
-extern int be_cmd_check_native_mode(struct be_adapter *adapter);
+extern int be_cmd_req_native_mode(struct be_adapter *adapter);
 extern int be_cmd_get_reg_len(struct be_adapter *adapter, u32 *log_size);
 extern void be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf);
 
index ae2d262..c411bb1 100644 (file)
@@ -2511,6 +2511,8 @@ static int be_setup(struct be_adapter *adapter)
        int status;
        u8 mac[ETH_ALEN];
 
+       be_cmd_req_native_mode(adapter);
+
        cap_flags = en_flags = BE_IF_FLAGS_UNTAGGED |
                                BE_IF_FLAGS_BROADCAST |
                                BE_IF_FLAGS_MULTICAST;
@@ -2618,6 +2620,8 @@ static int be_clear(struct be_adapter *adapter)
 
        be_cmd_if_destroy(adapter, adapter->if_handle,  0);
 
+       adapter->be3_native = 0;
+
        /* tell fw we're done with firing cmds */
        be_cmd_fw_clean(adapter);
        return 0;
@@ -3215,8 +3219,6 @@ static int be_get_config(struct be_adapter *adapter)
        if (status)
                return status;
 
-       be_cmd_check_native_mode(adapter);
-
        if ((num_vfs && adapter->sriov_enabled) ||
                (adapter->function_mode & 0x400) ||
                lancer_chip(adapter) || !be_physfn(adapter)) {