Commit 45e92b7e authored by Peng Li's avatar Peng Li Committed by David S. Miller
Browse files

net: hns3: add calling roce callback function when link status change



This patch adds calling roce callback function when link status
change.

Signed-off-by: default avatarWei Hu (Xavier) <xavier.huwei@huawei.com>
Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 16e82920
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -2105,7 +2105,9 @@ static int hclge_get_mac_phy_link(struct hclge_dev *hdev)


static void hclge_update_link_status(struct hclge_dev *hdev)
static void hclge_update_link_status(struct hclge_dev *hdev)
{
{
	struct hnae3_client *rclient = hdev->roce_client;
	struct hnae3_client *client = hdev->nic_client;
	struct hnae3_client *client = hdev->nic_client;
	struct hnae3_handle *rhandle;
	struct hnae3_handle *handle;
	struct hnae3_handle *handle;
	int state;
	int state;
	int i;
	int i;
@@ -2117,6 +2119,10 @@ static void hclge_update_link_status(struct hclge_dev *hdev)
		for (i = 0; i < hdev->num_vmdq_vport + 1; i++) {
		for (i = 0; i < hdev->num_vmdq_vport + 1; i++) {
			handle = &hdev->vport[i].nic;
			handle = &hdev->vport[i].nic;
			client->ops->link_status_change(handle, state);
			client->ops->link_status_change(handle, state);
			rhandle = &hdev->vport[i].roce;
			if (rclient && rclient->ops->link_status_change)
				rclient->ops->link_status_change(rhandle,
								 state);
		}
		}
		hdev->hw.mac.link = state;
		hdev->hw.mac.link = state;
	}
	}
+5 −0
Original line number Original line Diff line number Diff line
@@ -349,16 +349,21 @@ static void hclgevf_request_link_info(struct hclgevf_dev *hdev)


void hclgevf_update_link_status(struct hclgevf_dev *hdev, int link_state)
void hclgevf_update_link_status(struct hclgevf_dev *hdev, int link_state)
{
{
	struct hnae3_handle *rhandle = &hdev->roce;
	struct hnae3_handle *handle = &hdev->nic;
	struct hnae3_handle *handle = &hdev->nic;
	struct hnae3_client *rclient;
	struct hnae3_client *client;
	struct hnae3_client *client;


	client = handle->client;
	client = handle->client;
	rclient = hdev->roce_client;


	link_state =
	link_state =
		test_bit(HCLGEVF_STATE_DOWN, &hdev->state) ? 0 : link_state;
		test_bit(HCLGEVF_STATE_DOWN, &hdev->state) ? 0 : link_state;


	if (link_state != hdev->hw.mac.link) {
	if (link_state != hdev->hw.mac.link) {
		client->ops->link_status_change(handle, !!link_state);
		client->ops->link_status_change(handle, !!link_state);
		if (rclient && rclient->ops->link_status_change)
			rclient->ops->link_status_change(rhandle, !!link_state);
		hdev->hw.mac.link = link_state;
		hdev->hw.mac.link = link_state;
	}
	}
}
}