mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 15:19:51 +00:00
net: hns3: reconstruct function hclge_ets_validate()
This patch reconstructs function hclge_ets_validate() to reduce the code cycle complexity and make code more concise. Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4c8dab1c70
commit
161ad669e6
@ -104,26 +104,30 @@ static int hclge_dcb_common_validate(struct hclge_dev *hdev, u8 num_tc,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int hclge_ets_validate(struct hclge_dev *hdev, struct ieee_ets *ets,
|
||||
u8 *tc, bool *changed)
|
||||
static u8 hclge_ets_tc_changed(struct hclge_dev *hdev, struct ieee_ets *ets,
|
||||
bool *changed)
|
||||
{
|
||||
bool has_ets_tc = false;
|
||||
u32 total_ets_bw = 0;
|
||||
u8 max_tc = 0;
|
||||
int ret;
|
||||
u8 max_tc_id = 0;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < HNAE3_MAX_USER_PRIO; i++) {
|
||||
if (ets->prio_tc[i] != hdev->tm_info.prio_tc[i])
|
||||
*changed = true;
|
||||
|
||||
if (ets->prio_tc[i] > max_tc)
|
||||
max_tc = ets->prio_tc[i];
|
||||
if (ets->prio_tc[i] > max_tc_id)
|
||||
max_tc_id = ets->prio_tc[i];
|
||||
}
|
||||
|
||||
ret = hclge_dcb_common_validate(hdev, max_tc + 1, ets->prio_tc);
|
||||
if (ret)
|
||||
return ret;
|
||||
/* return max tc number, max tc id need to plus 1 */
|
||||
return max_tc_id + 1;
|
||||
}
|
||||
|
||||
static int hclge_ets_sch_mode_validate(struct hclge_dev *hdev,
|
||||
struct ieee_ets *ets, bool *changed)
|
||||
{
|
||||
bool has_ets_tc = false;
|
||||
u32 total_ets_bw = 0;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < hdev->tc_max; i++) {
|
||||
switch (ets->tc_tsa[i]) {
|
||||
@ -148,7 +152,26 @@ static int hclge_ets_validate(struct hclge_dev *hdev, struct ieee_ets *ets,
|
||||
if (has_ets_tc && total_ets_bw != BW_PERCENT)
|
||||
return -EINVAL;
|
||||
|
||||
*tc = max_tc + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int hclge_ets_validate(struct hclge_dev *hdev, struct ieee_ets *ets,
|
||||
u8 *tc, bool *changed)
|
||||
{
|
||||
u8 tc_num;
|
||||
int ret;
|
||||
|
||||
tc_num = hclge_ets_tc_changed(hdev, ets, changed);
|
||||
|
||||
ret = hclge_dcb_common_validate(hdev, tc_num, ets->prio_tc);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_ets_sch_mode_validate(hdev, ets, changed);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
*tc = tc_num;
|
||||
if (*tc != hdev->tm_info.num_tc)
|
||||
*changed = true;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user