Skip to content

Commit a6478b2

Browse files
Merge patch series "Introduce support for multiqueue (MQ) in fnic"
Karan Tilak Kumar <[email protected]> says: Hi Martin, reviewers, This cover letter describes the feature: add support for multiqueue (MQ) to fnic driver. Background: The Virtual Interface Card (VIC) firmware exposes several queues that can be configured for sending IOs and receiving IO responses. Unified Computing System Manager (UCSM) and Intersight Manager (IMM) allows users to configure the number of queues to be used for IOs. The number of IO queues to be used is stored in a configuration file by the VIC firmware. The fNIC driver reads the configuration file and sets the number of queues to be used. Previously, the driver was hard-coded to use only one queue. With this set of changes, the fNIC driver will configure itself to use multiple queues. This feature takes advantage of the block multiqueue layer to parallelize IOs being sent out of the VIC card. Here's a brief description of some of the salient patches: - vnic_scsi.h needs to be in sync with VIC firmware to be able to read the number of queues from the firmware config file. A patch has been created for this. - In an environment with many fnics (like we see in our customer environments), it is hard to distinguish which fnic is printing logs. Therefore, an fnic number has been included in the logs. - read the number of queues from the firmware config file. - include definitions in fnic.h to support multiqueue. - modify the interrupt service routines (ISRs) to read from the correct registers. The numbers that are used here come from discussions with the VIC firmware team. - track IO statistics for different queues. - remove usage of host_lock, and only use fnic_lock in the fnic driver. - use a hardware queue based spinlock to protect io_req. - replace the hard-coded zeroth queue with a hardware queue number. This presents a bulk of the changes. - modify the definition of fnic_queuecommand to accept multiqueue tags. - improve log messages, and indicate fnic number and multiqueue tags for effective debugging. Even though the patches have been made into a series, some patches are heavier than others. But, every effort has been made to keep the purpose of each patch as a single-purpose, and to compile cleanly. This patchset has been tested as a whole. Therefore, the tested-by fields have been added only to two patches in the set. All the individual patches compile cleanly. However, I've refrained from adding tested-by to most of the patches, so as to not mislead the reviewer/reader. A brief note on the unit tests: 1. Increase number of queues to 64. Load driver. Run IOs via Medusa. 12+ hour run successful. 2. Configure multipathing, and run link flaps on single link. IOs drop briefly, but pick up as expected. 3. Configure multipathing, and run link flaps on two links, with a 30 second delay in between. IOs drop briefly, but pick up as expected. Repeat the above tests with 1 queue and 32 queues. All tests were successful. Please consider this patch series for the next merge window. Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Martin K. Petersen <[email protected]>
2 parents fc1fbd1 + 53021c1 commit a6478b2

File tree

10 files changed

+847
-543
lines changed

10 files changed

+847
-543
lines changed

drivers/scsi/fnic/fnic.h

Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
#define DRV_NAME "fnic"
2929
#define DRV_DESCRIPTION "Cisco FCoE HBA Driver"
30-
#define DRV_VERSION "1.6.0.57"
30+
#define DRV_VERSION "1.7.0.0"
3131
#define PFX DRV_NAME ": "
3232
#define DFX DRV_NAME "%d: "
3333

@@ -36,7 +36,6 @@
3636
#define FNIC_MIN_IO_REQ 256 /* Min IO throttle count */
3737
#define FNIC_MAX_IO_REQ 1024 /* scsi_cmnd tag map entries */
3838
#define FNIC_DFLT_IO_REQ 256 /* Default scsi_cmnd tag map entries */
39-
#define FNIC_IO_LOCKS 64 /* IO locks: power of 2 */
4039
#define FNIC_DFLT_QUEUE_DEPTH 256
4140
#define FNIC_STATS_RATE_LIMIT 4 /* limit rate at which stats are pulled up */
4241

@@ -109,7 +108,7 @@ static inline u64 fnic_flags_and_state(struct scsi_cmnd *cmd)
109108
#define FNIC_ABT_TERM_DELAY_TIMEOUT 500 /* mSec */
110109

111110
#define FNIC_MAX_FCP_TARGET 256
112-
111+
#define FNIC_PCI_OFFSET 2
113112
/**
114113
* state_flags to identify host state along along with fnic's state
115114
**/
@@ -144,39 +143,56 @@ do { \
144143
} while (0); \
145144
} while (0)
146145

147-
#define FNIC_MAIN_DBG(kern_level, host, fmt, args...) \
146+
#define FNIC_MAIN_DBG(kern_level, host, fnic_num, fmt, args...) \
148147
FNIC_CHECK_LOGGING(FNIC_MAIN_LOGGING, \
149-
shost_printk(kern_level, host, fmt, ##args);)
148+
shost_printk(kern_level, host, \
149+
"fnic<%d>: %s: %d: " fmt, fnic_num,\
150+
__func__, __LINE__, ##args);)
150151

151-
#define FNIC_FCS_DBG(kern_level, host, fmt, args...) \
152+
#define FNIC_FCS_DBG(kern_level, host, fnic_num, fmt, args...) \
152153
FNIC_CHECK_LOGGING(FNIC_FCS_LOGGING, \
153-
shost_printk(kern_level, host, fmt, ##args);)
154+
shost_printk(kern_level, host, \
155+
"fnic<%d>: %s: %d: " fmt, fnic_num,\
156+
__func__, __LINE__, ##args);)
154157

155-
#define FNIC_SCSI_DBG(kern_level, host, fmt, args...) \
158+
#define FNIC_SCSI_DBG(kern_level, host, fnic_num, fmt, args...) \
156159
FNIC_CHECK_LOGGING(FNIC_SCSI_LOGGING, \
157-
shost_printk(kern_level, host, fmt, ##args);)
160+
shost_printk(kern_level, host, \
161+
"fnic<%d>: %s: %d: " fmt, fnic_num,\
162+
__func__, __LINE__, ##args);)
158163

159-
#define FNIC_ISR_DBG(kern_level, host, fmt, args...) \
164+
#define FNIC_ISR_DBG(kern_level, host, fnic_num, fmt, args...) \
160165
FNIC_CHECK_LOGGING(FNIC_ISR_LOGGING, \
161-
shost_printk(kern_level, host, fmt, ##args);)
166+
shost_printk(kern_level, host, \
167+
"fnic<%d>: %s: %d: " fmt, fnic_num,\
168+
__func__, __LINE__, ##args);)
162169

163170
#define FNIC_MAIN_NOTE(kern_level, host, fmt, args...) \
164171
shost_printk(kern_level, host, fmt, ##args)
165172

173+
#define FNIC_WQ_COPY_MAX 64
174+
#define FNIC_WQ_MAX 1
175+
#define FNIC_RQ_MAX 1
176+
#define FNIC_CQ_MAX (FNIC_WQ_COPY_MAX + FNIC_WQ_MAX + FNIC_RQ_MAX)
177+
#define FNIC_DFLT_IO_COMPLETIONS 256
178+
179+
#define FNIC_MQ_CQ_INDEX 2
180+
166181
extern const char *fnic_state_str[];
167182

168183
enum fnic_intx_intr_index {
169184
FNIC_INTX_WQ_RQ_COPYWQ,
170-
FNIC_INTX_ERR,
185+
FNIC_INTX_DUMMY,
171186
FNIC_INTX_NOTIFY,
187+
FNIC_INTX_ERR,
172188
FNIC_INTX_INTR_MAX,
173189
};
174190

175191
enum fnic_msix_intr_index {
176192
FNIC_MSIX_RQ,
177193
FNIC_MSIX_WQ,
178194
FNIC_MSIX_WQ_COPY,
179-
FNIC_MSIX_ERR_NOTIFY,
195+
FNIC_MSIX_ERR_NOTIFY = FNIC_MSIX_WQ_COPY + FNIC_WQ_COPY_MAX,
180196
FNIC_MSIX_INTR_MAX,
181197
};
182198

@@ -185,6 +201,7 @@ struct fnic_msix_entry {
185201
char devname[IFNAMSIZ + 11];
186202
irqreturn_t (*isr)(int, void *);
187203
void *devid;
204+
int irq_num;
188205
};
189206

190207
enum fnic_state {
@@ -194,12 +211,6 @@ enum fnic_state {
194211
FNIC_IN_ETH_TRANS_FC_MODE,
195212
};
196213

197-
#define FNIC_WQ_COPY_MAX 1
198-
#define FNIC_WQ_MAX 1
199-
#define FNIC_RQ_MAX 1
200-
#define FNIC_CQ_MAX (FNIC_WQ_COPY_MAX + FNIC_WQ_MAX + FNIC_RQ_MAX)
201-
#define FNIC_DFLT_IO_COMPLETIONS 256
202-
203214
struct mempool;
204215

205216
enum fnic_evt {
@@ -214,8 +225,16 @@ struct fnic_event {
214225
enum fnic_evt event;
215226
};
216227

228+
struct fnic_cpy_wq {
229+
unsigned long hw_lock_flags;
230+
u16 active_ioreq_count;
231+
u16 ioreq_table_size;
232+
____cacheline_aligned struct fnic_io_req **io_req_table;
233+
};
234+
217235
/* Per-instance private data structure */
218236
struct fnic {
237+
int fnic_num;
219238
struct fc_lport *lport;
220239
struct fcoe_ctlr ctlr; /* FIP FCoE controller structure */
221240
struct vnic_dev_bar bar0;
@@ -282,8 +301,8 @@ struct fnic {
282301
struct fnic_host_tag *tags;
283302
mempool_t *io_req_pool;
284303
mempool_t *io_sgl_pool[FNIC_SGL_NUM_CACHES];
285-
spinlock_t io_req_lock[FNIC_IO_LOCKS]; /* locks for scsi cmnds */
286304

305+
unsigned int copy_wq_base;
287306
struct work_struct link_work;
288307
struct work_struct frame_work;
289308
struct sk_buff_head frame_queue;
@@ -302,7 +321,9 @@ struct fnic {
302321
/*** FIP related data members -- end ***/
303322

304323
/* copy work queue cache line section */
305-
____cacheline_aligned struct vnic_wq_copy wq_copy[FNIC_WQ_COPY_MAX];
324+
____cacheline_aligned struct vnic_wq_copy hw_copy_wq[FNIC_WQ_COPY_MAX];
325+
____cacheline_aligned struct fnic_cpy_wq sw_copy_wq[FNIC_WQ_COPY_MAX];
326+
306327
/* completion queue cache line section */
307328
____cacheline_aligned struct vnic_cq cq[FNIC_CQ_MAX];
308329

@@ -330,6 +351,7 @@ extern const struct attribute_group *fnic_host_groups[];
330351

331352
void fnic_clear_intr_mode(struct fnic *fnic);
332353
int fnic_set_intr_mode(struct fnic *fnic);
354+
int fnic_set_intr_mode_msix(struct fnic *fnic);
333355
void fnic_free_intr(struct fnic *fnic);
334356
int fnic_request_intr(struct fnic *fnic);
335357

@@ -356,15 +378,15 @@ void fnic_scsi_cleanup(struct fc_lport *);
356378
void fnic_scsi_abort_io(struct fc_lport *);
357379
void fnic_empty_scsi_cleanup(struct fc_lport *);
358380
void fnic_exch_mgr_reset(struct fc_lport *, u32, u32);
359-
int fnic_wq_copy_cmpl_handler(struct fnic *fnic, int);
381+
int fnic_wq_copy_cmpl_handler(struct fnic *fnic, int copy_work_to_do, unsigned int cq_index);
360382
int fnic_wq_cmpl_handler(struct fnic *fnic, int);
361383
int fnic_flogi_reg_handler(struct fnic *fnic, u32);
362384
void fnic_wq_copy_cleanup_handler(struct vnic_wq_copy *wq,
363385
struct fcpio_host_req *desc);
364386
int fnic_fw_reset_handler(struct fnic *fnic);
365387
void fnic_terminate_rport_io(struct fc_rport *);
366388
const char *fnic_state_to_str(unsigned int state);
367-
389+
void fnic_mq_map_queues_cpus(struct Scsi_Host *host);
368390
void fnic_log_q_error(struct fnic *fnic);
369391
void fnic_handle_link_event(struct fnic *fnic);
370392

drivers/scsi/fnic/fnic_fcs.c

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ void fnic_handle_link(struct work_struct *work)
6363
atomic64_set(&fnic->fnic_stats.misc_stats.current_port_speed,
6464
new_port_speed);
6565
if (old_port_speed != new_port_speed)
66-
FNIC_MAIN_DBG(KERN_INFO, fnic->lport->host,
67-
"Current vnic speed set to : %llu\n",
66+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
67+
"Current vnic speed set to: %llu\n",
6868
new_port_speed);
6969

7070
switch (vnic_dev_port_speed(fnic->vdev)) {
@@ -102,6 +102,8 @@ void fnic_handle_link(struct work_struct *work)
102102
fnic_fc_trace_set_data(fnic->lport->host->host_no,
103103
FNIC_FC_LE, "Link Status: DOWN->DOWN",
104104
strlen("Link Status: DOWN->DOWN"));
105+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
106+
"down->down\n");
105107
} else {
106108
if (old_link_down_cnt != fnic->link_down_cnt) {
107109
/* UP -> DOWN -> UP */
@@ -113,7 +115,7 @@ void fnic_handle_link(struct work_struct *work)
113115
"Link Status:UP_DOWN_UP",
114116
strlen("Link_Status:UP_DOWN_UP")
115117
);
116-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
118+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
117119
"link down\n");
118120
fcoe_ctlr_link_down(&fnic->ctlr);
119121
if (fnic->config.flags & VFCF_FIP_CAPABLE) {
@@ -128,8 +130,8 @@ void fnic_handle_link(struct work_struct *work)
128130
fnic_fcoe_send_vlan_req(fnic);
129131
return;
130132
}
131-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
132-
"link up\n");
133+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
134+
"up->down->up: Link up\n");
133135
fcoe_ctlr_link_up(&fnic->ctlr);
134136
} else {
135137
/* UP -> UP */
@@ -138,6 +140,8 @@ void fnic_handle_link(struct work_struct *work)
138140
fnic->lport->host->host_no, FNIC_FC_LE,
139141
"Link Status: UP_UP",
140142
strlen("Link Status: UP_UP"));
143+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
144+
"up->up\n");
141145
}
142146
}
143147
} else if (fnic->link_status) {
@@ -153,21 +157,23 @@ void fnic_handle_link(struct work_struct *work)
153157
return;
154158
}
155159

156-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, "link up\n");
160+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
161+
"down->up: Link up\n");
157162
fnic_fc_trace_set_data(fnic->lport->host->host_no, FNIC_FC_LE,
158163
"Link Status: DOWN_UP", strlen("Link Status: DOWN_UP"));
159164
fcoe_ctlr_link_up(&fnic->ctlr);
160165
} else {
161166
/* UP -> DOWN */
162167
fnic->lport->host_stats.link_failure_count++;
163168
spin_unlock_irqrestore(&fnic->fnic_lock, flags);
164-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, "link down\n");
169+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
170+
"up->down: Link down\n");
165171
fnic_fc_trace_set_data(
166172
fnic->lport->host->host_no, FNIC_FC_LE,
167173
"Link Status: UP_DOWN",
168174
strlen("Link Status: UP_DOWN"));
169175
if (fnic->config.flags & VFCF_FIP_CAPABLE) {
170-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
176+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
171177
"deleting fip-timer during link-down\n");
172178
del_timer_sync(&fnic->fip_timer);
173179
}
@@ -270,12 +276,12 @@ void fnic_handle_event(struct work_struct *work)
270276
spin_lock_irqsave(&fnic->fnic_lock, flags);
271277
break;
272278
case FNIC_EVT_START_FCF_DISC:
273-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
279+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
274280
"Start FCF Discovery\n");
275281
fnic_fcoe_start_fcf_disc(fnic);
276282
break;
277283
default:
278-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
284+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
279285
"Unknown event 0x%x\n", fevt->event);
280286
break;
281287
}
@@ -370,7 +376,7 @@ static void fnic_fcoe_send_vlan_req(struct fnic *fnic)
370376
fnic->set_vlan(fnic, 0);
371377

372378
if (printk_ratelimit())
373-
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host,
379+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
374380
"Sending VLAN request...\n");
375381

376382
skb = dev_alloc_skb(sizeof(struct fip_vlan));
@@ -423,12 +429,12 @@ static void fnic_fcoe_process_vlan_resp(struct fnic *fnic, struct sk_buff *skb)
423429
u64 sol_time;
424430
unsigned long flags;
425431

426-
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host,
432+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
427433
"Received VLAN response...\n");
428434

429435
fiph = (struct fip_header *) skb->data;
430436

431-
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host,
437+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
432438
"Received VLAN response... OP 0x%x SUB_OP 0x%x\n",
433439
ntohs(fiph->fip_op), fiph->fip_subcode);
434440

@@ -463,7 +469,7 @@ static void fnic_fcoe_process_vlan_resp(struct fnic *fnic, struct sk_buff *skb)
463469
if (list_empty(&fnic->vlans)) {
464470
/* retry from timer */
465471
atomic64_inc(&fnic_stats->vlan_stats.resp_withno_vlanID);
466-
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host,
472+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
467473
"No VLAN descriptors in FIP VLAN response\n");
468474
spin_unlock_irqrestore(&fnic->vlans_lock, flags);
469475
goto out;
@@ -721,7 +727,8 @@ void fnic_update_mac_locked(struct fnic *fnic, u8 *new)
721727
new = ctl;
722728
if (ether_addr_equal(data, new))
723729
return;
724-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, "update_mac %pM\n", new);
730+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
731+
"update_mac %pM\n", new);
725732
if (!is_zero_ether_addr(data) && !ether_addr_equal(data, ctl))
726733
vnic_dev_del_addr(fnic->vdev, data);
727734
memcpy(data, new, ETH_ALEN);
@@ -763,8 +770,9 @@ void fnic_set_port_id(struct fc_lport *lport, u32 port_id, struct fc_frame *fp)
763770
u8 *mac;
764771
int ret;
765772

766-
FNIC_FCS_DBG(KERN_DEBUG, lport->host, "set port_id %x fp %p\n",
767-
port_id, fp);
773+
FNIC_FCS_DBG(KERN_DEBUG, lport->host, fnic->fnic_num,
774+
"set port_id 0x%x fp 0x%p\n",
775+
port_id, fp);
768776

769777
/*
770778
* If we're clearing the FC_ID, change to use the ctl_src_addr.
@@ -790,10 +798,9 @@ void fnic_set_port_id(struct fc_lport *lport, u32 port_id, struct fc_frame *fp)
790798
if (fnic->state == FNIC_IN_ETH_MODE || fnic->state == FNIC_IN_FC_MODE)
791799
fnic->state = FNIC_IN_ETH_TRANS_FC_MODE;
792800
else {
793-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
794-
"Unexpected fnic state %s while"
795-
" processing flogi resp\n",
796-
fnic_state_to_str(fnic->state));
801+
FNIC_FCS_DBG(KERN_ERR, fnic->lport->host, fnic->fnic_num,
802+
"Unexpected fnic state: %s processing FLOGI response",
803+
fnic_state_to_str(fnic->state));
797804
spin_unlock_irq(&fnic->fnic_lock);
798805
return;
799806
}
@@ -870,7 +877,7 @@ static void fnic_rq_cmpl_frame_recv(struct vnic_rq *rq, struct cq_desc
870877
skb_trim(skb, bytes_written);
871878
if (!fcs_ok) {
872879
atomic64_inc(&fnic_stats->misc_stats.frame_errors);
873-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
880+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
874881
"fcs error. dropping packet.\n");
875882
goto drop;
876883
}
@@ -886,7 +893,7 @@ static void fnic_rq_cmpl_frame_recv(struct vnic_rq *rq, struct cq_desc
886893

887894
if (!fcs_ok || packet_error || !fcoe_fc_crc_ok || fcoe_enc_error) {
888895
atomic64_inc(&fnic_stats->misc_stats.frame_errors);
889-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
896+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
890897
"fnic rq_cmpl fcoe x%x fcsok x%x"
891898
" pkterr x%x fcoe_fc_crc_ok x%x, fcoe_enc_err"
892899
" x%x\n",
@@ -967,7 +974,7 @@ int fnic_alloc_rq_frame(struct vnic_rq *rq)
967974
len = FC_FRAME_HEADROOM + FC_MAX_FRAME + FC_FRAME_TAILROOM;
968975
skb = dev_alloc_skb(len);
969976
if (!skb) {
970-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
977+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
971978
"Unable to allocate RQ sk_buff\n");
972979
return -ENOMEM;
973980
}
@@ -1341,12 +1348,12 @@ void fnic_handle_fip_timer(struct fnic *fnic)
13411348
}
13421349

13431350
vlan = list_first_entry(&fnic->vlans, struct fcoe_vlan, list);
1344-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
1351+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
13451352
"fip_timer: vlan %d state %d sol_count %d\n",
13461353
vlan->vid, vlan->state, vlan->sol_count);
13471354
switch (vlan->state) {
13481355
case FIP_VLAN_USED:
1349-
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host,
1356+
FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
13501357
"FIP VLAN is selected for FC transaction\n");
13511358
spin_unlock_irqrestore(&fnic->vlans_lock, flags);
13521359
break;
@@ -1365,7 +1372,7 @@ void fnic_handle_fip_timer(struct fnic *fnic)
13651372
* no response on this vlan, remove from the list.
13661373
* Try the next vlan
13671374
*/
1368-
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host,
1375+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
13691376
"Dequeue this VLAN ID %d from list\n",
13701377
vlan->vid);
13711378
list_del(&vlan->list);
@@ -1375,7 +1382,7 @@ void fnic_handle_fip_timer(struct fnic *fnic)
13751382
/* we exhausted all vlans, restart vlan disc */
13761383
spin_unlock_irqrestore(&fnic->vlans_lock,
13771384
flags);
1378-
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host,
1385+
FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
13791386
"fip_timer: vlan list empty, "
13801387
"trigger vlan disc\n");
13811388
fnic_event_enq(fnic, FNIC_EVT_START_VLAN_DISC);

0 commit comments

Comments
 (0)