Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

lpfc: Use new FDMI speed definitions for 10G, 25G and 40G FCoE.

Use new FDMI speed definitions for 10G, 25G and 40G FCoE.

Signed-off-by: Dick Kennedy <dick.kennedy@avagotech.com>
Signed-off-by: James Smart <james.smart@avagotech.com>
Reviewed-by: Hannes Reinicke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

James Smart and committed by
Martin K. Petersen
a085e87c 5afab6bb

+150 -136
+1 -1
drivers/scsi/lpfc/lpfc_attr.c
··· 5255 5255 5256 5256 spin_lock_irq(shost->host_lock); 5257 5257 5258 - if (lpfc_is_link_up(phba)) { 5258 + if ((lpfc_is_link_up(phba)) && (!(phba->hba_flag & HBA_FCOE_MODE))) { 5259 5259 switch(phba->fc_linkspeed) { 5260 5260 case LPFC_LINK_SPEED_1GHZ: 5261 5261 fc_host_speed(shost) = FC_PORTSPEED_1GBIT;
+98 -48
drivers/scsi/lpfc/lpfc_ct.c
··· 48 48 #include "lpfc_vport.h" 49 49 #include "lpfc_debugfs.h" 50 50 51 - /* FDMI Port Speed definitions */ 52 - #define HBA_PORTSPEED_1GBIT 0x0001 /* 1 GBit/sec */ 53 - #define HBA_PORTSPEED_2GBIT 0x0002 /* 2 GBit/sec */ 54 - #define HBA_PORTSPEED_4GBIT 0x0008 /* 4 GBit/sec */ 55 - #define HBA_PORTSPEED_10GBIT 0x0004 /* 10 GBit/sec */ 56 - #define HBA_PORTSPEED_8GBIT 0x0010 /* 8 GBit/sec */ 57 - #define HBA_PORTSPEED_16GBIT 0x0020 /* 16 GBit/sec */ 58 - #define HBA_PORTSPEED_32GBIT 0x0040 /* 32 GBit/sec */ 59 - #define HBA_PORTSPEED_UNKNOWN 0x0800 /* Unknown */ 51 + /* FDMI Port Speed definitions - FC-GS-7 */ 52 + #define HBA_PORTSPEED_1GFC 0x00000001 /* 1G FC */ 53 + #define HBA_PORTSPEED_2GFC 0x00000002 /* 2G FC */ 54 + #define HBA_PORTSPEED_4GFC 0x00000008 /* 4G FC */ 55 + #define HBA_PORTSPEED_10GFC 0x00000004 /* 10G FC */ 56 + #define HBA_PORTSPEED_8GFC 0x00000010 /* 8G FC */ 57 + #define HBA_PORTSPEED_16GFC 0x00000020 /* 16G FC */ 58 + #define HBA_PORTSPEED_32GFC 0x00000040 /* 32G FC */ 59 + #define HBA_PORTSPEED_20GFC 0x00000080 /* 20G FC */ 60 + #define HBA_PORTSPEED_40GFC 0x00000100 /* 40G FC */ 61 + #define HBA_PORTSPEED_128GFC 0x00000200 /* 128G FC */ 62 + #define HBA_PORTSPEED_64GFC 0x00000400 /* 64G FC */ 63 + #define HBA_PORTSPEED_256GFC 0x00000800 /* 256G FC */ 64 + #define HBA_PORTSPEED_UNKNOWN 0x00008000 /* Unknown */ 65 + #define HBA_PORTSPEED_10GE 0x00010000 /* 10G E */ 66 + #define HBA_PORTSPEED_40GE 0x00020000 /* 40G E */ 67 + #define HBA_PORTSPEED_100GE 0x00040000 /* 100G E */ 68 + #define HBA_PORTSPEED_25GE 0x00080000 /* 25G E */ 69 + #define HBA_PORTSPEED_50GE 0x00100000 /* 50G E */ 70 + #define HBA_PORTSPEED_400GE 0x00200000 /* 400G E */ 60 71 61 72 #define FOURBYTES 4 62 73 ··· 1932 1921 ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; 1933 1922 1934 1923 ae->un.AttrInt = 0; 1935 - if (phba->lmt & LMT_32Gb) 1936 - ae->un.AttrInt |= HBA_PORTSPEED_32GBIT; 1937 - if (phba->lmt & LMT_16Gb) 1938 - ae->un.AttrInt |= HBA_PORTSPEED_16GBIT; 1939 - if (phba->lmt & LMT_10Gb) 1940 - ae->un.AttrInt |= HBA_PORTSPEED_10GBIT; 1941 - if (phba->lmt & LMT_8Gb) 1942 - ae->un.AttrInt |= HBA_PORTSPEED_8GBIT; 1943 - if (phba->lmt & LMT_4Gb) 1944 - ae->un.AttrInt |= HBA_PORTSPEED_4GBIT; 1945 - if (phba->lmt & LMT_2Gb) 1946 - ae->un.AttrInt |= HBA_PORTSPEED_2GBIT; 1947 - if (phba->lmt & LMT_1Gb) 1948 - ae->un.AttrInt |= HBA_PORTSPEED_1GBIT; 1924 + if (!(phba->hba_flag & HBA_FCOE_MODE)) { 1925 + if (phba->lmt & LMT_32Gb) 1926 + ae->un.AttrInt |= HBA_PORTSPEED_32GFC; 1927 + if (phba->lmt & LMT_16Gb) 1928 + ae->un.AttrInt |= HBA_PORTSPEED_16GFC; 1929 + if (phba->lmt & LMT_10Gb) 1930 + ae->un.AttrInt |= HBA_PORTSPEED_10GFC; 1931 + if (phba->lmt & LMT_8Gb) 1932 + ae->un.AttrInt |= HBA_PORTSPEED_8GFC; 1933 + if (phba->lmt & LMT_4Gb) 1934 + ae->un.AttrInt |= HBA_PORTSPEED_4GFC; 1935 + if (phba->lmt & LMT_2Gb) 1936 + ae->un.AttrInt |= HBA_PORTSPEED_2GFC; 1937 + if (phba->lmt & LMT_1Gb) 1938 + ae->un.AttrInt |= HBA_PORTSPEED_1GFC; 1939 + } else { 1940 + /* FCoE links support only one speed */ 1941 + switch (phba->fc_linkspeed) { 1942 + case LPFC_ASYNC_LINK_SPEED_10GBPS: 1943 + ae->un.AttrInt = HBA_PORTSPEED_10GE; 1944 + break; 1945 + case LPFC_ASYNC_LINK_SPEED_25GBPS: 1946 + ae->un.AttrInt = HBA_PORTSPEED_25GE; 1947 + break; 1948 + case LPFC_ASYNC_LINK_SPEED_40GBPS: 1949 + ae->un.AttrInt = HBA_PORTSPEED_40GE; 1950 + break; 1951 + case LPFC_ASYNC_LINK_SPEED_100GBPS: 1952 + ae->un.AttrInt = HBA_PORTSPEED_100GE; 1953 + break; 1954 + } 1955 + } 1949 1956 ae->un.AttrInt = cpu_to_be32(ae->un.AttrInt); 1950 1957 size = FOURBYTES + sizeof(uint32_t); 1951 1958 ad->AttrLen = cpu_to_be16(size); ··· 1981 1952 1982 1953 ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue; 1983 1954 1984 - switch (phba->fc_linkspeed) { 1985 - case LPFC_LINK_SPEED_1GHZ: 1986 - ae->un.AttrInt = HBA_PORTSPEED_1GBIT; 1987 - break; 1988 - case LPFC_LINK_SPEED_2GHZ: 1989 - ae->un.AttrInt = HBA_PORTSPEED_2GBIT; 1990 - break; 1991 - case LPFC_LINK_SPEED_4GHZ: 1992 - ae->un.AttrInt = HBA_PORTSPEED_4GBIT; 1993 - break; 1994 - case LPFC_LINK_SPEED_8GHZ: 1995 - ae->un.AttrInt = HBA_PORTSPEED_8GBIT; 1996 - break; 1997 - case LPFC_LINK_SPEED_10GHZ: 1998 - ae->un.AttrInt = HBA_PORTSPEED_10GBIT; 1999 - break; 2000 - case LPFC_LINK_SPEED_16GHZ: 2001 - ae->un.AttrInt = HBA_PORTSPEED_16GBIT; 2002 - break; 2003 - case LPFC_LINK_SPEED_32GHZ: 2004 - ae->un.AttrInt = HBA_PORTSPEED_32GBIT; 2005 - break; 2006 - default: 2007 - ae->un.AttrInt = HBA_PORTSPEED_UNKNOWN; 2008 - break; 1955 + if (!(phba->hba_flag & HBA_FCOE_MODE)) { 1956 + switch (phba->fc_linkspeed) { 1957 + case LPFC_LINK_SPEED_1GHZ: 1958 + ae->un.AttrInt = HBA_PORTSPEED_1GFC; 1959 + break; 1960 + case LPFC_LINK_SPEED_2GHZ: 1961 + ae->un.AttrInt = HBA_PORTSPEED_2GFC; 1962 + break; 1963 + case LPFC_LINK_SPEED_4GHZ: 1964 + ae->un.AttrInt = HBA_PORTSPEED_4GFC; 1965 + break; 1966 + case LPFC_LINK_SPEED_8GHZ: 1967 + ae->un.AttrInt = HBA_PORTSPEED_8GFC; 1968 + break; 1969 + case LPFC_LINK_SPEED_10GHZ: 1970 + ae->un.AttrInt = HBA_PORTSPEED_10GFC; 1971 + break; 1972 + case LPFC_LINK_SPEED_16GHZ: 1973 + ae->un.AttrInt = HBA_PORTSPEED_16GFC; 1974 + break; 1975 + case LPFC_LINK_SPEED_32GHZ: 1976 + ae->un.AttrInt = HBA_PORTSPEED_32GFC; 1977 + break; 1978 + default: 1979 + ae->un.AttrInt = HBA_PORTSPEED_UNKNOWN; 1980 + break; 1981 + } 1982 + } else { 1983 + switch (phba->fc_linkspeed) { 1984 + case LPFC_ASYNC_LINK_SPEED_10GBPS: 1985 + ae->un.AttrInt = HBA_PORTSPEED_10GE; 1986 + break; 1987 + case LPFC_ASYNC_LINK_SPEED_25GBPS: 1988 + ae->un.AttrInt = HBA_PORTSPEED_25GE; 1989 + break; 1990 + case LPFC_ASYNC_LINK_SPEED_40GBPS: 1991 + ae->un.AttrInt = HBA_PORTSPEED_40GE; 1992 + break; 1993 + case LPFC_ASYNC_LINK_SPEED_100GBPS: 1994 + ae->un.AttrInt = HBA_PORTSPEED_100GE; 1995 + break; 1996 + default: 1997 + ae->un.AttrInt = HBA_PORTSPEED_UNKNOWN; 1998 + break; 1999 + } 2009 2000 } 2001 + 2010 2002 ae->un.AttrInt = cpu_to_be32(ae->un.AttrInt); 2011 2003 size = FOURBYTES + sizeof(uint32_t); 2012 2004 ad->AttrLen = cpu_to_be16(size);
+3
drivers/scsi/lpfc/lpfc_els.c
··· 4749 4749 case LPFC_LINK_SPEED_16GHZ: 4750 4750 rdp_speed = RDP_PS_16GB; 4751 4751 break; 4752 + case LPFC_LINK_SPEED_32GHZ: 4753 + rdp_speed = RDP_PS_32GB; 4754 + break; 4752 4755 default: 4753 4756 rdp_speed = RDP_PS_UNKNOWN; 4754 4757 break;
+16 -13
drivers/scsi/lpfc/lpfc_hbadisc.c
··· 3037 3037 uint32_t fc_flags = 0; 3038 3038 3039 3039 spin_lock_irq(&phba->hbalock); 3040 - switch (bf_get(lpfc_mbx_read_top_link_spd, la)) { 3041 - case LPFC_LINK_SPEED_1GHZ: 3042 - case LPFC_LINK_SPEED_2GHZ: 3043 - case LPFC_LINK_SPEED_4GHZ: 3044 - case LPFC_LINK_SPEED_8GHZ: 3045 - case LPFC_LINK_SPEED_10GHZ: 3046 - case LPFC_LINK_SPEED_16GHZ: 3047 - case LPFC_LINK_SPEED_32GHZ: 3048 - phba->fc_linkspeed = bf_get(lpfc_mbx_read_top_link_spd, la); 3049 - break; 3050 - default: 3051 - phba->fc_linkspeed = LPFC_LINK_SPEED_UNKNOWN; 3052 - break; 3040 + phba->fc_linkspeed = bf_get(lpfc_mbx_read_top_link_spd, la); 3041 + 3042 + if (!(phba->hba_flag & HBA_FCOE_MODE)) { 3043 + switch (bf_get(lpfc_mbx_read_top_link_spd, la)) { 3044 + case LPFC_LINK_SPEED_1GHZ: 3045 + case LPFC_LINK_SPEED_2GHZ: 3046 + case LPFC_LINK_SPEED_4GHZ: 3047 + case LPFC_LINK_SPEED_8GHZ: 3048 + case LPFC_LINK_SPEED_10GHZ: 3049 + case LPFC_LINK_SPEED_16GHZ: 3050 + case LPFC_LINK_SPEED_32GHZ: 3051 + break; 3052 + default: 3053 + phba->fc_linkspeed = LPFC_LINK_SPEED_UNKNOWN; 3054 + break; 3055 + } 3053 3056 } 3054 3057 3055 3058 if (phba->fc_topology &&
+1
drivers/scsi/lpfc/lpfc_hw4.h
··· 3317 3317 #define LPFC_ASYNC_LINK_SPEED_20GBPS 0x5 3318 3318 #define LPFC_ASYNC_LINK_SPEED_25GBPS 0x6 3319 3319 #define LPFC_ASYNC_LINK_SPEED_40GBPS 0x7 3320 + #define LPFC_ASYNC_LINK_SPEED_100GBPS 0x8 3320 3321 #define lpfc_acqe_link_duplex_SHIFT 16 3321 3322 #define lpfc_acqe_link_duplex_MASK 0x000000FF 3322 3323 #define lpfc_acqe_link_duplex_WORD word0
+30 -65
drivers/scsi/lpfc/lpfc_init.c
··· 3710 3710 } 3711 3711 3712 3712 /** 3713 - * lpfc_sli4_parse_latt_link_speed - Parse sli4 link-attention link speed 3714 - * @phba: pointer to lpfc hba data structure. 3715 - * @acqe_link: pointer to the async link completion queue entry. 3716 - * 3717 - * This routine is to parse the SLI4 link-attention link speed and translate 3718 - * it into the base driver's link-attention link speed coding. 3719 - * 3720 - * Return: Link-attention link speed in terms of base driver's coding. 3721 - **/ 3722 - static uint8_t 3723 - lpfc_sli4_parse_latt_link_speed(struct lpfc_hba *phba, 3724 - struct lpfc_acqe_link *acqe_link) 3725 - { 3726 - uint8_t link_speed; 3727 - 3728 - switch (bf_get(lpfc_acqe_link_speed, acqe_link)) { 3729 - case LPFC_ASYNC_LINK_SPEED_ZERO: 3730 - case LPFC_ASYNC_LINK_SPEED_10MBPS: 3731 - case LPFC_ASYNC_LINK_SPEED_100MBPS: 3732 - link_speed = LPFC_LINK_SPEED_UNKNOWN; 3733 - break; 3734 - case LPFC_ASYNC_LINK_SPEED_1GBPS: 3735 - link_speed = LPFC_LINK_SPEED_1GHZ; 3736 - break; 3737 - case LPFC_ASYNC_LINK_SPEED_10GBPS: 3738 - link_speed = LPFC_LINK_SPEED_10GHZ; 3739 - break; 3740 - case LPFC_ASYNC_LINK_SPEED_20GBPS: 3741 - case LPFC_ASYNC_LINK_SPEED_25GBPS: 3742 - case LPFC_ASYNC_LINK_SPEED_40GBPS: 3743 - link_speed = LPFC_LINK_SPEED_UNKNOWN; 3744 - break; 3745 - default: 3746 - lpfc_printf_log(phba, KERN_ERR, LOG_INIT, 3747 - "0483 Invalid link-attention link speed: x%x\n", 3748 - bf_get(lpfc_acqe_link_speed, acqe_link)); 3749 - link_speed = LPFC_LINK_SPEED_UNKNOWN; 3750 - break; 3751 - } 3752 - return link_speed; 3753 - } 3754 - 3755 - /** 3756 3713 * lpfc_sli_port_speed_get - Get sli3 link speed code to link speed 3757 3714 * @phba: pointer to lpfc hba data structure. 3758 3715 * ··· 3725 3768 if (!lpfc_is_link_up(phba)) 3726 3769 return 0; 3727 3770 3728 - switch (phba->fc_linkspeed) { 3729 - case LPFC_LINK_SPEED_1GHZ: 3730 - link_speed = 1000; 3731 - break; 3732 - case LPFC_LINK_SPEED_2GHZ: 3733 - link_speed = 2000; 3734 - break; 3735 - case LPFC_LINK_SPEED_4GHZ: 3736 - link_speed = 4000; 3737 - break; 3738 - case LPFC_LINK_SPEED_8GHZ: 3739 - link_speed = 8000; 3740 - break; 3741 - case LPFC_LINK_SPEED_10GHZ: 3742 - link_speed = 10000; 3743 - break; 3744 - case LPFC_LINK_SPEED_16GHZ: 3745 - link_speed = 16000; 3746 - break; 3747 - default: 3748 - link_speed = 0; 3771 + if (phba->sli_rev <= LPFC_SLI_REV3) { 3772 + switch (phba->fc_linkspeed) { 3773 + case LPFC_LINK_SPEED_1GHZ: 3774 + link_speed = 1000; 3775 + break; 3776 + case LPFC_LINK_SPEED_2GHZ: 3777 + link_speed = 2000; 3778 + break; 3779 + case LPFC_LINK_SPEED_4GHZ: 3780 + link_speed = 4000; 3781 + break; 3782 + case LPFC_LINK_SPEED_8GHZ: 3783 + link_speed = 8000; 3784 + break; 3785 + case LPFC_LINK_SPEED_10GHZ: 3786 + link_speed = 10000; 3787 + break; 3788 + case LPFC_LINK_SPEED_16GHZ: 3789 + link_speed = 16000; 3790 + break; 3791 + default: 3792 + link_speed = 0; 3793 + } 3794 + } else { 3795 + if (phba->sli4_hba.link_state.logical_speed) 3796 + link_speed = 3797 + phba->sli4_hba.link_state.logical_speed; 3798 + else 3799 + link_speed = phba->sli4_hba.link_state.speed; 3749 3800 } 3750 3801 return link_speed; 3751 3802 } ··· 3949 3984 la->eventTag = acqe_link->event_tag; 3950 3985 bf_set(lpfc_mbx_read_top_att_type, la, att_type); 3951 3986 bf_set(lpfc_mbx_read_top_link_spd, la, 3952 - lpfc_sli4_parse_latt_link_speed(phba, acqe_link)); 3987 + (bf_get(lpfc_acqe_link_speed, acqe_link))); 3953 3988 3954 3989 /* Fake the the following irrelvant fields */ 3955 3990 bf_set(lpfc_mbx_read_top_topology, la, LPFC_TOPOLOGY_PT_PT);
+1 -9
drivers/scsi/lpfc/lpfc_scsi.c
··· 4461 4461 phba->Port); 4462 4462 } 4463 4463 len = strlen(lpfcinfobuf); 4464 - if (phba->sli_rev <= LPFC_SLI_REV3) { 4465 - link_speed = lpfc_sli_port_speed_get(phba); 4466 - } else { 4467 - if (phba->sli4_hba.link_state.logical_speed) 4468 - link_speed = 4469 - phba->sli4_hba.link_state.logical_speed; 4470 - else 4471 - link_speed = phba->sli4_hba.link_state.speed; 4472 - } 4464 + link_speed = lpfc_sli_port_speed_get(phba); 4473 4465 if (link_speed != 0) 4474 4466 snprintf(lpfcinfobuf + len, 384-len, 4475 4467 " Logical Link Speed: %d Mbps", link_speed);