Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1462906 > unrolled thread
| Started by | Johannes Thumshirn <jthumshirn@suse.de> |
|---|---|
| First post | 2016-08-15 17:30 +0200 |
| Last post | 2016-08-19 13:50 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] fcoe: provide translation table between Ethernet and FC port speeds Johannes Thumshirn <jthumshirn@suse.de> - 2016-08-15 17:30 +0200
Re: [PATCH] fcoe: provide translation table between Ethernet and FC port speeds Hannes Reinecke <hare@suse.de> - 2016-08-19 11:00 +0200
Re: [PATCH] fcoe: provide translation table between Ethernet and FC port speeds Johannes Thumshirn <jthumshirn@suse.de> - 2016-08-19 13:50 +0200
| From | Johannes Thumshirn <jthumshirn@suse.de> |
|---|---|
| Date | 2016-08-15 17:30 +0200 |
| Subject | [PATCH] fcoe: provide translation table between Ethernet and FC port speeds |
| Message-ID | <s6rZU-7hs-17@gated-at.bofh.it> |
Provide a translation table between Ethernet and FC port speeds so odd
speeds (from a Ethernet POV) like 8 Gbit are correctly mapped to sysfs
and open-fcoe's fcoeadm.
Before:
Description: BCM57840 NetXtreme II 10/20-Gigabit Ethernet
Revision: 11
Manufacturer: Broadcom Corporation
Serial Number: 6CC2173EA1D0
Driver: bnx2x 1.712.30-0
Number of Ports: 1
Symbolic Name: bnx2fc (QLogic BCM57840) v2.10.3 over eth2
OS Device Name: host1
Node Name: 0x20006cc2173ea1d1
Port Name: 0x10006cc2173ea1d1
FabricName: 0x100000c0dd0ce717
Speed: unknown
Supported Speed: 1 Gbit, 10 Gbit
MaxFrameSize: 2048 bytes
FC-ID (Port ID): 0x660702
State: Online
After:
Description: BCM57840 NetXtreme II 10/20-Gigabit Ethernet
Revision: 11
Manufacturer: Broadcom Corporation
Serial Number: 6CC2173EA1D0
Driver: bnx2x 1.712.30-0
Number of Ports: 1
Symbolic Name: bnx2fc (QLogic BCM57840) v2.10.3 over eth2
OS Device Name: host1
Node Name: 0x20006cc2173ea1d1
Port Name: 0x10006cc2173ea1d1
FabricName: 0x100000c0dd0ce717
Speed: 8 Gbit
Supported Speed: 1 Gbit, 10 Gbit
MaxFrameSize: 2048 bytes
FC-ID (Port ID): 0x660701
State: Online
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
---
drivers/scsi/fcoe/fcoe_transport.c | 48 ++++++++++++++++++++++++--------------
1 file changed, 31 insertions(+), 17 deletions(-)
diff --git a/drivers/scsi/fcoe/fcoe_transport.c b/drivers/scsi/fcoe/fcoe_transport.c
index 7028dd3..3e7f0e7 100644
--- a/drivers/scsi/fcoe/fcoe_transport.c
+++ b/drivers/scsi/fcoe/fcoe_transport.c
@@ -83,6 +83,36 @@ static struct notifier_block libfcoe_notifier = {
.notifier_call = libfcoe_device_notification,
};
+static const struct {
+ u32 fc_port_speed;
+ u32 eth_port_speed;
+} fcoe_port_speed_mapping[] = {
+ { FC_PORTSPEED_1GBIT, SPEED_1000 },
+ { FC_PORTSPEED_2GBIT, 2000 },
+ { FC_PORTSPEED_4GBIT, 4000 },
+ { FC_PORTSPEED_8GBIT, 8000 },
+ { FC_PORTSPEED_10GBIT, SPEED_10000 },
+ { FC_PORTSPEED_16GBIT, 16000 },
+ { FC_PORTSPEED_20GBIT, SPEED_20000 },
+ { FC_PORTSPEED_25GBIT, SPEED_25000 },
+ { FC_PORTSPEED_32GBIT, 32000 },
+ { FC_PORTSPEED_40GBIT, SPEED_40000 },
+ { FC_PORTSPEED_50GBIT, SPEED_50000 },
+ { FC_PORTSPEED_100GBIT, SPEED_100000 },
+};
+
+static inline u32 eth2fc_speed(u32 eth_port_speed)
+{
+ int i;
+
+ for (i = 0; i <= ARRAY_SIZE(fcoe_port_speed_mapping); i++) {
+ if (fcoe_port_speed_mapping[i].eth_port_speed == eth_port_speed)
+ return fcoe_port_speed_mapping[i].fc_port_speed;
+ }
+
+ return FC_PORTSPEED_UNKNOWN;
+}
+
/**
* fcoe_link_speed_update() - Update the supported and actual link speeds
* @lport: The local port to update speeds for
@@ -126,23 +156,7 @@ int fcoe_link_speed_update(struct fc_lport *lport)
SUPPORTED_40000baseLR4_Full))
lport->link_supported_speeds |= FC_PORTSPEED_40GBIT;
- switch (ecmd.base.speed) {
- case SPEED_1000:
- lport->link_speed = FC_PORTSPEED_1GBIT;
- break;
- case SPEED_10000:
- lport->link_speed = FC_PORTSPEED_10GBIT;
- break;
- case SPEED_20000:
- lport->link_speed = FC_PORTSPEED_20GBIT;
- break;
- case SPEED_40000:
- lport->link_speed = FC_PORTSPEED_40GBIT;
- break;
- default:
- lport->link_speed = FC_PORTSPEED_UNKNOWN;
- break;
- }
+ lport->link_speed = eth2fc_speed(ecmd.base.speed);
return 0;
}
return -1;
--
1.8.5.6
[toc] | [next] | [standalone]
| From | Hannes Reinecke <hare@suse.de> |
|---|---|
| Date | 2016-08-19 11:00 +0200 |
| Subject | Re: [PATCH] fcoe: provide translation table between Ethernet and FC port speeds |
| Message-ID | <s7NOG-3o7-9@gated-at.bofh.it> |
| In reply to | #1462906 |
On 08/15/2016 05:24 PM, Johannes Thumshirn wrote:
> Provide a translation table between Ethernet and FC port speeds so odd
> speeds (from a Ethernet POV) like 8 Gbit are correctly mapped to sysfs
> and open-fcoe's fcoeadm.
>
> Before:
> Description: BCM57840 NetXtreme II 10/20-Gigabit Ethernet
> Revision: 11
> Manufacturer: Broadcom Corporation
> Serial Number: 6CC2173EA1D0
>
> Driver: bnx2x 1.712.30-0
> Number of Ports: 1
>
> Symbolic Name: bnx2fc (QLogic BCM57840) v2.10.3 over eth2
> OS Device Name: host1
> Node Name: 0x20006cc2173ea1d1
> Port Name: 0x10006cc2173ea1d1
> FabricName: 0x100000c0dd0ce717
> Speed: unknown
> Supported Speed: 1 Gbit, 10 Gbit
> MaxFrameSize: 2048 bytes
> FC-ID (Port ID): 0x660702
> State: Online
>
> After:
> Description: BCM57840 NetXtreme II 10/20-Gigabit Ethernet
> Revision: 11
> Manufacturer: Broadcom Corporation
> Serial Number: 6CC2173EA1D0
>
> Driver: bnx2x 1.712.30-0
> Number of Ports: 1
>
> Symbolic Name: bnx2fc (QLogic BCM57840) v2.10.3 over eth2
> OS Device Name: host1
> Node Name: 0x20006cc2173ea1d1
> Port Name: 0x10006cc2173ea1d1
> FabricName: 0x100000c0dd0ce717
> Speed: 8 Gbit
> Supported Speed: 1 Gbit, 10 Gbit
> MaxFrameSize: 2048 bytes
> FC-ID (Port ID): 0x660701
> State: Online
>
> Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
> ---
> drivers/scsi/fcoe/fcoe_transport.c | 48 ++++++++++++++++++++++++--------------
> 1 file changed, 31 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/scsi/fcoe/fcoe_transport.c b/drivers/scsi/fcoe/fcoe_transport.c
> index 7028dd3..3e7f0e7 100644
> --- a/drivers/scsi/fcoe/fcoe_transport.c
> +++ b/drivers/scsi/fcoe/fcoe_transport.c
> @@ -83,6 +83,36 @@ static struct notifier_block libfcoe_notifier = {
> .notifier_call = libfcoe_device_notification,
> };
>
> +static const struct {
> + u32 fc_port_speed;
> + u32 eth_port_speed;
> +} fcoe_port_speed_mapping[] = {
> + { FC_PORTSPEED_1GBIT, SPEED_1000 },
> + { FC_PORTSPEED_2GBIT, 2000 },
> + { FC_PORTSPEED_4GBIT, 4000 },
> + { FC_PORTSPEED_8GBIT, 8000 },
> + { FC_PORTSPEED_10GBIT, SPEED_10000 },
> + { FC_PORTSPEED_16GBIT, 16000 },
> + { FC_PORTSPEED_20GBIT, SPEED_20000 },
> + { FC_PORTSPEED_25GBIT, SPEED_25000 },
> + { FC_PORTSPEED_32GBIT, 32000 },
> + { FC_PORTSPEED_40GBIT, SPEED_40000 },
> + { FC_PORTSPEED_50GBIT, SPEED_50000 },
> + { FC_PORTSPEED_100GBIT, SPEED_100000 },
> +};
> +
Hmm. Why not 'SPEED_2000' etc?
This looks a bit weird, mixing values with defines ...
Cheers,
Hannes
--
Dr. Hannes Reinecke Teamlead Storage & Networking
hare@suse.de +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
[toc] | [prev] | [next] | [standalone]
| From | Johannes Thumshirn <jthumshirn@suse.de> |
|---|---|
| Date | 2016-08-19 13:50 +0200 |
| Subject | Re: [PATCH] fcoe: provide translation table between Ethernet and FC port speeds |
| Message-ID | <s7Qtc-55C-11@gated-at.bofh.it> |
| In reply to | #1466236 |
On Fri, Aug 19, 2016 at 10:37:04AM +0200, Hannes Reinecke wrote:
> On 08/15/2016 05:24 PM, Johannes Thumshirn wrote:
[...]
> >
> > +static const struct {
> > + u32 fc_port_speed;
> > + u32 eth_port_speed;
> > +} fcoe_port_speed_mapping[] = {
> > + { FC_PORTSPEED_1GBIT, SPEED_1000 },
> > + { FC_PORTSPEED_2GBIT, 2000 },
> > + { FC_PORTSPEED_4GBIT, 4000 },
> > + { FC_PORTSPEED_8GBIT, 8000 },
> > + { FC_PORTSPEED_10GBIT, SPEED_10000 },
> > + { FC_PORTSPEED_16GBIT, 16000 },
> > + { FC_PORTSPEED_20GBIT, SPEED_20000 },
> > + { FC_PORTSPEED_25GBIT, SPEED_25000 },
> > + { FC_PORTSPEED_32GBIT, 32000 },
> > + { FC_PORTSPEED_40GBIT, SPEED_40000 },
> > + { FC_PORTSPEED_50GBIT, SPEED_50000 },
> > + { FC_PORTSPEED_100GBIT, SPEED_100000 },
> > +};
> > +
> Hmm. Why not 'SPEED_2000' etc?
>
> This looks a bit weird, mixing values with defines ...
I'll add defines for the non Ethernet native speeds privately to this file.
--
Johannes Thumshirn Storage
jthumshirn@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web