Commit b37ce587 authored by Yufeng Mo's avatar Yufeng Mo Committed by David S. Miller

net: hns3: use macros instead of magic numbers

This patch adds some macros instead of magic numbers in serval places
Signed-off-by: default avatarYufeng Mo <moyufeng@huawei.com>
Signed-off-by: default avatarWeihang Li <liweihang@hisilicon.com>
Signed-off-by: default avatarYunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e91e388c
...@@ -60,6 +60,7 @@ static const struct hns3_stats hns3_rxq_stats[] = { ...@@ -60,6 +60,7 @@ static const struct hns3_stats hns3_rxq_stats[] = {
#define HNS3_NIC_LB_TEST_PKT_NUM 1 #define HNS3_NIC_LB_TEST_PKT_NUM 1
#define HNS3_NIC_LB_TEST_RING_ID 0 #define HNS3_NIC_LB_TEST_RING_ID 0
#define HNS3_NIC_LB_TEST_PACKET_SIZE 128 #define HNS3_NIC_LB_TEST_PACKET_SIZE 128
#define HNS3_NIC_LB_SETUP_USEC 10000
/* Nic loopback test err */ /* Nic loopback test err */
#define HNS3_NIC_LB_TEST_NO_MEM_ERR 1 #define HNS3_NIC_LB_TEST_NO_MEM_ERR 1
...@@ -117,7 +118,7 @@ static int hns3_lp_up(struct net_device *ndev, enum hnae3_loop loop_mode) ...@@ -117,7 +118,7 @@ static int hns3_lp_up(struct net_device *ndev, enum hnae3_loop loop_mode)
return ret; return ret;
ret = hns3_lp_setup(ndev, loop_mode, true); ret = hns3_lp_setup(ndev, loop_mode, true);
usleep_range(10000, 20000); usleep_range(HNS3_NIC_LB_SETUP_USEC, HNS3_NIC_LB_SETUP_USEC * 2);
return ret; return ret;
} }
...@@ -132,7 +133,7 @@ static int hns3_lp_down(struct net_device *ndev, enum hnae3_loop loop_mode) ...@@ -132,7 +133,7 @@ static int hns3_lp_down(struct net_device *ndev, enum hnae3_loop loop_mode)
return ret; return ret;
} }
usleep_range(10000, 20000); usleep_range(HNS3_NIC_LB_SETUP_USEC, HNS3_NIC_LB_SETUP_USEC * 2);
return 0; return 0;
} }
......
...@@ -649,6 +649,11 @@ enum hclge_mac_vlan_tbl_opcode { ...@@ -649,6 +649,11 @@ enum hclge_mac_vlan_tbl_opcode {
HCLGE_MAC_VLAN_LKUP, /* Lookup a entry through mac_vlan key */ HCLGE_MAC_VLAN_LKUP, /* Lookup a entry through mac_vlan key */
}; };
enum hclge_mac_vlan_add_resp_code {
HCLGE_ADD_UC_OVERFLOW = 2, /* ADD failed for UC overflow */
HCLGE_ADD_MC_OVERFLOW, /* ADD failed for MC overflow */
};
#define HCLGE_MAC_VLAN_BIT0_EN_B 0 #define HCLGE_MAC_VLAN_BIT0_EN_B 0
#define HCLGE_MAC_VLAN_BIT1_EN_B 1 #define HCLGE_MAC_VLAN_BIT1_EN_B 1
#define HCLGE_MAC_EPORT_SW_EN_B 12 #define HCLGE_MAC_EPORT_SW_EN_B 12
......
...@@ -64,6 +64,8 @@ static void hclge_dbg_dump_reg_common(struct hclge_dev *hdev, ...@@ -64,6 +64,8 @@ static void hclge_dbg_dump_reg_common(struct hclge_dev *hdev,
char *cmd_buf, int msg_num, int offset, char *cmd_buf, int msg_num, int offset,
enum hclge_opcode_type cmd) enum hclge_opcode_type cmd)
{ {
#define BD_DATA_NUM 6
struct hclge_desc *desc_src; struct hclge_desc *desc_src;
struct hclge_desc *desc; struct hclge_desc *desc;
int bd_num, buf_len; int bd_num, buf_len;
...@@ -92,14 +94,16 @@ static void hclge_dbg_dump_reg_common(struct hclge_dev *hdev, ...@@ -92,14 +94,16 @@ static void hclge_dbg_dump_reg_common(struct hclge_dev *hdev,
return; return;
} }
max = (bd_num * 6) <= msg_num ? (bd_num * 6) : msg_num; max = (bd_num * BD_DATA_NUM) <= msg_num ?
(bd_num * BD_DATA_NUM) : msg_num;
desc = desc_src; desc = desc_src;
for (i = 0; i < max; i++) { for (i = 0; i < max; i++) {
(((i / 6) > 0) && ((i % 6) == 0)) ? desc++ : desc; ((i > 0) && ((i % BD_DATA_NUM) == 0)) ? desc++ : desc;
if (dfx_message->flag) if (dfx_message->flag)
dev_info(&hdev->pdev->dev, "%s: 0x%x\n", dev_info(&hdev->pdev->dev, "%s: 0x%x\n",
dfx_message->message, desc->data[i % 6]); dfx_message->message,
desc->data[i % BD_DATA_NUM]);
dfx_message++; dfx_message++;
} }
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
#define HCLGE_MAC_STATS_FIELD_OFF(f) (offsetof(struct hclge_mac_stats, f)) #define HCLGE_MAC_STATS_FIELD_OFF(f) (offsetof(struct hclge_mac_stats, f))
#define HCLGE_BUF_SIZE_UNIT 256 #define HCLGE_BUF_SIZE_UNIT 256
#define HCLGE_BUF_MUL_BY 2
#define HCLGE_BUF_DIV_BY 2
static int hclge_set_mac_mtu(struct hclge_dev *hdev, int new_mps); static int hclge_set_mac_mtu(struct hclge_dev *hdev, int new_mps);
static int hclge_init_vlan_config(struct hclge_dev *hdev); static int hclge_init_vlan_config(struct hclge_dev *hdev);
...@@ -728,6 +730,8 @@ static int hclge_parse_func_status(struct hclge_dev *hdev, ...@@ -728,6 +730,8 @@ static int hclge_parse_func_status(struct hclge_dev *hdev,
static int hclge_query_function_status(struct hclge_dev *hdev) static int hclge_query_function_status(struct hclge_dev *hdev)
{ {
#define HCLGE_QUERY_MAX_CNT 5
struct hclge_func_status_cmd *req; struct hclge_func_status_cmd *req;
struct hclge_desc desc; struct hclge_desc desc;
int timeout = 0; int timeout = 0;
...@@ -750,7 +754,7 @@ static int hclge_query_function_status(struct hclge_dev *hdev) ...@@ -750,7 +754,7 @@ static int hclge_query_function_status(struct hclge_dev *hdev)
if (req->pf_state) if (req->pf_state)
break; break;
usleep_range(1000, 2000); usleep_range(1000, 2000);
} while (timeout++ < 5); } while (timeout++ < HCLGE_QUERY_MAX_CNT);
ret = hclge_parse_func_status(hdev, req); ret = hclge_parse_func_status(hdev, req);
...@@ -1662,7 +1666,8 @@ static bool hclge_is_rx_buf_ok(struct hclge_dev *hdev, ...@@ -1662,7 +1666,8 @@ static bool hclge_is_rx_buf_ok(struct hclge_dev *hdev,
aligned_mps = roundup(hdev->mps, HCLGE_BUF_SIZE_UNIT); aligned_mps = roundup(hdev->mps, HCLGE_BUF_SIZE_UNIT);
if (hnae3_dev_dcb_supported(hdev)) if (hnae3_dev_dcb_supported(hdev))
shared_buf_min = 2 * aligned_mps + hdev->dv_buf_size; shared_buf_min = HCLGE_BUF_MUL_BY * aligned_mps +
hdev->dv_buf_size;
else else
shared_buf_min = aligned_mps + HCLGE_NON_DCB_ADDITIONAL_BUF shared_buf_min = aligned_mps + HCLGE_NON_DCB_ADDITIONAL_BUF
+ hdev->dv_buf_size; + hdev->dv_buf_size;
...@@ -1680,7 +1685,8 @@ static bool hclge_is_rx_buf_ok(struct hclge_dev *hdev, ...@@ -1680,7 +1685,8 @@ static bool hclge_is_rx_buf_ok(struct hclge_dev *hdev,
if (hnae3_dev_dcb_supported(hdev)) { if (hnae3_dev_dcb_supported(hdev)) {
buf_alloc->s_buf.self.high = shared_buf - hdev->dv_buf_size; buf_alloc->s_buf.self.high = shared_buf - hdev->dv_buf_size;
buf_alloc->s_buf.self.low = buf_alloc->s_buf.self.high buf_alloc->s_buf.self.low = buf_alloc->s_buf.self.high
- roundup(aligned_mps / 2, HCLGE_BUF_SIZE_UNIT); - roundup(aligned_mps / HCLGE_BUF_DIV_BY,
HCLGE_BUF_SIZE_UNIT);
} else { } else {
buf_alloc->s_buf.self.high = aligned_mps + buf_alloc->s_buf.self.high = aligned_mps +
HCLGE_NON_DCB_ADDITIONAL_BUF; HCLGE_NON_DCB_ADDITIONAL_BUF;
...@@ -1693,9 +1699,9 @@ static bool hclge_is_rx_buf_ok(struct hclge_dev *hdev, ...@@ -1693,9 +1699,9 @@ static bool hclge_is_rx_buf_ok(struct hclge_dev *hdev,
else else
hi_thrd = shared_buf - hdev->dv_buf_size; hi_thrd = shared_buf - hdev->dv_buf_size;
hi_thrd = max_t(u32, hi_thrd, 2 * aligned_mps); hi_thrd = max_t(u32, hi_thrd, HCLGE_BUF_MUL_BY * aligned_mps);
hi_thrd = rounddown(hi_thrd, HCLGE_BUF_SIZE_UNIT); hi_thrd = rounddown(hi_thrd, HCLGE_BUF_SIZE_UNIT);
lo_thrd = hi_thrd - aligned_mps / 2; lo_thrd = hi_thrd - aligned_mps / HCLGE_BUF_DIV_BY;
} else { } else {
hi_thrd = aligned_mps + HCLGE_NON_DCB_ADDITIONAL_BUF; hi_thrd = aligned_mps + HCLGE_NON_DCB_ADDITIONAL_BUF;
lo_thrd = aligned_mps; lo_thrd = aligned_mps;
...@@ -1756,12 +1762,13 @@ static bool hclge_rx_buf_calc_all(struct hclge_dev *hdev, bool max, ...@@ -1756,12 +1762,13 @@ static bool hclge_rx_buf_calc_all(struct hclge_dev *hdev, bool max,
priv->enable = 1; priv->enable = 1;
if (hdev->tm_info.hw_pfc_map & BIT(i)) { if (hdev->tm_info.hw_pfc_map & BIT(i)) {
priv->wl.low = max ? aligned_mps : 256; priv->wl.low = max ? aligned_mps : HCLGE_BUF_SIZE_UNIT;
priv->wl.high = roundup(priv->wl.low + aligned_mps, priv->wl.high = roundup(priv->wl.low + aligned_mps,
HCLGE_BUF_SIZE_UNIT); HCLGE_BUF_SIZE_UNIT);
} else { } else {
priv->wl.low = 0; priv->wl.low = 0;
priv->wl.high = max ? (aligned_mps * 2) : aligned_mps; priv->wl.high = max ? (aligned_mps * HCLGE_BUF_MUL_BY) :
aligned_mps;
} }
priv->buf_size = priv->wl.high + hdev->dv_buf_size; priv->buf_size = priv->wl.high + hdev->dv_buf_size;
...@@ -3213,7 +3220,6 @@ static int hclge_reset_prepare_wait(struct hclge_dev *hdev) ...@@ -3213,7 +3220,6 @@ static int hclge_reset_prepare_wait(struct hclge_dev *hdev)
static bool hclge_reset_err_handle(struct hclge_dev *hdev, bool is_timeout) static bool hclge_reset_err_handle(struct hclge_dev *hdev, bool is_timeout)
{ {
#define MAX_RESET_FAIL_CNT 5 #define MAX_RESET_FAIL_CNT 5
#define RESET_UPGRADE_DELAY_SEC 10
if (hdev->reset_pending) { if (hdev->reset_pending) {
dev_info(&hdev->pdev->dev, "Reset pending %lu\n", dev_info(&hdev->pdev->dev, "Reset pending %lu\n",
...@@ -3238,7 +3244,7 @@ static bool hclge_reset_err_handle(struct hclge_dev *hdev, bool is_timeout) ...@@ -3238,7 +3244,7 @@ static bool hclge_reset_err_handle(struct hclge_dev *hdev, bool is_timeout)
dev_info(&hdev->pdev->dev, "Upgrade reset level\n"); dev_info(&hdev->pdev->dev, "Upgrade reset level\n");
hclge_clear_reset_cause(hdev); hclge_clear_reset_cause(hdev);
mod_timer(&hdev->reset_timer, mod_timer(&hdev->reset_timer,
jiffies + RESET_UPGRADE_DELAY_SEC * HZ); jiffies + HCLGE_RESET_INTERVAL);
return false; return false;
} }
...@@ -3382,7 +3388,8 @@ static void hclge_reset_event(struct pci_dev *pdev, struct hnae3_handle *handle) ...@@ -3382,7 +3388,8 @@ static void hclge_reset_event(struct pci_dev *pdev, struct hnae3_handle *handle)
if (!handle) if (!handle)
handle = &hdev->vport[0].nic; handle = &hdev->vport[0].nic;
if (time_before(jiffies, (hdev->last_reset_time + 3 * HZ))) if (time_before(jiffies, (hdev->last_reset_time +
HCLGE_RESET_INTERVAL)))
return; return;
else if (hdev->default_reset_request) else if (hdev->default_reset_request)
hdev->reset_level = hdev->reset_level =
...@@ -6150,11 +6157,11 @@ static int hclge_get_mac_vlan_cmd_status(struct hclge_vport *vport, ...@@ -6150,11 +6157,11 @@ static int hclge_get_mac_vlan_cmd_status(struct hclge_vport *vport,
if (op == HCLGE_MAC_VLAN_ADD) { if (op == HCLGE_MAC_VLAN_ADD) {
if ((!resp_code) || (resp_code == 1)) { if ((!resp_code) || (resp_code == 1)) {
return_status = 0; return_status = 0;
} else if (resp_code == 2) { } else if (resp_code == HCLGE_ADD_UC_OVERFLOW) {
return_status = -ENOSPC; return_status = -ENOSPC;
dev_err(&hdev->pdev->dev, dev_err(&hdev->pdev->dev,
"add mac addr failed for uc_overflow.\n"); "add mac addr failed for uc_overflow.\n");
} else if (resp_code == 3) { } else if (resp_code == HCLGE_ADD_MC_OVERFLOW) {
return_status = -ENOSPC; return_status = -ENOSPC;
dev_err(&hdev->pdev->dev, dev_err(&hdev->pdev->dev,
"add mac addr failed for mc_overflow.\n"); "add mac addr failed for mc_overflow.\n");
...@@ -6199,13 +6206,15 @@ static int hclge_get_mac_vlan_cmd_status(struct hclge_vport *vport, ...@@ -6199,13 +6206,15 @@ static int hclge_get_mac_vlan_cmd_status(struct hclge_vport *vport,
static int hclge_update_desc_vfid(struct hclge_desc *desc, int vfid, bool clr) static int hclge_update_desc_vfid(struct hclge_desc *desc, int vfid, bool clr)
{ {
#define HCLGE_VF_NUM_IN_FIRST_DESC 192
int word_num; int word_num;
int bit_num; int bit_num;
if (vfid > 255 || vfid < 0) if (vfid > 255 || vfid < 0)
return -EIO; return -EIO;
if (vfid >= 0 && vfid <= 191) { if (vfid >= 0 && vfid < HCLGE_VF_NUM_IN_FIRST_DESC) {
word_num = vfid / 32; word_num = vfid / 32;
bit_num = vfid % 32; bit_num = vfid % 32;
if (clr) if (clr)
...@@ -6213,7 +6222,7 @@ static int hclge_update_desc_vfid(struct hclge_desc *desc, int vfid, bool clr) ...@@ -6213,7 +6222,7 @@ static int hclge_update_desc_vfid(struct hclge_desc *desc, int vfid, bool clr)
else else
desc[1].data[word_num] |= cpu_to_le32(1 << bit_num); desc[1].data[word_num] |= cpu_to_le32(1 << bit_num);
} else { } else {
word_num = (vfid - 192) / 32; word_num = (vfid - HCLGE_VF_NUM_IN_FIRST_DESC) / 32;
bit_num = vfid % 32; bit_num = vfid % 32;
if (clr) if (clr)
desc[2].data[word_num] &= cpu_to_le32(~(1 << bit_num)); desc[2].data[word_num] &= cpu_to_le32(~(1 << bit_num));
...@@ -8896,10 +8905,12 @@ static int hclge_get_32_bit_regs(struct hclge_dev *hdev, u32 regs_num, ...@@ -8896,10 +8905,12 @@ static int hclge_get_32_bit_regs(struct hclge_dev *hdev, u32 regs_num,
void *data) void *data)
{ {
#define HCLGE_32_BIT_REG_RTN_DATANUM 8 #define HCLGE_32_BIT_REG_RTN_DATANUM 8
#define HCLGE_32_BIT_DESC_NODATA_LEN 2
struct hclge_desc *desc; struct hclge_desc *desc;
u32 *reg_val = data; u32 *reg_val = data;
__le32 *desc_data; __le32 *desc_data;
int nodata_num;
int cmd_num; int cmd_num;
int i, k, n; int i, k, n;
int ret; int ret;
...@@ -8907,7 +8918,9 @@ static int hclge_get_32_bit_regs(struct hclge_dev *hdev, u32 regs_num, ...@@ -8907,7 +8918,9 @@ static int hclge_get_32_bit_regs(struct hclge_dev *hdev, u32 regs_num,
if (regs_num == 0) if (regs_num == 0)
return 0; return 0;
cmd_num = DIV_ROUND_UP(regs_num + 2, HCLGE_32_BIT_REG_RTN_DATANUM); nodata_num = HCLGE_32_BIT_DESC_NODATA_LEN;
cmd_num = DIV_ROUND_UP(regs_num + nodata_num,
HCLGE_32_BIT_REG_RTN_DATANUM);
desc = kcalloc(cmd_num, sizeof(struct hclge_desc), GFP_KERNEL); desc = kcalloc(cmd_num, sizeof(struct hclge_desc), GFP_KERNEL);
if (!desc) if (!desc)
return -ENOMEM; return -ENOMEM;
...@@ -8924,7 +8937,7 @@ static int hclge_get_32_bit_regs(struct hclge_dev *hdev, u32 regs_num, ...@@ -8924,7 +8937,7 @@ static int hclge_get_32_bit_regs(struct hclge_dev *hdev, u32 regs_num,
for (i = 0; i < cmd_num; i++) { for (i = 0; i < cmd_num; i++) {
if (i == 0) { if (i == 0) {
desc_data = (__le32 *)(&desc[i].data[0]); desc_data = (__le32 *)(&desc[i].data[0]);
n = HCLGE_32_BIT_REG_RTN_DATANUM - 2; n = HCLGE_32_BIT_REG_RTN_DATANUM - nodata_num;
} else { } else {
desc_data = (__le32 *)(&desc[i]); desc_data = (__le32 *)(&desc[i]);
n = HCLGE_32_BIT_REG_RTN_DATANUM; n = HCLGE_32_BIT_REG_RTN_DATANUM;
...@@ -8946,10 +8959,12 @@ static int hclge_get_64_bit_regs(struct hclge_dev *hdev, u32 regs_num, ...@@ -8946,10 +8959,12 @@ static int hclge_get_64_bit_regs(struct hclge_dev *hdev, u32 regs_num,
void *data) void *data)
{ {
#define HCLGE_64_BIT_REG_RTN_DATANUM 4 #define HCLGE_64_BIT_REG_RTN_DATANUM 4
#define HCLGE_64_BIT_DESC_NODATA_LEN 1
struct hclge_desc *desc; struct hclge_desc *desc;
u64 *reg_val = data; u64 *reg_val = data;
__le64 *desc_data; __le64 *desc_data;
int nodata_len;
int cmd_num; int cmd_num;
int i, k, n; int i, k, n;
int ret; int ret;
...@@ -8957,7 +8972,9 @@ static int hclge_get_64_bit_regs(struct hclge_dev *hdev, u32 regs_num, ...@@ -8957,7 +8972,9 @@ static int hclge_get_64_bit_regs(struct hclge_dev *hdev, u32 regs_num,
if (regs_num == 0) if (regs_num == 0)
return 0; return 0;
cmd_num = DIV_ROUND_UP(regs_num + 1, HCLGE_64_BIT_REG_RTN_DATANUM); nodata_len = HCLGE_64_BIT_DESC_NODATA_LEN;
cmd_num = DIV_ROUND_UP(regs_num + nodata_len,
HCLGE_64_BIT_REG_RTN_DATANUM);
desc = kcalloc(cmd_num, sizeof(struct hclge_desc), GFP_KERNEL); desc = kcalloc(cmd_num, sizeof(struct hclge_desc), GFP_KERNEL);
if (!desc) if (!desc)
return -ENOMEM; return -ENOMEM;
...@@ -8974,7 +8991,7 @@ static int hclge_get_64_bit_regs(struct hclge_dev *hdev, u32 regs_num, ...@@ -8974,7 +8991,7 @@ static int hclge_get_64_bit_regs(struct hclge_dev *hdev, u32 regs_num,
for (i = 0; i < cmd_num; i++) { for (i = 0; i < cmd_num; i++) {
if (i == 0) { if (i == 0) {
desc_data = (__le64 *)(&desc[i].data[0]); desc_data = (__le64 *)(&desc[i].data[0]);
n = HCLGE_64_BIT_REG_RTN_DATANUM - 1; n = HCLGE_64_BIT_REG_RTN_DATANUM - nodata_len;
} else { } else {
desc_data = (__le64 *)(&desc[i]); desc_data = (__le64 *)(&desc[i]);
n = HCLGE_64_BIT_REG_RTN_DATANUM; n = HCLGE_64_BIT_REG_RTN_DATANUM;
......
...@@ -699,6 +699,8 @@ struct hclge_mac_tnl_stats { ...@@ -699,6 +699,8 @@ struct hclge_mac_tnl_stats {
u32 status; u32 status;
}; };
#define HCLGE_RESET_INTERVAL (10 * HZ)
/* For each bit of TCAM entry, it uses a pair of 'x' and /* For each bit of TCAM entry, it uses a pair of 'x' and
* 'y' to indicate which value to match, like below: * 'y' to indicate which value to match, like below:
* ---------------------------------- * ----------------------------------
......
...@@ -43,6 +43,9 @@ enum hclge_shaper_level { ...@@ -43,6 +43,9 @@ enum hclge_shaper_level {
static int hclge_shaper_para_calc(u32 ir, u8 shaper_level, static int hclge_shaper_para_calc(u32 ir, u8 shaper_level,
u8 *ir_b, u8 *ir_u, u8 *ir_s) u8 *ir_b, u8 *ir_u, u8 *ir_s)
{ {
#define DIVISOR_CLK (1000 * 8)
#define DIVISOR_IR_B_126 (126 * DIVISOR_CLK)
const u16 tick_array[HCLGE_SHAPER_LVL_CNT] = { const u16 tick_array[HCLGE_SHAPER_LVL_CNT] = {
6 * 256, /* Prioriy level */ 6 * 256, /* Prioriy level */
6 * 32, /* Prioriy group level */ 6 * 32, /* Prioriy group level */
...@@ -66,7 +69,7 @@ static int hclge_shaper_para_calc(u32 ir, u8 shaper_level, ...@@ -66,7 +69,7 @@ static int hclge_shaper_para_calc(u32 ir, u8 shaper_level,
* ir_calc = ---------------- * 1000 * ir_calc = ---------------- * 1000
* tick * 1 * tick * 1
*/ */
ir_calc = (1008000 + (tick >> 1) - 1) / tick; ir_calc = (DIVISOR_IR_B_126 + (tick >> 1) - 1) / tick;
if (ir_calc == ir) { if (ir_calc == ir) {
*ir_b = 126; *ir_b = 126;
...@@ -78,27 +81,28 @@ static int hclge_shaper_para_calc(u32 ir, u8 shaper_level, ...@@ -78,27 +81,28 @@ static int hclge_shaper_para_calc(u32 ir, u8 shaper_level,
/* Increasing the denominator to select ir_s value */ /* Increasing the denominator to select ir_s value */
while (ir_calc > ir) { while (ir_calc > ir) {
ir_s_calc++; ir_s_calc++;
ir_calc = 1008000 / (tick * (1 << ir_s_calc)); ir_calc = DIVISOR_IR_B_126 / (tick * (1 << ir_s_calc));
} }
if (ir_calc == ir) if (ir_calc == ir)
*ir_b = 126; *ir_b = 126;
else else
*ir_b = (ir * tick * (1 << ir_s_calc) + 4000) / 8000; *ir_b = (ir * tick * (1 << ir_s_calc) +
(DIVISOR_CLK >> 1)) / DIVISOR_CLK;
} else { } else {
/* Increasing the numerator to select ir_u value */ /* Increasing the numerator to select ir_u value */
u32 numerator; u32 numerator;
while (ir_calc < ir) { while (ir_calc < ir) {
ir_u_calc++; ir_u_calc++;
numerator = 1008000 * (1 << ir_u_calc); numerator = DIVISOR_IR_B_126 * (1 << ir_u_calc);
ir_calc = (numerator + (tick >> 1)) / tick; ir_calc = (numerator + (tick >> 1)) / tick;
} }
if (ir_calc == ir) { if (ir_calc == ir) {
*ir_b = 126; *ir_b = 126;
} else { } else {
u32 denominator = (8000 * (1 << --ir_u_calc)); u32 denominator = (DIVISOR_CLK * (1 << --ir_u_calc));
*ir_b = (ir * tick + (denominator >> 1)) / denominator; *ir_b = (ir * tick + (denominator >> 1)) / denominator;
} }
} }
...@@ -604,12 +608,14 @@ static void hclge_tm_tc_info_init(struct hclge_dev *hdev) ...@@ -604,12 +608,14 @@ static void hclge_tm_tc_info_init(struct hclge_dev *hdev)
static void hclge_tm_pg_info_init(struct hclge_dev *hdev) static void hclge_tm_pg_info_init(struct hclge_dev *hdev)
{ {
#define BW_PERCENT 100
u8 i; u8 i;
for (i = 0; i < hdev->tm_info.num_pg; i++) { for (i = 0; i < hdev->tm_info.num_pg; i++) {
int k; int k;
hdev->tm_info.pg_dwrr[i] = i ? 0 : 100; hdev->tm_info.pg_dwrr[i] = i ? 0 : BW_PERCENT;
hdev->tm_info.pg_info[i].pg_id = i; hdev->tm_info.pg_info[i].pg_id = i;
hdev->tm_info.pg_info[i].pg_sch_mode = HCLGE_SCH_MODE_DWRR; hdev->tm_info.pg_info[i].pg_sch_mode = HCLGE_SCH_MODE_DWRR;
...@@ -621,7 +627,7 @@ static void hclge_tm_pg_info_init(struct hclge_dev *hdev) ...@@ -621,7 +627,7 @@ static void hclge_tm_pg_info_init(struct hclge_dev *hdev)
hdev->tm_info.pg_info[i].tc_bit_map = hdev->hw_tc_map; hdev->tm_info.pg_info[i].tc_bit_map = hdev->hw_tc_map;
for (k = 0; k < hdev->tm_info.num_tc; k++) for (k = 0; k < hdev->tm_info.num_tc; k++)
hdev->tm_info.pg_info[i].tc_dwrr[k] = 100; hdev->tm_info.pg_info[i].tc_dwrr[k] = BW_PERCENT;
} }
} }
......
...@@ -1243,7 +1243,7 @@ static int hclgevf_set_vlan_filter(struct hnae3_handle *handle, ...@@ -1243,7 +1243,7 @@ static int hclgevf_set_vlan_filter(struct hnae3_handle *handle,
struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle); struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
u8 msg_data[HCLGEVF_VLAN_MBX_MSG_LEN]; u8 msg_data[HCLGEVF_VLAN_MBX_MSG_LEN];
if (vlan_id > 4095) if (vlan_id > HCLGEVF_MAX_VLAN_ID)
return -EINVAL; return -EINVAL;
if (proto != htons(ETH_P_8021Q)) if (proto != htons(ETH_P_8021Q))
...@@ -1652,7 +1652,8 @@ static void hclgevf_service_timer(struct timer_list *t) ...@@ -1652,7 +1652,8 @@ static void hclgevf_service_timer(struct timer_list *t)
{ {
struct hclgevf_dev *hdev = from_timer(hdev, t, service_timer); struct hclgevf_dev *hdev = from_timer(hdev, t, service_timer);
mod_timer(&hdev->service_timer, jiffies + 5 * HZ); mod_timer(&hdev->service_timer, jiffies +
HCLGEVF_GENERAL_TASK_INTERVAL * HZ);
hdev->stats_timer++; hdev->stats_timer++;
hclgevf_task_schedule(hdev); hclgevf_task_schedule(hdev);
...@@ -1752,7 +1753,8 @@ static void hclgevf_keep_alive_timer(struct timer_list *t) ...@@ -1752,7 +1753,8 @@ static void hclgevf_keep_alive_timer(struct timer_list *t)
struct hclgevf_dev *hdev = from_timer(hdev, t, keep_alive_timer); struct hclgevf_dev *hdev = from_timer(hdev, t, keep_alive_timer);
schedule_work(&hdev->keep_alive_task); schedule_work(&hdev->keep_alive_task);
mod_timer(&hdev->keep_alive_timer, jiffies + 2 * HZ); mod_timer(&hdev->keep_alive_timer, jiffies +
HCLGEVF_KEEP_ALIVE_TASK_INTERVAL * HZ);
} }
static void hclgevf_keep_alive_task(struct work_struct *work) static void hclgevf_keep_alive_task(struct work_struct *work)
...@@ -2084,7 +2086,8 @@ static int hclgevf_client_start(struct hnae3_handle *handle) ...@@ -2084,7 +2086,8 @@ static int hclgevf_client_start(struct hnae3_handle *handle)
if (ret) if (ret)
return ret; return ret;
mod_timer(&hdev->keep_alive_timer, jiffies + 2 * HZ); mod_timer(&hdev->keep_alive_timer, jiffies +
HCLGEVF_KEEP_ALIVE_TASK_INTERVAL * HZ);
return 0; return 0;
} }
......
...@@ -12,9 +12,12 @@ ...@@ -12,9 +12,12 @@
#define HCLGEVF_MOD_VERSION "1.0" #define HCLGEVF_MOD_VERSION "1.0"
#define HCLGEVF_DRIVER_NAME "hclgevf" #define HCLGEVF_DRIVER_NAME "hclgevf"
#define HCLGEVF_MAX_VLAN_ID 4095
#define HCLGEVF_MISC_VECTOR_NUM 0 #define HCLGEVF_MISC_VECTOR_NUM 0
#define HCLGEVF_INVALID_VPORT 0xffff #define HCLGEVF_INVALID_VPORT 0xffff
#define HCLGEVF_GENERAL_TASK_INTERVAL 5
#define HCLGEVF_KEEP_ALIVE_TASK_INTERVAL 2
/* This number in actual depends upon the total number of VFs /* This number in actual depends upon the total number of VFs
* created by physical function. But the maximum number of * created by physical function. But the maximum number of
......
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