diff options
author | Vasundhara Volam <vasundhara.volam@emulex.com> | 2014-07-17 06:50:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-07-17 19:38:15 -0400 |
commit | f174c7ec10d99e62f7722d0608b2a881ef091d21 (patch) | |
tree | 8eb670855d2a7bbc5aa2071a5e112a8c5205069c | |
parent | 962bcb750b47ef0c8d28cc217ec22b4e44413565 (diff) |
be2net: use adapter->flags to track SRIOV state
The driver so far used adapter->num_vfs value to check if SR-IOV is enabled
or not. But, the patch bec84e6("create optimal number of queues on SR-IOV
config") changed this logic. The adapter->num_vfs value is validated and set
much before SR-IOV is enabled. So, we now use an explicit flag to track
SR-IOV enabled state.
Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be.h | 4 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h index 3e639e86e111..25cd3c9007e5 100644 --- a/drivers/net/ethernet/emulex/benet/be.h +++ b/drivers/net/ethernet/emulex/benet/be.h | |||
@@ -372,6 +372,7 @@ enum vf_state { | |||
372 | }; | 372 | }; |
373 | 373 | ||
374 | #define BE_FLAGS_LINK_STATUS_INIT 1 | 374 | #define BE_FLAGS_LINK_STATUS_INIT 1 |
375 | #define BE_FLAGS_SRIOV_ENABLED (1 << 2) | ||
375 | #define BE_FLAGS_WORKER_SCHEDULED (1 << 3) | 376 | #define BE_FLAGS_WORKER_SCHEDULED (1 << 3) |
376 | #define BE_FLAGS_VLAN_PROMISC (1 << 4) | 377 | #define BE_FLAGS_VLAN_PROMISC (1 << 4) |
377 | #define BE_FLAGS_MCAST_PROMISC (1 << 5) | 378 | #define BE_FLAGS_MCAST_PROMISC (1 << 5) |
@@ -525,7 +526,8 @@ struct be_adapter { | |||
525 | 526 | ||
526 | #define be_physfn(adapter) (!adapter->virtfn) | 527 | #define be_physfn(adapter) (!adapter->virtfn) |
527 | #define be_virtfn(adapter) (adapter->virtfn) | 528 | #define be_virtfn(adapter) (adapter->virtfn) |
528 | #define sriov_enabled(adapter) (adapter->num_vfs > 0) | 529 | #define sriov_enabled(adapter) (adapter->flags & \ |
530 | BE_FLAGS_SRIOV_ENABLED) | ||
529 | 531 | ||
530 | #define for_all_vfs(adapter, vf_cfg, i) \ | 532 | #define for_all_vfs(adapter, vf_cfg, i) \ |
531 | for (i = 0, vf_cfg = &adapter->vf_cfg[i]; i < adapter->num_vfs; \ | 533 | for (i = 0, vf_cfg = &adapter->vf_cfg[i]; i < adapter->num_vfs; \ |
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 9ee445c8096e..9c50814f1e95 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
@@ -3049,6 +3049,7 @@ static void be_vf_clear(struct be_adapter *adapter) | |||
3049 | done: | 3049 | done: |
3050 | kfree(adapter->vf_cfg); | 3050 | kfree(adapter->vf_cfg); |
3051 | adapter->num_vfs = 0; | 3051 | adapter->num_vfs = 0; |
3052 | adapter->flags &= ~BE_FLAGS_SRIOV_ENABLED; | ||
3052 | } | 3053 | } |
3053 | 3054 | ||
3054 | static void be_clear_queues(struct be_adapter *adapter) | 3055 | static void be_clear_queues(struct be_adapter *adapter) |
@@ -3241,6 +3242,8 @@ static int be_vf_setup(struct be_adapter *adapter) | |||
3241 | goto err; | 3242 | goto err; |
3242 | } | 3243 | } |
3243 | } | 3244 | } |
3245 | |||
3246 | adapter->flags |= BE_FLAGS_SRIOV_ENABLED; | ||
3244 | return 0; | 3247 | return 0; |
3245 | err: | 3248 | err: |
3246 | dev_err(dev, "VF setup failed\n"); | 3249 | dev_err(dev, "VF setup failed\n"); |