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

scsi: lpfc: Add 256 Gb link speed support

Update routines to support 256 Gb link speed for LPe37000/LPe38000
adapters. 256 Gb speeds can be seen on trunk links.

Link: https://lore.kernel.org/r/20210722221721.74388-5-jsmart2021@gmail.com
Co-developed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

James Smart and committed by
Martin K. Petersen
bfc47785 f6c5e6c4

+26
+3
drivers/scsi/lpfc/lpfc_attr.c
··· 6745 6745 case LPFC_LINK_SPEED_128GHZ: 6746 6746 fc_host_speed(shost) = FC_PORTSPEED_128GBIT; 6747 6747 break; 6748 + case LPFC_LINK_SPEED_256GHZ: 6749 + fc_host_speed(shost) = FC_PORTSPEED_256GBIT; 6750 + break; 6748 6751 default: 6749 6752 fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; 6750 6753 break;
+5
drivers/scsi/lpfc/lpfc_ct.c
··· 2846 2846 2847 2847 ae->un.AttrInt = 0; 2848 2848 if (!(phba->hba_flag & HBA_FCOE_MODE)) { 2849 + if (phba->lmt & LMT_256Gb) 2850 + ae->un.AttrInt |= HBA_PORTSPEED_256GFC; 2849 2851 if (phba->lmt & LMT_128Gb) 2850 2852 ae->un.AttrInt |= HBA_PORTSPEED_128GFC; 2851 2853 if (phba->lmt & LMT_64Gb) ··· 2928 2926 break; 2929 2927 case LPFC_LINK_SPEED_128GHZ: 2930 2928 ae->un.AttrInt = HBA_PORTSPEED_128GFC; 2929 + break; 2930 + case LPFC_LINK_SPEED_256GHZ: 2931 + ae->un.AttrInt = HBA_PORTSPEED_256GFC; 2931 2932 break; 2932 2933 default: 2933 2934 ae->un.AttrInt = HBA_PORTSPEED_UNKNOWN;
+8
drivers/scsi/lpfc/lpfc_els.c
··· 6105 6105 case LPFC_LINK_SPEED_64GHZ: 6106 6106 rdp_speed = RDP_PS_64GB; 6107 6107 break; 6108 + case LPFC_LINK_SPEED_128GHZ: 6109 + rdp_speed = RDP_PS_128GB; 6110 + break; 6111 + case LPFC_LINK_SPEED_256GHZ: 6112 + rdp_speed = RDP_PS_256GB; 6113 + break; 6108 6114 default: 6109 6115 rdp_speed = RDP_PS_UNKNOWN; 6110 6116 break; ··· 6118 6112 6119 6113 desc->info.port_speed.speed = cpu_to_be16(rdp_speed); 6120 6114 6115 + if (phba->lmt & LMT_256Gb) 6116 + rdp_cap |= RDP_PS_256GB; 6121 6117 if (phba->lmt & LMT_128Gb) 6122 6118 rdp_cap |= RDP_PS_128GB; 6123 6119 if (phba->lmt & LMT_64Gb)
+1
drivers/scsi/lpfc/lpfc_hbadisc.c
··· 3331 3331 case LPFC_LINK_SPEED_32GHZ: 3332 3332 case LPFC_LINK_SPEED_64GHZ: 3333 3333 case LPFC_LINK_SPEED_128GHZ: 3334 + case LPFC_LINK_SPEED_256GHZ: 3334 3335 break; 3335 3336 default: 3336 3337 phba->fc_linkspeed = LPFC_LINK_SPEED_UNKNOWN;
+5
drivers/scsi/lpfc/lpfc_init.c
··· 4679 4679 if (phba->hba_flag & HBA_FCOE_MODE) 4680 4680 return; 4681 4681 4682 + if (phba->lmt & LMT_256Gb) 4683 + fc_host_supported_speeds(shost) |= FC_PORTSPEED_256GBIT; 4682 4684 if (phba->lmt & LMT_128Gb) 4683 4685 fc_host_supported_speeds(shost) |= FC_PORTSPEED_128GBIT; 4684 4686 if (phba->lmt & LMT_64Gb) ··· 5088 5086 break; 5089 5087 case LPFC_FC_LA_SPEED_128G: 5090 5088 port_speed = 128000; 5089 + break; 5090 + case LPFC_FC_LA_SPEED_256G: 5091 + port_speed = 256000; 5091 5092 break; 5092 5093 default: 5093 5094 port_speed = 0;
+4
drivers/scsi/lpfc/lpfc_scsi.h
··· 142 142 #define FC_PORTSPEED_128GBIT 0x2000 143 143 #endif 144 144 145 + #ifndef FC_PORTSPEED_256GBIT 146 + #define FC_PORTSPEED_256GBIT 0x4000 147 + #endif 148 + 145 149 #define TXRDY_PAYLOAD_LEN 12 146 150 147 151 /* For sysfs/debugfs tmp string max len */