You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
4.7 KiB
132 lines
4.7 KiB
From 789d2f5eb69fede53fd247b3e1c594499603f05e Mon Sep 17 00:00:00 2001
|
|
From: Igor Russkikh <irusskik@redhat.com>
|
|
Date: Fri, 6 Nov 2020 18:37:29 -0500
|
|
Subject: [PATCH 072/139] [netdrv] net: atlantic: add defines for 10M and EEE
|
|
100M link mode
|
|
|
|
Message-id: <1604687916-15087-73-git-send-email-irusskik@redhat.com>
|
|
Patchwork-id: 338500
|
|
Patchwork-instance: patchwork
|
|
O-Subject: [RHEL8.4 BZ 1857861 072/139] net: atlantic: add defines for 10M and EEE 100M link mode
|
|
Bugzilla: 1857861
|
|
RH-Acked-by: David Arcari <darcari@redhat.com>
|
|
RH-Acked-by: John Linville <linville@redhat.com>
|
|
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
|
|
|
|
Bugzilla: http://bugzilla.redhat.com/1857861
|
|
|
|
commit 3d464aadef75415c55a5a4feb611a9bbf034d7d3
|
|
Author: Igor Russkikh <irusskikh@marvell.com>
|
|
Date: Thu Apr 30 11:04:31 2020 +0300
|
|
|
|
net: atlantic: add defines for 10M and EEE 100M link mode
|
|
|
|
This patch adds defines for 10M and EEE 100M link modes, which are
|
|
supported by A2.
|
|
|
|
10M support is added in this patch series.
|
|
EEE is out of scope, but will be added in a follow-up series.
|
|
|
|
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
|
|
Signed-off-by: Mark Starovoytov <mstarovoitov@marvell.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
|
|
Signed-off-by: Igor Russkikh <irusskik@redhat.com>
|
|
|
|
Cc: David Arcari <darcari@redhat.com>
|
|
Cc: Igor Russkikh <irusskik@redhat.com>
|
|
Signed-off-by: Jan Stancek <jstancek@redhat.com>
|
|
---
|
|
drivers/net/ethernet/aquantia/atlantic/aq_common.h | 22 ++++++++++++----------
|
|
.../net/ethernet/aquantia/atlantic/aq_ethtool.c | 3 +++
|
|
drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 12 ++++++++++++
|
|
3 files changed, 27 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_common.h b/drivers/net/ethernet/aquantia/atlantic/aq_common.h
|
|
index 1261e7c7a01e..53620ba6d7a6 100644
|
|
--- a/drivers/net/ethernet/aquantia/atlantic/aq_common.h
|
|
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_common.h
|
|
@@ -50,16 +50,18 @@
|
|
#define AQ_HWREV_1 1
|
|
#define AQ_HWREV_2 2
|
|
|
|
-#define AQ_NIC_RATE_10G BIT(0)
|
|
-#define AQ_NIC_RATE_5G BIT(1)
|
|
-#define AQ_NIC_RATE_5GSR BIT(2)
|
|
-#define AQ_NIC_RATE_2GS BIT(3)
|
|
-#define AQ_NIC_RATE_1G BIT(4)
|
|
-#define AQ_NIC_RATE_100M BIT(5)
|
|
+#define AQ_NIC_RATE_10G BIT(0)
|
|
+#define AQ_NIC_RATE_5G BIT(1)
|
|
+#define AQ_NIC_RATE_5GSR BIT(2)
|
|
+#define AQ_NIC_RATE_2GS BIT(3)
|
|
+#define AQ_NIC_RATE_1G BIT(4)
|
|
+#define AQ_NIC_RATE_100M BIT(5)
|
|
+#define AQ_NIC_RATE_10M BIT(6)
|
|
|
|
-#define AQ_NIC_RATE_EEE_10G BIT(6)
|
|
-#define AQ_NIC_RATE_EEE_5G BIT(7)
|
|
-#define AQ_NIC_RATE_EEE_2GS BIT(8)
|
|
-#define AQ_NIC_RATE_EEE_1G BIT(9)
|
|
+#define AQ_NIC_RATE_EEE_10G BIT(7)
|
|
+#define AQ_NIC_RATE_EEE_5G BIT(8)
|
|
+#define AQ_NIC_RATE_EEE_2GS BIT(9)
|
|
+#define AQ_NIC_RATE_EEE_1G BIT(10)
|
|
+#define AQ_NIC_RATE_EEE_100M BIT(11)
|
|
|
|
#endif /* AQ_COMMON_H */
|
|
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c b/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
|
|
index 77a855314b4c..46e8a17e7131 100644
|
|
--- a/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
|
|
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c
|
|
@@ -482,6 +482,9 @@ static enum hw_atl_fw2x_rate eee_mask_to_ethtool_mask(u32 speed)
|
|
if (speed & AQ_NIC_RATE_EEE_1G)
|
|
rate |= SUPPORTED_1000baseT_Full;
|
|
|
|
+ if (speed & AQ_NIC_RATE_EEE_100M)
|
|
+ rate |= SUPPORTED_100baseT_Full;
|
|
+
|
|
return rate;
|
|
}
|
|
|
|
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
|
|
index b478becc68b2..4b8ee15c76f1 100644
|
|
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
|
|
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
|
|
@@ -869,6 +869,10 @@ void aq_nic_get_link_ksettings(struct aq_nic_s *self,
|
|
ethtool_link_ksettings_add_link_mode(cmd, supported,
|
|
100baseT_Full);
|
|
|
|
+ if (self->aq_nic_cfg.aq_hw_caps->link_speed_msk & AQ_NIC_RATE_10M)
|
|
+ ethtool_link_ksettings_add_link_mode(cmd, supported,
|
|
+ 10baseT_Full);
|
|
+
|
|
if (self->aq_nic_cfg.aq_hw_caps->flow_control) {
|
|
ethtool_link_ksettings_add_link_mode(cmd, supported,
|
|
Pause);
|
|
@@ -908,6 +912,10 @@ void aq_nic_get_link_ksettings(struct aq_nic_s *self,
|
|
ethtool_link_ksettings_add_link_mode(cmd, advertising,
|
|
100baseT_Full);
|
|
|
|
+ if (self->aq_nic_cfg.link_speed_msk & AQ_NIC_RATE_10M)
|
|
+ ethtool_link_ksettings_add_link_mode(cmd, advertising,
|
|
+ 10baseT_Full);
|
|
+
|
|
if (self->aq_nic_cfg.fc.cur & AQ_NIC_FC_RX)
|
|
ethtool_link_ksettings_add_link_mode(cmd, advertising,
|
|
Pause);
|
|
@@ -938,6 +946,10 @@ int aq_nic_set_link_ksettings(struct aq_nic_s *self,
|
|
speed = cmd->base.speed;
|
|
|
|
switch (speed) {
|
|
+ case SPEED_10:
|
|
+ rate = AQ_NIC_RATE_10M;
|
|
+ break;
|
|
+
|
|
case SPEED_100:
|
|
rate = AQ_NIC_RATE_100M;
|
|
break;
|
|
--
|
|
2.13.6
|
|
|