]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
qed*: Fix possible overflow for status block id field.
authorsudarsana.kalluru@cavium.com <sudarsana.kalluru@cavium.com>
Thu, 4 May 2017 15:15:03 +0000 (08:15 -0700)
committerChuck Anderson <chuck.anderson@oracle.com>
Tue, 19 Sep 2017 05:32:04 +0000 (22:32 -0700)
Orabug: 26783820

Value for status block id could be more than 256 in 100G mode, need to
update its data type from u8 to u16.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[ Upstream commit f870a3c6727db5fcfeaa42d099f75872e4b17553 ]
Signed-off-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
drivers/net/ethernet/qlogic/qed/qed_dev.c
drivers/net/ethernet/qlogic/qed/qed_dev_api.h
drivers/net/ethernet/qlogic/qed/qed_main.c
drivers/net/ethernet/qlogic/qede/qede_ethtool.c
include/linux/qed/qed_if.h

index 05c46691f05eed34474fd64fe368557059e6956c..0861b19d5ab6ba91f9ad5e5c893da98f61040125 100644 (file)
@@ -3561,7 +3561,7 @@ static int qed_set_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
 }
 
 int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
-                        u16 coalesce, u8 qid, u16 sb_id)
+                        u16 coalesce, u16 qid, u16 sb_id)
 {
        struct ustorm_eth_queue_zone eth_qzone;
        u8 timeset, timer_res;
@@ -3582,7 +3582,7 @@ int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
        }
        timeset = (u8)(coalesce >> timer_res);
 
-       rc = qed_fw_l2_queue(p_hwfn, (u16)qid, &fw_qid);
+       rc = qed_fw_l2_queue(p_hwfn, qid, &fw_qid);
        if (rc)
                return rc;
 
@@ -3603,7 +3603,7 @@ out:
 }
 
 int qed_set_txq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
-                        u16 coalesce, u8 qid, u16 sb_id)
+                        u16 coalesce, u16 qid, u16 sb_id)
 {
        struct xstorm_eth_queue_zone eth_qzone;
        u8 timeset, timer_res;
@@ -3624,7 +3624,7 @@ int qed_set_txq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
        }
        timeset = (u8)(coalesce >> timer_res);
 
-       rc = qed_fw_l2_queue(p_hwfn, (u16)qid, &fw_qid);
+       rc = qed_fw_l2_queue(p_hwfn, qid, &fw_qid);
        if (rc)
                return rc;
 
index cefe3ee9064a2670c4579f7ec1af3c17861200fe..12d16c096e3654ec3058dc97d81e304a17836569 100644 (file)
@@ -454,7 +454,7 @@ int qed_final_cleanup(struct qed_hwfn *p_hwfn,
  * @return int
  */
 int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
-                        u16 coalesce, u8 qid, u16 sb_id);
+                        u16 coalesce, u16 qid, u16 sb_id);
 
 /**
  * @brief qed_set_txq_coalesce - Configure coalesce parameters for a Tx queue
@@ -471,7 +471,7 @@ int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
  * @return int
  */
 int qed_set_txq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
-                        u16 coalesce, u8 qid, u16 sb_id);
+                        u16 coalesce, u16 qid, u16 sb_id);
 
 const char *qed_hw_get_resc_name(enum qed_resources res_id);
 #endif
index 948c3f5ff617950767e3d64f2e0297150a21e598..fc299c6d38e3bad11b6e1ffdcafdb7585bb0c7c5 100644 (file)
@@ -1517,7 +1517,7 @@ static void qed_get_coalesce(struct qed_dev *cdev, u16 *rx_coal, u16 *tx_coal)
 }
 
 static int qed_set_coalesce(struct qed_dev *cdev, u16 rx_coal, u16 tx_coal,
-                           u8 qid, u16 sb_id)
+                           u16 qid, u16 sb_id)
 {
        struct qed_hwfn *hwfn;
        struct qed_ptt *ptt;
index e35e31d6054dc42723b0cb283227edcfb39bb046..aa36c370f634bea42c5e35ed47951e1454f472ca 100644 (file)
@@ -617,8 +617,7 @@ static int qede_set_coalesce(struct net_device *dev,
 {
        struct qede_dev *edev = netdev_priv(dev);
        int i, rc = 0;
-       u16 rxc, txc;
-       u8 sb_id;
+       u16 rxc, txc, sb_id;
 
        if (!netif_running(dev)) {
                DP_INFO(edev, "Interface is down\n");
@@ -640,7 +639,7 @@ static int qede_set_coalesce(struct net_device *dev,
        for_each_queue(i) {
                sb_id = edev->fp_array[i].sb_info->igu_sb_id;
                rc = edev->ops->common->set_coalesce(edev->cdev, rxc, txc,
-                                                    (u8)i, sb_id);
+                                                    (u16)i, sb_id);
                if (rc) {
                        DP_INFO(edev, "Set coalesce error, rc = %d\n", rc);
                        return rc;
index 74a83d8db307c8d625e8a6701522b01ad1ad5c99..8fc86f7029fc8de8035dad1a13d815a636d816ef 100644 (file)
@@ -636,7 +636,7 @@ struct qed_common_ops {
  * @return 0 on success, error otherwise.
  */
        int (*set_coalesce)(struct qed_dev *cdev, u16 rx_coal, u16 tx_coal,
-                           u8 qid, u16 sb_id);
+                           u16 qid, u16 sb_id);
 
 /**
  * @brief set_led - Configure LED mode