net/qede: fix speed capability
[dpdk.git] / drivers / net / qede / qede_main.c
index c83893d..ab22409 100644 (file)
@@ -21,7 +21,7 @@ static uint8_t npar_tx_switching = 1;
 char fw_file[PATH_MAX];
 
 const char *QEDE_DEFAULT_FIRMWARE =
-       "/lib/firmware/qed/qed_init_values_zipped-8.10.9.0.bin";
+       "/lib/firmware/qed/qed_init_values-8.10.9.0.bin";
 
 static void
 qed_update_pf_params(struct ecore_dev *edev, struct ecore_pf_params *params)
@@ -384,6 +384,7 @@ int
 qed_fill_eth_dev_info(struct ecore_dev *edev, struct qed_dev_eth_info *info)
 {
        struct qede_dev *qdev = (struct qede_dev *)edev;
+       uint8_t queues = 0;
        int i;
 
        memset(info, 0, sizeof(*info));
@@ -407,7 +408,17 @@ qed_fill_eth_dev_info(struct ecore_dev *edev, struct qed_dev_eth_info *info)
                rte_memcpy(&info->port_mac, &edev->hwfns[0].hw_info.hw_mac_addr,
                           ETHER_ADDR_LEN);
        } else {
-               ecore_vf_get_num_rxqs(&edev->hwfns[0], &info->num_queues);
+               ecore_vf_get_num_rxqs(ECORE_LEADING_HWFN(edev),
+                                     &info->num_queues);
+               if (edev->num_hwfns > 1) {
+                       ecore_vf_get_num_rxqs(&edev->hwfns[1], &queues);
+                       info->num_queues += queues;
+                       /* Restrict 100G VF to advertise 16 queues till the
+                        * required support is available to go beyond 16.
+                        */
+                       info->num_queues = RTE_MIN(info->num_queues,
+                                                  ECORE_MAX_VF_CHAINS_PER_PF);
+               }
 
                ecore_vf_get_num_vlan_filters(&edev->hwfns[0],
                                              (u8 *)&info->num_vlan_filters);
@@ -426,7 +437,7 @@ qed_fill_eth_dev_info(struct ecore_dev *edev, struct qed_dev_eth_info *info)
 
 static void
 qed_set_id(struct ecore_dev *edev, char name[NAME_SIZE],
-          const char ver_str[VER_SIZE])
+          const char ver_str[NAME_SIZE])
 {
        int i;
 
@@ -434,7 +445,7 @@ qed_set_id(struct ecore_dev *edev, char name[NAME_SIZE],
        for_each_hwfn(edev, i) {
                snprintf(edev->hwfns[i].name, NAME_SIZE, "%s-%d", name, i);
        }
-       rte_memcpy(edev->ver_str, ver_str, VER_SIZE);
+       memcpy(edev->ver_str, ver_str, NAME_SIZE);
        edev->drv_type = DRV_ID_DRV_TYPE_LINUX;
 }
 
@@ -504,6 +515,9 @@ static void qed_fill_link(struct ecore_hwfn *hwfn,
 
        if_link->duplex = QEDE_DUPLEX_FULL;
 
+       /* Fill up the native advertised speed cap mask */
+       if_link->adv_speed = params.speed.advertised_speeds;
+
        if (params.speed.autoneg)
                if_link->supported_caps |= QEDE_SUPPORTED_AUTONEG;