Commit f870a3c6 authored by sudarsana.kalluru@cavium.com's avatar sudarsana.kalluru@cavium.com Committed by David S. Miller

qed*: Fix possible overflow for status block id field.

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: default avatarSudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 77ef033b
...@@ -3586,7 +3586,7 @@ static int qed_set_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, ...@@ -3586,7 +3586,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, 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; struct ustorm_eth_queue_zone eth_qzone;
u8 timeset, timer_res; u8 timeset, timer_res;
...@@ -3607,7 +3607,7 @@ int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, ...@@ -3607,7 +3607,7 @@ int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
} }
timeset = (u8)(coalesce >> timer_res); 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) if (rc)
return rc; return rc;
...@@ -3628,7 +3628,7 @@ int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, ...@@ -3628,7 +3628,7 @@ int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
} }
int qed_set_txq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, 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; struct xstorm_eth_queue_zone eth_qzone;
u8 timeset, timer_res; u8 timeset, timer_res;
...@@ -3649,7 +3649,7 @@ int qed_set_txq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, ...@@ -3649,7 +3649,7 @@ int qed_set_txq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
} }
timeset = (u8)(coalesce >> timer_res); 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) if (rc)
return rc; return rc;
......
...@@ -454,7 +454,7 @@ int qed_final_cleanup(struct qed_hwfn *p_hwfn, ...@@ -454,7 +454,7 @@ int qed_final_cleanup(struct qed_hwfn *p_hwfn,
* @return int * @return int
*/ */
int qed_set_rxq_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);
/** /**
* @brief qed_set_txq_coalesce - Configure coalesce parameters for a Tx queue * @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, ...@@ -471,7 +471,7 @@ int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
* @return int * @return int
*/ */
int qed_set_txq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, 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); const char *qed_hw_get_resc_name(enum qed_resources res_id);
#endif #endif
...@@ -1521,7 +1521,7 @@ static void qed_get_coalesce(struct qed_dev *cdev, u16 *rx_coal, u16 *tx_coal) ...@@ -1521,7 +1521,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, 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_hwfn *hwfn;
struct qed_ptt *ptt; struct qed_ptt *ptt;
......
...@@ -706,8 +706,7 @@ static int qede_set_coalesce(struct net_device *dev, ...@@ -706,8 +706,7 @@ static int qede_set_coalesce(struct net_device *dev,
{ {
struct qede_dev *edev = netdev_priv(dev); struct qede_dev *edev = netdev_priv(dev);
int i, rc = 0; int i, rc = 0;
u16 rxc, txc; u16 rxc, txc, sb_id;
u8 sb_id;
if (!netif_running(dev)) { if (!netif_running(dev)) {
DP_INFO(edev, "Interface is down\n"); DP_INFO(edev, "Interface is down\n");
...@@ -729,7 +728,7 @@ static int qede_set_coalesce(struct net_device *dev, ...@@ -729,7 +728,7 @@ static int qede_set_coalesce(struct net_device *dev,
for_each_queue(i) { for_each_queue(i) {
sb_id = edev->fp_array[i].sb_info->igu_sb_id; sb_id = edev->fp_array[i].sb_info->igu_sb_id;
rc = edev->ops->common->set_coalesce(edev->cdev, rxc, txc, rc = edev->ops->common->set_coalesce(edev->cdev, rxc, txc,
(u8)i, sb_id); (u16)i, sb_id);
if (rc) { if (rc) {
DP_INFO(edev, "Set coalesce error, rc = %d\n", rc); DP_INFO(edev, "Set coalesce error, rc = %d\n", rc);
return rc; return rc;
......
...@@ -635,7 +635,7 @@ struct qed_common_ops { ...@@ -635,7 +635,7 @@ struct qed_common_ops {
* @return 0 on success, error otherwise. * @return 0 on success, error otherwise.
*/ */
int (*set_coalesce)(struct qed_dev *cdev, u16 rx_coal, u16 tx_coal, 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 * @brief set_led - Configure LED mode
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment