mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 12:03:54 +02:00
net: hns3: some modifications to simplify and optimize code
This patch deletes some redundant code and refactors some bloated functions. Signed-off-by: Yufeng Mo <moyufeng@huawei.com> Signed-off-by: Weihang Li <liweihang@hisilicon.com> Signed-off-by: Yonglong Liu <liuyonglong@huawei.com> Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3caf772bce
commit
63cbf7a941
|
|
@ -436,7 +436,7 @@ static void hns3_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
|
|||
switch (stringset) {
|
||||
case ETH_SS_STATS:
|
||||
buff = hns3_get_strings_tqps(h, buff);
|
||||
h->ae_algo->ops->get_strings(h, stringset, (u8 *)buff);
|
||||
ops->get_strings(h, stringset, (u8 *)buff);
|
||||
break;
|
||||
case ETH_SS_TEST:
|
||||
ops->get_strings(h, stringset, data);
|
||||
|
|
@ -511,6 +511,11 @@ static void hns3_get_drvinfo(struct net_device *netdev,
|
|||
struct hns3_nic_priv *priv = netdev_priv(netdev);
|
||||
struct hnae3_handle *h = priv->ae_handle;
|
||||
|
||||
if (!h->ae_algo->ops->get_fw_version) {
|
||||
netdev_err(netdev, "could not get fw version!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
strncpy(drvinfo->version, hns3_driver_version,
|
||||
sizeof(drvinfo->version));
|
||||
drvinfo->version[sizeof(drvinfo->version) - 1] = '\0';
|
||||
|
|
@ -531,7 +536,7 @@ static u32 hns3_get_link(struct net_device *netdev)
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (h->ae_algo && h->ae_algo->ops && h->ae_algo->ops->get_status)
|
||||
if (h->ae_algo->ops->get_status)
|
||||
return h->ae_algo->ops->get_status(h);
|
||||
else
|
||||
return 0;
|
||||
|
|
@ -561,7 +566,7 @@ static void hns3_get_pauseparam(struct net_device *netdev,
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (h->ae_algo && h->ae_algo->ops && h->ae_algo->ops->get_pauseparam)
|
||||
if (h->ae_algo->ops->get_pauseparam)
|
||||
h->ae_algo->ops->get_pauseparam(h, ¶m->autoneg,
|
||||
¶m->rx_pause, ¶m->tx_pause);
|
||||
}
|
||||
|
|
@ -611,9 +616,6 @@ static int hns3_get_link_ksettings(struct net_device *netdev,
|
|||
u8 media_type;
|
||||
u8 link_stat;
|
||||
|
||||
if (!h->ae_algo || !h->ae_algo->ops)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
ops = h->ae_algo->ops;
|
||||
if (ops->get_media_type)
|
||||
ops->get_media_type(h, &media_type, &module_type);
|
||||
|
|
@ -741,8 +743,7 @@ static u32 hns3_get_rss_key_size(struct net_device *netdev)
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (!h->ae_algo || !h->ae_algo->ops ||
|
||||
!h->ae_algo->ops->get_rss_key_size)
|
||||
if (!h->ae_algo->ops->get_rss_key_size)
|
||||
return 0;
|
||||
|
||||
return h->ae_algo->ops->get_rss_key_size(h);
|
||||
|
|
@ -752,8 +753,7 @@ static u32 hns3_get_rss_indir_size(struct net_device *netdev)
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (!h->ae_algo || !h->ae_algo->ops ||
|
||||
!h->ae_algo->ops->get_rss_indir_size)
|
||||
if (!h->ae_algo->ops->get_rss_indir_size)
|
||||
return 0;
|
||||
|
||||
return h->ae_algo->ops->get_rss_indir_size(h);
|
||||
|
|
@ -764,7 +764,7 @@ static int hns3_get_rss(struct net_device *netdev, u32 *indir, u8 *key,
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (!h->ae_algo || !h->ae_algo->ops || !h->ae_algo->ops->get_rss)
|
||||
if (!h->ae_algo->ops->get_rss)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return h->ae_algo->ops->get_rss(h, indir, key, hfunc);
|
||||
|
|
@ -775,7 +775,7 @@ static int hns3_set_rss(struct net_device *netdev, const u32 *indir,
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (!h->ae_algo || !h->ae_algo->ops || !h->ae_algo->ops->set_rss)
|
||||
if (!h->ae_algo->ops->set_rss)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if ((h->pdev->revision == 0x20 &&
|
||||
|
|
@ -800,9 +800,6 @@ static int hns3_get_rxnfc(struct net_device *netdev,
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (!h->ae_algo || !h->ae_algo->ops)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
switch (cmd->cmd) {
|
||||
case ETHTOOL_GRXRINGS:
|
||||
cmd->data = h->kinfo.num_tqps;
|
||||
|
|
@ -916,9 +913,6 @@ static int hns3_set_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd)
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (!h->ae_algo || !h->ae_algo->ops)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
switch (cmd->cmd) {
|
||||
case ETHTOOL_SRXFH:
|
||||
if (h->ae_algo->ops->set_rss_tuple)
|
||||
|
|
@ -1194,7 +1188,7 @@ static int hns3_set_phys_id(struct net_device *netdev,
|
|||
{
|
||||
struct hnae3_handle *h = hns3_get_handle(netdev);
|
||||
|
||||
if (!h->ae_algo || !h->ae_algo->ops || !h->ae_algo->ops->set_led_id)
|
||||
if (!h->ae_algo->ops->set_led_id)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return h->ae_algo->ops->set_led_id(h, state);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#define HCLGE_BUF_MUL_BY 2
|
||||
#define HCLGE_BUF_DIV_BY 2
|
||||
|
||||
#define HCLGE_RESET_MAX_FAIL_CNT 5
|
||||
|
||||
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_reset_ae_dev(struct hnae3_ae_dev *ae_dev);
|
||||
|
|
@ -2169,7 +2171,8 @@ static int hclge_cfg_mac_speed_dup_hw(struct hclge_dev *hdev, int speed,
|
|||
|
||||
hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_CONFIG_SPEED_DUP, false);
|
||||
|
||||
hnae3_set_bit(req->speed_dup, HCLGE_CFG_DUPLEX_B, !!duplex);
|
||||
if (duplex)
|
||||
hnae3_set_bit(req->speed_dup, HCLGE_CFG_DUPLEX_B, 1);
|
||||
|
||||
switch (speed) {
|
||||
case HCLGE_MAC_SPEED_10M:
|
||||
|
|
@ -2531,7 +2534,7 @@ static void hclge_update_port_capability(struct hclge_mac *mac)
|
|||
|
||||
static int hclge_get_sfp_speed(struct hclge_dev *hdev, u32 *speed)
|
||||
{
|
||||
struct hclge_sfp_info_cmd *resp = NULL;
|
||||
struct hclge_sfp_info_cmd *resp;
|
||||
struct hclge_desc desc;
|
||||
int ret;
|
||||
|
||||
|
|
@ -3271,6 +3274,25 @@ static int hclge_reset_prepare_up(struct hclge_dev *hdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int hclge_reset_stack(struct hclge_dev *hdev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = hclge_notify_client(hdev, HNAE3_UNINIT_CLIENT);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_reset_ae_dev(hdev->ae_dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_notify_client(hdev, HNAE3_INIT_CLIENT);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return hclge_notify_client(hdev, HNAE3_RESTORE_CLIENT);
|
||||
}
|
||||
|
||||
static void hclge_reset(struct hclge_dev *hdev)
|
||||
{
|
||||
struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);
|
||||
|
|
@ -3314,19 +3336,8 @@ static void hclge_reset(struct hclge_dev *hdev)
|
|||
goto err_reset;
|
||||
|
||||
rtnl_lock();
|
||||
ret = hclge_notify_client(hdev, HNAE3_UNINIT_CLIENT);
|
||||
if (ret)
|
||||
goto err_reset_lock;
|
||||
|
||||
ret = hclge_reset_ae_dev(hdev->ae_dev);
|
||||
if (ret)
|
||||
goto err_reset_lock;
|
||||
|
||||
ret = hclge_notify_client(hdev, HNAE3_INIT_CLIENT);
|
||||
if (ret)
|
||||
goto err_reset_lock;
|
||||
|
||||
ret = hclge_notify_client(hdev, HNAE3_RESTORE_CLIENT);
|
||||
ret = hclge_reset_stack(hdev);
|
||||
if (ret)
|
||||
goto err_reset_lock;
|
||||
|
||||
|
|
@ -3336,16 +3347,23 @@ static void hclge_reset(struct hclge_dev *hdev)
|
|||
if (ret)
|
||||
goto err_reset_lock;
|
||||
|
||||
rtnl_unlock();
|
||||
|
||||
ret = hclge_notify_roce_client(hdev, HNAE3_INIT_CLIENT);
|
||||
/* ignore RoCE notify error if it fails HCLGE_RESET_MAX_FAIL_CNT - 1
|
||||
* times
|
||||
*/
|
||||
if (ret && hdev->reset_fail_cnt < HCLGE_RESET_MAX_FAIL_CNT - 1)
|
||||
goto err_reset;
|
||||
|
||||
rtnl_lock();
|
||||
|
||||
ret = hclge_notify_client(hdev, HNAE3_UP_CLIENT);
|
||||
if (ret)
|
||||
goto err_reset_lock;
|
||||
|
||||
rtnl_unlock();
|
||||
|
||||
ret = hclge_notify_roce_client(hdev, HNAE3_INIT_CLIENT);
|
||||
if (ret)
|
||||
goto err_reset;
|
||||
|
||||
ret = hclge_notify_roce_client(hdev, HNAE3_UP_CLIENT);
|
||||
if (ret)
|
||||
goto err_reset;
|
||||
|
|
@ -6440,7 +6458,9 @@ static int hclge_set_umv_space(struct hclge_dev *hdev, u16 space_size,
|
|||
|
||||
req = (struct hclge_umv_spc_alc_cmd *)desc.data;
|
||||
hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_MAC_VLAN_ALLOCATE, false);
|
||||
hnae3_set_bit(req->allocate, HCLGE_UMV_SPC_ALC_B, !is_alloc);
|
||||
if (!is_alloc)
|
||||
hnae3_set_bit(req->allocate, HCLGE_UMV_SPC_ALC_B, 1);
|
||||
|
||||
req->space_size = cpu_to_le32(space_size);
|
||||
|
||||
ret = hclge_cmd_send(&hdev->hw, &desc, 1);
|
||||
|
|
@ -6640,18 +6660,16 @@ int hclge_add_mc_addr_common(struct hclge_vport *vport,
|
|||
hnae3_set_bit(req.entry_type, HCLGE_MAC_VLAN_BIT0_EN_B, 0);
|
||||
hclge_prepare_mac_addr(&req, addr, true);
|
||||
status = hclge_lookup_mac_vlan_tbl(vport, &req, desc, true);
|
||||
if (!status) {
|
||||
/* This mac addr exist, update VFID for it */
|
||||
hclge_update_desc_vfid(desc, vport->vport_id, false);
|
||||
status = hclge_add_mac_vlan_tbl(vport, &req, desc);
|
||||
} else {
|
||||
if (status) {
|
||||
/* This mac addr do not exist, add new entry for it */
|
||||
memset(desc[0].data, 0, sizeof(desc[0].data));
|
||||
memset(desc[1].data, 0, sizeof(desc[0].data));
|
||||
memset(desc[2].data, 0, sizeof(desc[0].data));
|
||||
hclge_update_desc_vfid(desc, vport->vport_id, false);
|
||||
status = hclge_add_mac_vlan_tbl(vport, &req, desc);
|
||||
}
|
||||
status = hclge_update_desc_vfid(desc, vport->vport_id, false);
|
||||
if (status)
|
||||
return status;
|
||||
status = hclge_add_mac_vlan_tbl(vport, &req, desc);
|
||||
|
||||
if (status == -ENOSPC)
|
||||
dev_err(&hdev->pdev->dev, "mc mac vlan table is full\n");
|
||||
|
|
@ -6689,7 +6707,9 @@ int hclge_rm_mc_addr_common(struct hclge_vport *vport,
|
|||
status = hclge_lookup_mac_vlan_tbl(vport, &req, desc, true);
|
||||
if (!status) {
|
||||
/* This mac addr exist, remove this handle's VFID for it */
|
||||
hclge_update_desc_vfid(desc, vport->vport_id, true);
|
||||
status = hclge_update_desc_vfid(desc, vport->vport_id, true);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
if (hclge_is_all_function_id_zero(desc))
|
||||
/* All the vfid is zero, so need to delete this entry */
|
||||
|
|
@ -7762,7 +7782,7 @@ static int hclge_set_mtu(struct hnae3_handle *handle, int new_mtu)
|
|||
int hclge_set_vport_mtu(struct hclge_vport *vport, int new_mtu)
|
||||
{
|
||||
struct hclge_dev *hdev = vport->back;
|
||||
int i, max_frm_size, ret = 0;
|
||||
int i, max_frm_size, ret;
|
||||
|
||||
max_frm_size = new_mtu + ETH_HLEN + ETH_FCS_LEN + 2 * VLAN_HLEN;
|
||||
if (max_frm_size < HCLGE_MAC_MIN_FRAME ||
|
||||
|
|
@ -7873,7 +7893,7 @@ int hclge_reset_tqp(struct hnae3_handle *handle, u16 queue_id)
|
|||
int reset_try_times = 0;
|
||||
int reset_status;
|
||||
u16 queue_gid;
|
||||
int ret = 0;
|
||||
int ret;
|
||||
|
||||
queue_gid = hclge_covert_handle_qid_global(handle, queue_id);
|
||||
|
||||
|
|
@ -7890,7 +7910,6 @@ int hclge_reset_tqp(struct hnae3_handle *handle, u16 queue_id)
|
|||
return ret;
|
||||
}
|
||||
|
||||
reset_try_times = 0;
|
||||
while (reset_try_times++ < HCLGE_TQP_RESET_TRY_TIMES) {
|
||||
/* Wait for tqp hw reset */
|
||||
msleep(20);
|
||||
|
|
@ -7929,7 +7948,6 @@ void hclge_reset_vf_queue(struct hclge_vport *vport, u16 queue_id)
|
|||
return;
|
||||
}
|
||||
|
||||
reset_try_times = 0;
|
||||
while (reset_try_times++ < HCLGE_TQP_RESET_TRY_TIMES) {
|
||||
/* Wait for tqp hw reset */
|
||||
msleep(20);
|
||||
|
|
@ -7999,7 +8017,7 @@ int hclge_cfg_flowctrl(struct hclge_dev *hdev)
|
|||
{
|
||||
struct phy_device *phydev = hdev->hw.mac.phydev;
|
||||
u16 remote_advertising = 0;
|
||||
u16 local_advertising = 0;
|
||||
u16 local_advertising;
|
||||
u32 rx_pause, tx_pause;
|
||||
u8 flowctl;
|
||||
|
||||
|
|
|
|||
|
|
@ -369,7 +369,7 @@ static int hclge_get_vf_tcinfo(struct hclge_vport *vport,
|
|||
vf_tc_map |= BIT(i);
|
||||
|
||||
ret = hclge_gen_resp_to_vf(vport, mbx_req, 0, &vf_tc_map,
|
||||
sizeof(u8));
|
||||
sizeof(vf_tc_map));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,14 +123,13 @@ static int hclge_pfc_stats_get(struct hclge_dev *hdev,
|
|||
opcode == HCLGE_OPC_QUERY_PFC_TX_PKT_CNT))
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < HCLGE_TM_PFC_PKT_GET_CMD_NUM; i++) {
|
||||
for (i = 0; i < HCLGE_TM_PFC_PKT_GET_CMD_NUM - 1; i++) {
|
||||
hclge_cmd_setup_basic_desc(&desc[i], opcode, true);
|
||||
if (i != (HCLGE_TM_PFC_PKT_GET_CMD_NUM - 1))
|
||||
desc[i].flag |= cpu_to_le16(HCLGE_CMD_FLAG_NEXT);
|
||||
else
|
||||
desc[i].flag &= ~cpu_to_le16(HCLGE_CMD_FLAG_NEXT);
|
||||
desc[i].flag |= cpu_to_le16(HCLGE_CMD_FLAG_NEXT);
|
||||
}
|
||||
|
||||
hclge_cmd_setup_basic_desc(&desc[i], opcode, true);
|
||||
|
||||
ret = hclge_cmd_send(&hdev->hw, desc, HCLGE_TM_PFC_PKT_GET_CMD_NUM);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
@ -365,14 +364,27 @@ static int hclge_tm_qs_weight_cfg(struct hclge_dev *hdev, u16 qs_id,
|
|||
return hclge_cmd_send(&hdev->hw, &desc, 1);
|
||||
}
|
||||
|
||||
static u32 hclge_tm_get_shapping_para(u8 ir_b, u8 ir_u, u8 ir_s,
|
||||
u8 bs_b, u8 bs_s)
|
||||
{
|
||||
u32 shapping_para = 0;
|
||||
|
||||
hclge_tm_set_field(shapping_para, IR_B, ir_b);
|
||||
hclge_tm_set_field(shapping_para, IR_U, ir_u);
|
||||
hclge_tm_set_field(shapping_para, IR_S, ir_s);
|
||||
hclge_tm_set_field(shapping_para, BS_B, bs_b);
|
||||
hclge_tm_set_field(shapping_para, BS_S, bs_s);
|
||||
|
||||
return shapping_para;
|
||||
}
|
||||
|
||||
static int hclge_tm_pg_shapping_cfg(struct hclge_dev *hdev,
|
||||
enum hclge_shap_bucket bucket, u8 pg_id,
|
||||
u8 ir_b, u8 ir_u, u8 ir_s, u8 bs_b, u8 bs_s)
|
||||
u32 shapping_para)
|
||||
{
|
||||
struct hclge_pg_shapping_cmd *shap_cfg_cmd;
|
||||
enum hclge_opcode_type opcode;
|
||||
struct hclge_desc desc;
|
||||
u32 shapping_para = 0;
|
||||
|
||||
opcode = bucket ? HCLGE_OPC_TM_PG_P_SHAPPING :
|
||||
HCLGE_OPC_TM_PG_C_SHAPPING;
|
||||
|
|
@ -382,12 +394,6 @@ static int hclge_tm_pg_shapping_cfg(struct hclge_dev *hdev,
|
|||
|
||||
shap_cfg_cmd->pg_id = pg_id;
|
||||
|
||||
hclge_tm_set_field(shapping_para, IR_B, ir_b);
|
||||
hclge_tm_set_field(shapping_para, IR_U, ir_u);
|
||||
hclge_tm_set_field(shapping_para, IR_S, ir_s);
|
||||
hclge_tm_set_field(shapping_para, BS_B, bs_b);
|
||||
hclge_tm_set_field(shapping_para, BS_S, bs_s);
|
||||
|
||||
shap_cfg_cmd->pg_shapping_para = cpu_to_le32(shapping_para);
|
||||
|
||||
return hclge_cmd_send(&hdev->hw, &desc, 1);
|
||||
|
|
@ -410,11 +416,9 @@ static int hclge_tm_port_shaper_cfg(struct hclge_dev *hdev)
|
|||
hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_TM_PORT_SHAPPING, false);
|
||||
shap_cfg_cmd = (struct hclge_port_shapping_cmd *)desc.data;
|
||||
|
||||
hclge_tm_set_field(shapping_para, IR_B, ir_b);
|
||||
hclge_tm_set_field(shapping_para, IR_U, ir_u);
|
||||
hclge_tm_set_field(shapping_para, IR_S, ir_s);
|
||||
hclge_tm_set_field(shapping_para, BS_B, HCLGE_SHAPER_BS_U_DEF);
|
||||
hclge_tm_set_field(shapping_para, BS_S, HCLGE_SHAPER_BS_S_DEF);
|
||||
shapping_para = hclge_tm_get_shapping_para(ir_b, ir_u, ir_s,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
|
||||
shap_cfg_cmd->port_shapping_para = cpu_to_le32(shapping_para);
|
||||
|
||||
|
|
@ -423,13 +427,11 @@ static int hclge_tm_port_shaper_cfg(struct hclge_dev *hdev)
|
|||
|
||||
static int hclge_tm_pri_shapping_cfg(struct hclge_dev *hdev,
|
||||
enum hclge_shap_bucket bucket, u8 pri_id,
|
||||
u8 ir_b, u8 ir_u, u8 ir_s,
|
||||
u8 bs_b, u8 bs_s)
|
||||
u32 shapping_para)
|
||||
{
|
||||
struct hclge_pri_shapping_cmd *shap_cfg_cmd;
|
||||
enum hclge_opcode_type opcode;
|
||||
struct hclge_desc desc;
|
||||
u32 shapping_para = 0;
|
||||
|
||||
opcode = bucket ? HCLGE_OPC_TM_PRI_P_SHAPPING :
|
||||
HCLGE_OPC_TM_PRI_C_SHAPPING;
|
||||
|
|
@ -440,12 +442,6 @@ static int hclge_tm_pri_shapping_cfg(struct hclge_dev *hdev,
|
|||
|
||||
shap_cfg_cmd->pri_id = pri_id;
|
||||
|
||||
hclge_tm_set_field(shapping_para, IR_B, ir_b);
|
||||
hclge_tm_set_field(shapping_para, IR_U, ir_u);
|
||||
hclge_tm_set_field(shapping_para, IR_S, ir_s);
|
||||
hclge_tm_set_field(shapping_para, BS_B, bs_b);
|
||||
hclge_tm_set_field(shapping_para, BS_S, bs_s);
|
||||
|
||||
shap_cfg_cmd->pri_shapping_para = cpu_to_le32(shapping_para);
|
||||
|
||||
return hclge_cmd_send(&hdev->hw, &desc, 1);
|
||||
|
|
@ -688,6 +684,7 @@ static int hclge_tm_pg_to_pri_map(struct hclge_dev *hdev)
|
|||
static int hclge_tm_pg_shaper_cfg(struct hclge_dev *hdev)
|
||||
{
|
||||
u8 ir_u, ir_b, ir_s;
|
||||
u32 shaper_para;
|
||||
int ret;
|
||||
u32 i;
|
||||
|
||||
|
|
@ -705,18 +702,21 @@ static int hclge_tm_pg_shaper_cfg(struct hclge_dev *hdev)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
shaper_para = hclge_tm_get_shapping_para(0, 0, 0,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
ret = hclge_tm_pg_shapping_cfg(hdev,
|
||||
HCLGE_TM_SHAP_C_BUCKET, i,
|
||||
0, 0, 0, HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
shaper_para);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
shaper_para = hclge_tm_get_shapping_para(ir_b, ir_u, ir_s,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
ret = hclge_tm_pg_shapping_cfg(hdev,
|
||||
HCLGE_TM_SHAP_P_BUCKET, i,
|
||||
ir_b, ir_u, ir_s,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
shaper_para);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -817,6 +817,7 @@ static int hclge_tm_pri_q_qs_cfg(struct hclge_dev *hdev)
|
|||
static int hclge_tm_pri_tc_base_shaper_cfg(struct hclge_dev *hdev)
|
||||
{
|
||||
u8 ir_u, ir_b, ir_s;
|
||||
u32 shaper_para;
|
||||
int ret;
|
||||
u32 i;
|
||||
|
||||
|
|
@ -828,17 +829,19 @@ static int hclge_tm_pri_tc_base_shaper_cfg(struct hclge_dev *hdev)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_tm_pri_shapping_cfg(
|
||||
hdev, HCLGE_TM_SHAP_C_BUCKET, i,
|
||||
0, 0, 0, HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
shaper_para = hclge_tm_get_shapping_para(0, 0, 0,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
ret = hclge_tm_pri_shapping_cfg(hdev, HCLGE_TM_SHAP_C_BUCKET, i,
|
||||
shaper_para);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_tm_pri_shapping_cfg(
|
||||
hdev, HCLGE_TM_SHAP_P_BUCKET, i,
|
||||
ir_b, ir_u, ir_s, HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
shaper_para = hclge_tm_get_shapping_para(ir_b, ir_u, ir_s,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
ret = hclge_tm_pri_shapping_cfg(hdev, HCLGE_TM_SHAP_P_BUCKET, i,
|
||||
shaper_para);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -850,6 +853,7 @@ static int hclge_tm_pri_vnet_base_shaper_pri_cfg(struct hclge_vport *vport)
|
|||
{
|
||||
struct hclge_dev *hdev = vport->back;
|
||||
u8 ir_u, ir_b, ir_s;
|
||||
u32 shaper_para;
|
||||
int ret;
|
||||
|
||||
ret = hclge_shaper_para_calc(vport->bw_limit, HCLGE_SHAPER_LVL_VF,
|
||||
|
|
@ -857,18 +861,19 @@ static int hclge_tm_pri_vnet_base_shaper_pri_cfg(struct hclge_vport *vport)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
shaper_para = hclge_tm_get_shapping_para(0, 0, 0,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
ret = hclge_tm_pri_shapping_cfg(hdev, HCLGE_TM_SHAP_C_BUCKET,
|
||||
vport->vport_id,
|
||||
0, 0, 0, HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
vport->vport_id, shaper_para);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
shaper_para = hclge_tm_get_shapping_para(ir_b, ir_u, ir_s,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
ret = hclge_tm_pri_shapping_cfg(hdev, HCLGE_TM_SHAP_P_BUCKET,
|
||||
vport->vport_id,
|
||||
ir_b, ir_u, ir_s,
|
||||
HCLGE_SHAPER_BS_U_DEF,
|
||||
HCLGE_SHAPER_BS_S_DEF);
|
||||
vport->vport_id, shaper_para);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ static int hclgevf_get_tc_info(struct hclgevf_dev *hdev)
|
|||
int status;
|
||||
|
||||
status = hclgevf_send_mbx_msg(hdev, HCLGE_MBX_GET_TCINFO, 0, NULL, 0,
|
||||
true, &resp_msg, sizeof(u8));
|
||||
true, &resp_msg, sizeof(resp_msg));
|
||||
if (status) {
|
||||
dev_err(&hdev->pdev->dev,
|
||||
"VF request to get TC info from PF failed %d",
|
||||
|
|
@ -321,7 +321,8 @@ static u16 hclgevf_get_qid_global(struct hnae3_handle *handle, u16 queue_id)
|
|||
memcpy(&msg_data[0], &queue_id, sizeof(queue_id));
|
||||
|
||||
ret = hclgevf_send_mbx_msg(hdev, HCLGE_MBX_GET_QID_IN_PF, 0, msg_data,
|
||||
2, true, resp_data, 2);
|
||||
sizeof(msg_data), true, resp_data,
|
||||
sizeof(resp_data));
|
||||
if (!ret)
|
||||
qid_in_pf = *(u16 *)resp_data;
|
||||
|
||||
|
|
@ -418,7 +419,7 @@ static void hclgevf_request_link_info(struct hclgevf_dev *hdev)
|
|||
u8 resp_msg;
|
||||
|
||||
status = hclgevf_send_mbx_msg(hdev, HCLGE_MBX_GET_LINK_STATUS, 0, NULL,
|
||||
0, false, &resp_msg, sizeof(u8));
|
||||
0, false, &resp_msg, sizeof(resp_msg));
|
||||
if (status)
|
||||
dev_err(&hdev->pdev->dev,
|
||||
"VF failed to fetch link status(%d) from PF", status);
|
||||
|
|
@ -453,11 +454,13 @@ static void hclgevf_update_link_mode(struct hclgevf_dev *hdev)
|
|||
u8 resp_msg;
|
||||
|
||||
send_msg = HCLGEVF_ADVERTISING;
|
||||
hclgevf_send_mbx_msg(hdev, HCLGE_MBX_GET_LINK_MODE, 0, &send_msg,
|
||||
sizeof(u8), false, &resp_msg, sizeof(u8));
|
||||
hclgevf_send_mbx_msg(hdev, HCLGE_MBX_GET_LINK_MODE, 0,
|
||||
&send_msg, sizeof(send_msg), false,
|
||||
&resp_msg, sizeof(resp_msg));
|
||||
send_msg = HCLGEVF_SUPPORTED;
|
||||
hclgevf_send_mbx_msg(hdev, HCLGE_MBX_GET_LINK_MODE, 0, &send_msg,
|
||||
sizeof(u8), false, &resp_msg, sizeof(u8));
|
||||
hclgevf_send_mbx_msg(hdev, HCLGE_MBX_GET_LINK_MODE, 0,
|
||||
&send_msg, sizeof(send_msg), false,
|
||||
&resp_msg, sizeof(resp_msg));
|
||||
}
|
||||
|
||||
static int hclgevf_set_handle_info(struct hclgevf_dev *hdev)
|
||||
|
|
@ -1186,7 +1189,7 @@ static int hclgevf_set_mac_addr(struct hnae3_handle *handle, void *p,
|
|||
HCLGE_MBX_MAC_VLAN_UC_MODIFY;
|
||||
|
||||
status = hclgevf_send_mbx_msg(hdev, HCLGE_MBX_SET_UNICAST,
|
||||
subcode, msg_data, ETH_ALEN * 2,
|
||||
subcode, msg_data, sizeof(msg_data),
|
||||
true, NULL, 0);
|
||||
if (!status)
|
||||
ether_addr_copy(hdev->hw.mac.mac_addr, new_mac_addr);
|
||||
|
|
@ -1273,7 +1276,7 @@ static int hclgevf_reset_tqp(struct hnae3_handle *handle, u16 queue_id)
|
|||
u8 msg_data[2];
|
||||
int ret;
|
||||
|
||||
memcpy(&msg_data[0], &queue_id, sizeof(queue_id));
|
||||
memcpy(msg_data, &queue_id, sizeof(queue_id));
|
||||
|
||||
/* disable vf queue before send queue reset msg to PF */
|
||||
ret = hclgevf_tqp_enable(hdev, queue_id, 0, false);
|
||||
|
|
@ -1281,7 +1284,7 @@ static int hclgevf_reset_tqp(struct hnae3_handle *handle, u16 queue_id)
|
|||
return ret;
|
||||
|
||||
return hclgevf_send_mbx_msg(hdev, HCLGE_MBX_QUEUE_RESET, 0, msg_data,
|
||||
2, true, NULL, 0);
|
||||
sizeof(msg_data), true, NULL, 0);
|
||||
}
|
||||
|
||||
static int hclgevf_set_mtu(struct hnae3_handle *handle, int new_mtu)
|
||||
|
|
@ -1768,7 +1771,7 @@ static void hclgevf_keep_alive_task(struct work_struct *work)
|
|||
return;
|
||||
|
||||
ret = hclgevf_send_mbx_msg(hdev, HCLGE_MBX_KEEP_ALIVE, 0, NULL,
|
||||
0, false, &respmsg, sizeof(u8));
|
||||
0, false, &respmsg, sizeof(respmsg));
|
||||
if (ret)
|
||||
dev_err(&hdev->pdev->dev,
|
||||
"VF sends keep alive cmd failed(=%d)\n", ret);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user