diff options
Diffstat (limited to 'drivers/net/ethernet/emulex')
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be.h | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 22 |
3 files changed, 14 insertions, 11 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h index d266c86a53f7..5b622993ff17 100644 --- a/drivers/net/ethernet/emulex/benet/be.h +++ b/drivers/net/ethernet/emulex/benet/be.h | |||
@@ -110,6 +110,7 @@ static inline char *nic_name(struct pci_dev *pdev) | |||
110 | #define MAX_RX_POST BE_NAPI_WEIGHT /* Frags posted at a time */ | 110 | #define MAX_RX_POST BE_NAPI_WEIGHT /* Frags posted at a time */ |
111 | #define RX_FRAGS_REFILL_WM (RX_Q_LEN - MAX_RX_POST) | 111 | #define RX_FRAGS_REFILL_WM (RX_Q_LEN - MAX_RX_POST) |
112 | 112 | ||
113 | #define MAX_VFS 30 /* Max VFs supported by BE3 FW */ | ||
113 | #define FW_VER_LEN 32 | 114 | #define FW_VER_LEN 32 |
114 | 115 | ||
115 | struct be_dma_mem { | 116 | struct be_dma_mem { |
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index 8c63d06ab12b..701b3e9a715b 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c | |||
@@ -120,7 +120,7 @@ static int be_mcc_compl_process(struct be_adapter *adapter, | |||
120 | 120 | ||
121 | if (compl_status == MCC_STATUS_UNAUTHORIZED_REQUEST) { | 121 | if (compl_status == MCC_STATUS_UNAUTHORIZED_REQUEST) { |
122 | dev_warn(&adapter->pdev->dev, | 122 | dev_warn(&adapter->pdev->dev, |
123 | "opcode %d-%d is not permitted\n", | 123 | "VF is not privileged to issue opcode %d-%d\n", |
124 | opcode, subsystem); | 124 | opcode, subsystem); |
125 | } else { | 125 | } else { |
126 | extd_status = (compl->status >> CQE_STATUS_EXTD_SHIFT) & | 126 | extd_status = (compl->status >> CQE_STATUS_EXTD_SHIFT) & |
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 78b8aa8069f0..111dc8813f68 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
@@ -2176,8 +2176,7 @@ static uint be_num_rss_want(struct be_adapter *adapter) | |||
2176 | { | 2176 | { |
2177 | u32 num = 0; | 2177 | u32 num = 0; |
2178 | if ((adapter->function_caps & BE_FUNCTION_CAPS_RSS) && | 2178 | if ((adapter->function_caps & BE_FUNCTION_CAPS_RSS) && |
2179 | !sriov_want(adapter) && be_physfn(adapter) && | 2179 | !sriov_want(adapter) && be_physfn(adapter)) { |
2180 | !be_is_mc(adapter)) { | ||
2181 | num = (adapter->be3_native) ? BE3_MAX_RSS_QS : BE2_MAX_RSS_QS; | 2180 | num = (adapter->be3_native) ? BE3_MAX_RSS_QS : BE2_MAX_RSS_QS; |
2182 | num = min_t(u32, num, (u32)netif_get_num_default_rss_queues()); | 2181 | num = min_t(u32, num, (u32)netif_get_num_default_rss_queues()); |
2183 | } | 2182 | } |
@@ -2646,8 +2645,8 @@ static int be_vf_setup(struct be_adapter *adapter) | |||
2646 | } | 2645 | } |
2647 | 2646 | ||
2648 | for_all_vfs(adapter, vf_cfg, vf) { | 2647 | for_all_vfs(adapter, vf_cfg, vf) { |
2649 | status = be_cmd_link_status_query(adapter, NULL, &lnk_speed, | 2648 | lnk_speed = 1000; |
2650 | NULL, vf + 1); | 2649 | status = be_cmd_set_qos(adapter, lnk_speed, vf + 1); |
2651 | if (status) | 2650 | if (status) |
2652 | goto err; | 2651 | goto err; |
2653 | vf_cfg->tx_rate = lnk_speed * 10; | 2652 | vf_cfg->tx_rate = lnk_speed * 10; |
@@ -2724,6 +2723,8 @@ static int be_get_config(struct be_adapter *adapter) | |||
2724 | if (pos) { | 2723 | if (pos) { |
2725 | pci_read_config_word(adapter->pdev, pos + PCI_SRIOV_TOTAL_VF, | 2724 | pci_read_config_word(adapter->pdev, pos + PCI_SRIOV_TOTAL_VF, |
2726 | &dev_num_vfs); | 2725 | &dev_num_vfs); |
2726 | if (!lancer_chip(adapter)) | ||
2727 | dev_num_vfs = min_t(u16, dev_num_vfs, MAX_VFS); | ||
2727 | adapter->dev_num_vfs = dev_num_vfs; | 2728 | adapter->dev_num_vfs = dev_num_vfs; |
2728 | } | 2729 | } |
2729 | return 0; | 2730 | return 0; |
@@ -3437,6 +3438,7 @@ static void be_ctrl_cleanup(struct be_adapter *adapter) | |||
3437 | if (mem->va) | 3438 | if (mem->va) |
3438 | dma_free_coherent(&adapter->pdev->dev, mem->size, mem->va, | 3439 | dma_free_coherent(&adapter->pdev->dev, mem->size, mem->va, |
3439 | mem->dma); | 3440 | mem->dma); |
3441 | kfree(adapter->pmac_id); | ||
3440 | } | 3442 | } |
3441 | 3443 | ||
3442 | static int be_ctrl_init(struct be_adapter *adapter) | 3444 | static int be_ctrl_init(struct be_adapter *adapter) |
@@ -3473,6 +3475,12 @@ static int be_ctrl_init(struct be_adapter *adapter) | |||
3473 | } | 3475 | } |
3474 | memset(rx_filter->va, 0, rx_filter->size); | 3476 | memset(rx_filter->va, 0, rx_filter->size); |
3475 | 3477 | ||
3478 | /* primary mac needs 1 pmac entry */ | ||
3479 | adapter->pmac_id = kcalloc(adapter->max_pmac_cnt + 1, | ||
3480 | sizeof(*adapter->pmac_id), GFP_KERNEL); | ||
3481 | if (!adapter->pmac_id) | ||
3482 | return -ENOMEM; | ||
3483 | |||
3476 | mutex_init(&adapter->mbox_lock); | 3484 | mutex_init(&adapter->mbox_lock); |
3477 | spin_lock_init(&adapter->mcc_lock); | 3485 | spin_lock_init(&adapter->mcc_lock); |
3478 | spin_lock_init(&adapter->mcc_cq_lock); | 3486 | spin_lock_init(&adapter->mcc_cq_lock); |
@@ -3609,12 +3617,6 @@ static int be_get_initial_config(struct be_adapter *adapter) | |||
3609 | else | 3617 | else |
3610 | adapter->max_pmac_cnt = BE_VF_UC_PMAC_COUNT; | 3618 | adapter->max_pmac_cnt = BE_VF_UC_PMAC_COUNT; |
3611 | 3619 | ||
3612 | /* primary mac needs 1 pmac entry */ | ||
3613 | adapter->pmac_id = kcalloc(adapter->max_pmac_cnt + 1, | ||
3614 | sizeof(u32), GFP_KERNEL); | ||
3615 | if (!adapter->pmac_id) | ||
3616 | return -ENOMEM; | ||
3617 | |||
3618 | status = be_cmd_get_cntl_attributes(adapter); | 3620 | status = be_cmd_get_cntl_attributes(adapter); |
3619 | if (status) | 3621 | if (status) |
3620 | return status; | 3622 | return status; |