@@ -2270,11 +2270,13 @@ struct ct_sns_desc {
2270
2270
2271
2271
enum discovery_state {
2272
2272
DSC_DELETED ,
2273
+ DSC_GNN_ID ,
2273
2274
DSC_GID_PN ,
2274
2275
DSC_GNL ,
2275
2276
DSC_LOGIN_PEND ,
2276
2277
DSC_LOGIN_FAILED ,
2277
2278
DSC_GPDB ,
2279
+ DSC_GFPN_ID ,
2278
2280
DSC_GPSC ,
2279
2281
DSC_UPD_FCPORT ,
2280
2282
DSC_LOGIN_COMPLETE ,
@@ -2304,8 +2306,9 @@ enum fcport_mgt_event {
2304
2306
FCME_GPDB_DONE ,
2305
2307
FCME_GPNID_DONE ,
2306
2308
FCME_GFFID_DONE ,
2307
- FCME_DELETE_DONE ,
2308
2309
FCME_ADISC_DONE ,
2310
+ FCME_GNNID_DONE ,
2311
+ FCME_GFPNID_DONE ,
2309
2312
};
2310
2313
2311
2314
enum rscn_addr_format {
@@ -2338,6 +2341,7 @@ typedef struct fc_port {
2338
2341
unsigned int login_pause :1 ;
2339
2342
unsigned int login_succ :1 ;
2340
2343
unsigned int query :1 ;
2344
+ unsigned int id_changed :1 ;
2341
2345
2342
2346
struct work_struct nvme_del_work ;
2343
2347
struct completion nvme_del_done ;
@@ -2485,6 +2489,11 @@ static const char * const port_state_str[] = {
2485
2489
#define GA_NXT_REQ_SIZE (16 + 4)
2486
2490
#define GA_NXT_RSP_SIZE (16 + 620)
2487
2491
2492
+ #define GPN_FT_CMD 0x172
2493
+ #define GPN_FT_REQ_SIZE (16 + 4)
2494
+ #define GNN_FT_CMD 0x173
2495
+ #define GNN_FT_REQ_SIZE (16 + 4)
2496
+
2488
2497
#define GID_PT_CMD 0x1A1
2489
2498
#define GID_PT_REQ_SIZE (16 + 4)
2490
2499
@@ -2739,6 +2748,13 @@ struct ct_sns_req {
2739
2748
uint8_t port_id [3 ];
2740
2749
} port_id ;
2741
2750
2751
+ struct {
2752
+ uint8_t reserved ;
2753
+ uint8_t domain ;
2754
+ uint8_t area ;
2755
+ uint8_t port_type ;
2756
+ } gpn_ft ;
2757
+
2742
2758
struct {
2743
2759
uint8_t port_type ;
2744
2760
uint8_t domain ;
@@ -2852,6 +2868,27 @@ struct ct_sns_gid_pt_data {
2852
2868
uint8_t port_id [3 ];
2853
2869
};
2854
2870
2871
+ /* It's the same for both GPN_FT and GNN_FT */
2872
+ struct ct_sns_gpnft_rsp {
2873
+ struct {
2874
+ struct ct_cmd_hdr header ;
2875
+ uint16_t response ;
2876
+ uint16_t residual ;
2877
+ uint8_t fragment_id ;
2878
+ uint8_t reason_code ;
2879
+ uint8_t explanation_code ;
2880
+ uint8_t vendor_unique ;
2881
+ };
2882
+ /* Assume the largest number of targets for the union */
2883
+ struct ct_sns_gpn_ft_data {
2884
+ u8 control_byte ;
2885
+ u8 port_id [3 ];
2886
+ u32 reserved ;
2887
+ u8 port_name [8 ];
2888
+ } entries [1 ];
2889
+ };
2890
+
2891
+ /* CT command response */
2855
2892
struct ct_sns_rsp {
2856
2893
struct ct_rsp_hdr header ;
2857
2894
@@ -2927,6 +2964,24 @@ struct ct_sns_pkt {
2927
2964
} p ;
2928
2965
};
2929
2966
2967
+ struct ct_sns_gpnft_pkt {
2968
+ union {
2969
+ struct ct_sns_req req ;
2970
+ struct ct_sns_gpnft_rsp rsp ;
2971
+ } p ;
2972
+ };
2973
+
2974
+ struct fab_scan_rp {
2975
+ port_id_t id ;
2976
+ u8 port_name [8 ];
2977
+ u8 node_name [8 ];
2978
+ };
2979
+
2980
+ struct fab_scan {
2981
+ struct fab_scan_rp * l ;
2982
+ u32 size ;
2983
+ };
2984
+
2930
2985
/*
2931
2986
* SNS command structures -- for 2200 compatibility.
2932
2987
*/
@@ -3143,6 +3198,11 @@ enum qla_work_type {
3143
3198
QLA_EVT_RELOGIN ,
3144
3199
QLA_EVT_ASYNC_PRLO ,
3145
3200
QLA_EVT_ASYNC_PRLO_DONE ,
3201
+ QLA_EVT_GPNFT ,
3202
+ QLA_EVT_GPNFT_DONE ,
3203
+ QLA_EVT_GNNFT_DONE ,
3204
+ QLA_EVT_GNNID ,
3205
+ QLA_EVT_GFPNID ,
3146
3206
};
3147
3207
3148
3208
@@ -3184,7 +3244,9 @@ struct qla_work_evt {
3184
3244
struct {
3185
3245
port_id_t id ;
3186
3246
u8 port_name [8 ];
3247
+ u8 node_name [8 ];
3187
3248
void * pla ;
3249
+ u8 fc4_type ;
3188
3250
} new_sess ;
3189
3251
struct { /*Get PDB, Get Speed, update fcport, gnl, gidpn */
3190
3252
fc_port_t * fcport ;
@@ -3195,6 +3257,9 @@ struct qla_work_evt {
3195
3257
u8 iocb [IOCB_SIZE ];
3196
3258
int type ;
3197
3259
} nack ;
3260
+ struct {
3261
+ u8 fc4_type ;
3262
+ } gpnft ;
3198
3263
} u ;
3199
3264
};
3200
3265
@@ -3729,6 +3794,8 @@ struct qla_hw_data {
3729
3794
(IS_QLA81XX(ha) || IS_QLA83XX(ha) || IS_QLA27XX(ha))
3730
3795
#define IS_EXLOGIN_OFFLD_CAPABLE (ha ) \
3731
3796
(IS_QLA25XX(ha) || IS_QLA81XX(ha) || IS_QLA83XX(ha) || IS_QLA27XX(ha))
3797
+ #define USE_ASYNC_SCAN (ha ) (IS_QLA25XX(ha) || IS_QLA81XX(ha) ||\
3798
+ IS_QLA83XX(ha) || IS_QLA27XX(ha))
3732
3799
3733
3800
/* HBA serial number */
3734
3801
uint8_t serial0 ;
@@ -3811,7 +3878,7 @@ struct qla_hw_data {
3811
3878
int exchoffld_size ;
3812
3879
int exchoffld_count ;
3813
3880
3814
- void * swl ;
3881
+ void * swl ;
3815
3882
3816
3883
/* These are used by mailbox operations. */
3817
3884
uint16_t mailbox_out [MAILBOX_REGISTER_COUNT ];
@@ -4271,6 +4338,7 @@ typedef struct scsi_qla_host {
4271
4338
uint8_t n2n_port_name [WWN_SIZE ];
4272
4339
uint16_t n2n_id ;
4273
4340
struct list_head gpnid_list ;
4341
+ struct fab_scan scan ;
4274
4342
} scsi_qla_host_t ;
4275
4343
4276
4344
struct qla27xx_image_status {
0 commit comments