[V2,2/2] net/hns3: support backplane media type

Message ID 20220622030957.20615-1-liudongdong3@huawei.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series None |

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS

Commit Message

Dongdong Liu June 22, 2022, 3:09 a.m. UTC
  From: Chengwen Feng <fengchengwen@huawei.com>

The 802.11 physical PMA sub-layer defines three media: copper, fiber and
backplane. For PMD, the backplane is similar to the fiber, the main
differences are that backplane doesn't have optical module.

Because the interface of firmware fiber is also applicable to the
backplane, this patch supports the backplane only through simple
extension.

Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
---
v1->v2:
- document new 'backplane' media type support in release notes.
---
 doc/guides/rel_notes/release_22_07.rst |  4 ++
 drivers/net/hns3/hns3_ethdev.c         | 54 ++++++++++++++------------
 2 files changed, 34 insertions(+), 24 deletions(-)
  

Comments

Ferruh Yigit June 22, 2022, 10:06 a.m. UTC | #1
On 6/22/2022 4:09 AM, Dongdong Liu wrote:
> From: Chengwen Feng <fengchengwen@huawei.com>
> 
> The 802.11 physical PMA sub-layer defines three media: copper, fiber and
> backplane. For PMD, the backplane is similar to the fiber, the main
> differences are that backplane doesn't have optical module.
> 
> Because the interface of firmware fiber is also applicable to the
> backplane, this patch supports the backplane only through simple
> extension.
> 
> Cc: stable@dpdk.org
> 
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
> ---
> v1->v2:
> - document new 'backplane' media type support in release notes.
> ---
>   doc/guides/rel_notes/release_22_07.rst |  4 ++
>   drivers/net/hns3/hns3_ethdev.c         | 54 ++++++++++++++------------
>   2 files changed, 34 insertions(+), 24 deletions(-)
> 
> diff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst
> index dd371952c3..7884ecfd09 100644
> --- a/doc/guides/rel_notes/release_22_07.rst
> +++ b/doc/guides/rel_notes/release_22_07.rst
> @@ -172,6 +172,10 @@ New Features
>   
>     * Added support for yt8531s PHY.
>   
> +* **Updated HiSilicon hns3 driver.**
> +
> +  * Added support for backplane media type.
> +

We are sorting PMD updates on vendor name, so can you please move update 
above Intel updates.

Except above minor release notes location order, patch looks good to me, 
but it requires hns3 maintainers ack/review to proceed. (Same for both 
patches.)

Thanks,
ferruh
  
Dongdong Liu June 22, 2022, 10:29 a.m. UTC | #2
Hi Ferruh

On 2022/6/22 18:06, Ferruh Yigit wrote:
> On 6/22/2022 4:09 AM, Dongdong Liu wrote:
>> From: Chengwen Feng <fengchengwen@huawei.com>
>>
>> The 802.11 physical PMA sub-layer defines three media: copper, fiber and
>> backplane. For PMD, the backplane is similar to the fiber, the main
>> differences are that backplane doesn't have optical module.
>>
>> Because the interface of firmware fiber is also applicable to the
>> backplane, this patch supports the backplane only through simple
>> extension.
>>
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
>> Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
>> ---
>> v1->v2:
>> - document new 'backplane' media type support in release notes.
>> ---
>>   doc/guides/rel_notes/release_22_07.rst |  4 ++
>>   drivers/net/hns3/hns3_ethdev.c         | 54 ++++++++++++++------------
>>   2 files changed, 34 insertions(+), 24 deletions(-)
>>
>> diff --git a/doc/guides/rel_notes/release_22_07.rst
>> b/doc/guides/rel_notes/release_22_07.rst
>> index dd371952c3..7884ecfd09 100644
>> --- a/doc/guides/rel_notes/release_22_07.rst
>> +++ b/doc/guides/rel_notes/release_22_07.rst
>> @@ -172,6 +172,10 @@ New Features
>>       * Added support for yt8531s PHY.
>>   +* **Updated HiSilicon hns3 driver.**
>> +
>> +  * Added support for backplane media type.
>> +
>
> We are sorting PMD updates on vendor name, so can you please move update
> above Intel updates.
will do
>
> Except above minor release notes location order, patch looks good to me,
> but it requires hns3 maintainers ack/review to proceed. (Same for both
> patches.)

Lijun Ou and Min Hu current do not work for the hns3 driver.
I will do the work. I will send a patch to update the hns3 maintainers.

Thanks,
Dongdong
>
> Thanks,
> ferruh
> .
>
  

Patch

diff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst
index dd371952c3..7884ecfd09 100644
--- a/doc/guides/rel_notes/release_22_07.rst
+++ b/doc/guides/rel_notes/release_22_07.rst
@@ -172,6 +172,10 @@  New Features
 
   * Added support for yt8531s PHY.
 
+* **Updated HiSilicon hns3 driver.**
+
+  * Added support for backplane media type.
+
 * **Added Elliptic Curve Diffie-Hellman (ECDH) algorithm in cryptodev.**
 
   Added support for Elliptic Curve Diffie Hellman (ECDH) asymmetric
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 6c77c8b964..b17a3e8669 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -2787,11 +2787,8 @@  hns3_check_media_type(struct hns3_hw *hw, uint8_t media_type)
 		}
 		break;
 	case HNS3_MEDIA_TYPE_FIBER:
-		ret = 0;
-		break;
 	case HNS3_MEDIA_TYPE_BACKPLANE:
-		PMD_INIT_LOG(ERR, "Media type is Backplane, not supported.");
-		ret = -EOPNOTSUPP;
+		ret = 0;
 		break;
 	default:
 		PMD_INIT_LOG(ERR, "Unknown media type = %u!", media_type);
@@ -4244,14 +4241,11 @@  hns3_update_link_info(struct rte_eth_dev *eth_dev)
 {
 	struct hns3_adapter *hns = eth_dev->data->dev_private;
 	struct hns3_hw *hw = &hns->hw;
-	int ret = 0;
 
 	if (hw->mac.media_type == HNS3_MEDIA_TYPE_COPPER)
-		ret = hns3_update_copper_link_info(hw);
-	else if (hw->mac.media_type == HNS3_MEDIA_TYPE_FIBER)
-		ret = hns3_update_fiber_link_info(hw);
+		return hns3_update_copper_link_info(hw);
 
-	return ret;
+	return hns3_update_fiber_link_info(hw);
 }
 
 static int
@@ -4544,11 +4538,13 @@  hns3_get_port_supported_speed(struct rte_eth_dev *eth_dev)
 	if (ret)
 		return ret;
 
-	if (mac->media_type == HNS3_MEDIA_TYPE_FIBER) {
+	if (mac->media_type == HNS3_MEDIA_TYPE_FIBER ||
+	    mac->media_type == HNS3_MEDIA_TYPE_BACKPLANE) {
 		/*
 		 * Some firmware does not support the report of supported_speed,
-		 * and only report the effective speed of SFP. In this case, it
-		 * is necessary to use the SFP's speed as the supported_speed.
+		 * and only report the effective speed of SFP/backplane. In this
+		 * case, it is necessary to use the SFP/backplane's speed as the
+		 * supported_speed.
 		 */
 		if (mac->supported_speed == 0)
 			mac->supported_speed =
@@ -4810,7 +4806,7 @@  hns3_check_port_speed(struct hns3_hw *hw, uint32_t link_speeds)
 
 	if (mac->media_type == HNS3_MEDIA_TYPE_COPPER)
 		speed_bit = hns3_convert_link_speeds2bitmap_copper(link_speeds);
-	else if (mac->media_type == HNS3_MEDIA_TYPE_FIBER)
+	else
 		speed_bit = hns3_convert_link_speeds2bitmap_fiber(link_speeds);
 
 	if (!(speed_bit & supported_speed)) {
@@ -4954,6 +4950,19 @@  hns3_set_fiber_port_link_speed(struct hns3_hw *hw,
 	return hns3_cfg_mac_speed_dup(hw, cfg->speed, cfg->duplex);
 }
 
+static const char *
+hns3_get_media_type_name(uint8_t media_type)
+{
+	if (media_type == HNS3_MEDIA_TYPE_FIBER)
+		return "fiber";
+	else if (media_type == HNS3_MEDIA_TYPE_COPPER)
+		return "copper";
+	else if (media_type == HNS3_MEDIA_TYPE_BACKPLANE)
+		return "backplane";
+	else
+		return "unknown";
+}
+
 static int
 hns3_set_port_link_speed(struct hns3_hw *hw,
 			 struct hns3_set_link_speed_cfg *cfg)
@@ -4968,18 +4977,15 @@  hns3_set_port_link_speed(struct hns3_hw *hw,
 #endif
 
 		ret = hns3_set_copper_port_link_speed(hw, cfg);
-		if (ret) {
-			hns3_err(hw, "failed to set copper port link speed,"
-				 "ret = %d.", ret);
-			return ret;
-		}
-	} else if (hw->mac.media_type == HNS3_MEDIA_TYPE_FIBER) {
+	} else {
 		ret = hns3_set_fiber_port_link_speed(hw, cfg);
-		if (ret) {
-			hns3_err(hw, "failed to set fiber port link speed,"
-				 "ret = %d.", ret);
-			return ret;
-		}
+	}
+
+	if (ret) {
+		hns3_err(hw, "failed to set %s port link speed, ret = %d.",
+			 hns3_get_media_type_name(hw->mac.media_type),
+			 ret);
+		return ret;
 	}
 
 	return 0;