Lines Matching defs:fnic

21 #include "fnic.h"
30 static void fnic_set_eth_mode(struct fnic *);
31 static void fnic_fcoe_send_vlan_req(struct fnic *fnic);
32 static void fnic_fcoe_start_fcf_disc(struct fnic *fnic);
33 static void fnic_fcoe_process_vlan_resp(struct fnic *fnic, struct sk_buff *);
34 static int fnic_fcoe_vlan_check(struct fnic *fnic, u16 flag);
35 static int fnic_fcoe_handle_fip_frame(struct fnic *fnic, struct sk_buff *skb);
39 struct fnic *fnic = container_of(work, struct fnic, link_work);
45 spin_lock_irqsave(&fnic->fnic_lock, flags);
47 fnic->link_events = 1; /* less work to just set everytime*/
49 if (fnic->stop_rx_link_events) {
50 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
54 old_link_down_cnt = fnic->link_down_cnt;
55 old_link_status = fnic->link_status;
57 &fnic->fnic_stats.misc_stats.current_port_speed);
59 fnic->link_status = vnic_dev_link_status(fnic->vdev);
60 fnic->link_down_cnt = vnic_dev_link_down_cnt(fnic->vdev);
62 new_port_speed = vnic_dev_port_speed(fnic->vdev);
63 atomic64_set(&fnic->fnic_stats.misc_stats.current_port_speed,
66 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
70 switch (vnic_dev_port_speed(fnic->vdev)) {
72 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_10GBIT;
73 fnic->lport->link_supported_speeds = FC_PORTSPEED_10GBIT;
76 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_20GBIT;
77 fnic->lport->link_supported_speeds = FC_PORTSPEED_20GBIT;
80 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_25GBIT;
81 fnic->lport->link_supported_speeds = FC_PORTSPEED_25GBIT;
85 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_40GBIT;
86 fnic->lport->link_supported_speeds = FC_PORTSPEED_40GBIT;
89 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_100GBIT;
90 fnic->lport->link_supported_speeds = FC_PORTSPEED_100GBIT;
93 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_UNKNOWN;
94 fnic->lport->link_supported_speeds = FC_PORTSPEED_UNKNOWN;
98 if (old_link_status == fnic->link_status) {
99 if (!fnic->link_status) {
101 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
102 fnic_fc_trace_set_data(fnic->lport->host->host_no,
105 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
108 if (old_link_down_cnt != fnic->link_down_cnt) {
110 fnic->lport->host_stats.link_failure_count++;
111 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
113 fnic->lport->host->host_no,
118 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
120 fcoe_ctlr_link_down(&fnic->ctlr);
121 if (fnic->config.flags & VFCF_FIP_CAPABLE) {
124 fnic->lport->host->host_no,
130 fnic_fcoe_send_vlan_req(fnic);
133 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
135 fcoe_ctlr_link_up(&fnic->ctlr);
138 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
140 fnic->lport->host->host_no, FNIC_FC_LE,
143 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
147 } else if (fnic->link_status) {
149 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
150 if (fnic->config.flags & VFCF_FIP_CAPABLE) {
152 fnic_fc_trace_set_data(fnic->lport->host->host_no,
155 fnic_fcoe_send_vlan_req(fnic);
160 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
162 fnic_fc_trace_set_data(fnic->lport->host->host_no, FNIC_FC_LE,
164 fcoe_ctlr_link_up(&fnic->ctlr);
167 fnic->lport->host_stats.link_failure_count++;
168 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
169 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
172 fnic->lport->host->host_no, FNIC_FC_LE,
175 if (fnic->config.flags & VFCF_FIP_CAPABLE) {
176 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
178 del_timer_sync(&fnic->fip_timer);
180 fcoe_ctlr_link_down(&fnic->ctlr);
190 struct fnic *fnic = container_of(work, struct fnic, frame_work);
191 struct fc_lport *lp = fnic->lport;
196 while ((skb = skb_dequeue(&fnic->frame_queue))) {
198 spin_lock_irqsave(&fnic->fnic_lock, flags);
199 if (fnic->stop_rx_link_events) {
200 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
210 if (fnic->state != FNIC_IN_FC_MODE &&
211 fnic->state != FNIC_IN_ETH_MODE) {
212 skb_queue_head(&fnic->frame_queue, skb);
213 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
216 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
222 void fnic_fcoe_evlist_free(struct fnic *fnic)
228 spin_lock_irqsave(&fnic->fnic_lock, flags);
229 if (list_empty(&fnic->evlist)) {
230 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
234 list_for_each_entry_safe(fevt, next, &fnic->evlist, list) {
238 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
243 struct fnic *fnic = container_of(work, struct fnic, event_work);
248 spin_lock_irqsave(&fnic->fnic_lock, flags);
249 if (list_empty(&fnic->evlist)) {
250 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
254 list_for_each_entry_safe(fevt, next, &fnic->evlist, list) {
255 if (fnic->stop_rx_link_events) {
258 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
265 if (fnic->state != FNIC_IN_FC_MODE &&
266 fnic->state != FNIC_IN_ETH_MODE) {
267 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
274 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
275 fnic_fcoe_send_vlan_req(fnic);
276 spin_lock_irqsave(&fnic->fnic_lock, flags);
279 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
281 fnic_fcoe_start_fcf_disc(fnic);
284 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
290 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
366 static void fnic_fcoe_send_vlan_req(struct fnic *fnic)
368 struct fcoe_ctlr *fip = &fnic->ctlr;
369 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
375 fnic_fcoe_reset_vlans(fnic);
376 fnic->set_vlan(fnic, 0);
379 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
416 mod_timer(&fnic->fip_timer, round_jiffies(vlan_tov));
419 static void fnic_fcoe_process_vlan_resp(struct fnic *fnic, struct sk_buff *skb)
421 struct fcoe_ctlr *fip = &fnic->ctlr;
424 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
432 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
437 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
442 fnic_fcoe_reset_vlans(fnic);
443 spin_lock_irqsave(&fnic->vlans_lock, flags);
450 shost_printk(KERN_INFO, fnic->lport->host,
455 spin_unlock_irqrestore(&fnic->vlans_lock,
461 list_add_tail(&vlan->list, &fnic->vlans);
469 if (list_empty(&fnic->vlans)) {
472 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
474 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
478 vlan = list_first_entry(&fnic->vlans, struct fcoe_vlan, list);
479 fnic->set_vlan(fnic, vlan->vid);
482 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
488 mod_timer(&fnic->fip_timer, round_jiffies(sol_time));
493 static void fnic_fcoe_start_fcf_disc(struct fnic *fnic)
499 spin_lock_irqsave(&fnic->vlans_lock, flags);
500 vlan = list_first_entry(&fnic->vlans, struct fcoe_vlan, list);
501 fnic->set_vlan(fnic, vlan->vid);
504 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
507 fcoe_ctlr_link_up(&fnic->ctlr);
510 mod_timer(&fnic->fip_timer, round_jiffies(sol_time));
513 static int fnic_fcoe_vlan_check(struct fnic *fnic, u16 flag)
518 spin_lock_irqsave(&fnic->vlans_lock, flags);
519 if (list_empty(&fnic->vlans)) {
520 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
524 fvlan = list_first_entry(&fnic->vlans, struct fcoe_vlan, list);
526 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
532 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
535 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
539 static void fnic_event_enq(struct fnic *fnic, enum fnic_evt ev)
548 fevt->fnic = fnic;
551 spin_lock_irqsave(&fnic->fnic_lock, flags);
552 list_add_tail(&fevt->list, &fnic->evlist);
553 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
555 schedule_work(&fnic->event_work);
558 static int fnic_fcoe_handle_fip_frame(struct fnic *fnic, struct sk_buff *skb)
582 if (fnic_fcoe_vlan_check(fnic, ntohs(fiph->fip_flags)))
588 fnic_fcoe_process_vlan_resp(fnic, skb);
592 fnic_event_enq(fnic, FNIC_EVT_START_VLAN_DISC);
602 struct fnic *fnic = container_of(work, struct fnic, fip_frame_work);
603 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
608 while ((skb = skb_dequeue(&fnic->fip_frame_queue))) {
609 spin_lock_irqsave(&fnic->fnic_lock, flags);
610 if (fnic->stop_rx_link_events) {
611 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
619 if (fnic->state != FNIC_IN_FC_MODE &&
620 fnic->state != FNIC_IN_ETH_MODE) {
621 skb_queue_head(&fnic->fip_frame_queue, skb);
622 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
625 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
629 if (fnic_fcoe_handle_fip_frame(fnic, skb) <= 0) {
637 if (is_fnic_fip_flogi_reject(&fnic->ctlr, skb)) {
640 shost_printk(KERN_INFO, fnic->lport->host,
642 fcoe_ctlr_link_down(&fnic->ctlr);
644 fnic_fcoe_send_vlan_req(fnic);
648 fcoe_ctlr_recv(&fnic->ctlr, skb);
656 * @fnic: fnic instance.
659 static inline int fnic_import_rq_eth_pkt(struct fnic *fnic, struct sk_buff *skb)
676 if (!(fnic->config.flags & VFCF_FIP_CAPABLE)) {
682 if ((fnic_fc_trace_set_data(fnic->lport->host->host_no,
684 printk(KERN_ERR "fnic ctlr frame trace error!!!");
686 skb_queue_tail(&fnic->fip_frame_queue, skb);
687 queue_work(fnic_fip_queue, &fnic->fip_frame_work);
716 * @fnic: fnic instance.
719 * Called with the fnic lock held.
721 void fnic_update_mac_locked(struct fnic *fnic, u8 *new)
723 u8 *ctl = fnic->ctlr.ctl_src_addr;
724 u8 *data = fnic->data_src_addr;
730 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
733 vnic_dev_del_addr(fnic->vdev, data);
736 vnic_dev_add_addr(fnic->vdev, new);
746 struct fnic *fnic = lport_priv(lport);
748 spin_lock_irq(&fnic->fnic_lock);
749 fnic_update_mac_locked(fnic, new);
750 spin_unlock_irq(&fnic->fnic_lock);
769 struct fnic *fnic = lport_priv(lport);
773 FNIC_FCS_DBG(KERN_DEBUG, lport->host, fnic->fnic_num,
782 fnic_update_mac(lport, fnic->ctlr.ctl_src_addr);
783 fnic_set_eth_mode(fnic);
791 fcoe_ctlr_recv_flogi(&fnic->ctlr, lport, fp);
797 spin_lock_irq(&fnic->fnic_lock);
798 if (fnic->state == FNIC_IN_ETH_MODE || fnic->state == FNIC_IN_FC_MODE)
799 fnic->state = FNIC_IN_ETH_TRANS_FC_MODE;
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));
804 spin_unlock_irq(&fnic->fnic_lock);
807 spin_unlock_irq(&fnic->fnic_lock);
813 ret = fnic_flogi_reg_handler(fnic, port_id);
816 spin_lock_irq(&fnic->fnic_lock);
817 if (fnic->state == FNIC_IN_ETH_TRANS_FC_MODE)
818 fnic->state = FNIC_IN_ETH_MODE;
819 spin_unlock_irq(&fnic->fnic_lock);
828 struct fnic *fnic = vnic_dev_priv(rq->vdev);
831 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
846 dma_unmap_single(&fnic->pdev->dev, buf->dma_addr, buf->len,
880 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
884 if (fnic_import_rq_eth_pkt(fnic, skb))
889 shost_printk(KERN_ERR, fnic->lport->host,
890 "fnic rq_cmpl wrong cq type x%x\n", type);
896 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
897 "fnic rq_cmpl fcoe x%x fcsok x%x"
905 spin_lock_irqsave(&fnic->fnic_lock, flags);
906 if (fnic->stop_rx_link_events) {
907 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
910 fr_dev(fp) = fnic->lport;
911 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
912 if ((fnic_fc_trace_set_data(fnic->lport->host->host_no, FNIC_FC_RECV,
914 printk(KERN_ERR "fnic ctlr frame trace error!!!");
917 skb_queue_tail(&fnic->frame_queue, skb);
918 queue_work(fnic_event_queue, &fnic->frame_work);
930 struct fnic *fnic = vnic_dev_priv(vdev);
932 vnic_rq_service(&fnic->rq[q_number], cq_desc, completed_index,
938 int fnic_rq_cmpl_handler(struct fnic *fnic, int rq_work_to_do)
944 for (i = 0; i < fnic->rq_count; i++) {
945 cur_work_done = vnic_cq_service(&fnic->cq[i], rq_work_to_do,
949 err = vnic_rq_fill(&fnic->rq[i], fnic_alloc_rq_frame);
951 shost_printk(KERN_ERR, fnic->lport->host,
968 struct fnic *fnic = vnic_dev_priv(rq->vdev);
977 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
985 pa = dma_map_single(&fnic->pdev->dev, skb->data, len, DMA_FROM_DEVICE);
986 if (dma_mapping_error(&fnic->pdev->dev, pa)) {
1003 struct fnic *fnic = vnic_dev_priv(rq->vdev);
1005 dma_unmap_single(&fnic->pdev->dev, buf->dma_addr, buf->len,
1019 struct fnic *fnic = fnic_from_ctlr(fip);
1020 struct vnic_wq *wq = &fnic->wq[0];
1026 if (!fnic->vlan_hw_insert) {
1032 vlan_hdr->h_vlan_TCI = htons(fnic->vlan_id);
1033 if ((fnic_fc_trace_set_data(fnic->lport->host->host_no,
1035 printk(KERN_ERR "fnic ctlr frame trace error!!!");
1038 if ((fnic_fc_trace_set_data(fnic->lport->host->host_no,
1040 printk(KERN_ERR "fnic ctlr frame trace error!!!");
1044 pa = dma_map_single(&fnic->pdev->dev, skb->data, skb->len,
1046 if (dma_mapping_error(&fnic->pdev->dev, pa)) {
1051 spin_lock_irqsave(&fnic->wq_lock[0], flags);
1057 fnic->vlan_id, 1);
1058 spin_unlock_irqrestore(&fnic->wq_lock[0], flags);
1062 spin_unlock_irqrestore(&fnic->wq_lock[0], flags);
1063 dma_unmap_single(&fnic->pdev->dev, pa, skb->len, DMA_TO_DEVICE);
1071 static int fnic_send_frame(struct fnic *fnic, struct fc_frame *fp)
1073 struct vnic_wq *wq = &fnic->wq[0];
1088 fcoe_ctlr_els_send(&fnic->ctlr, fnic->lport, skb))
1091 if (!fnic->vlan_hw_insert) {
1097 vlan_hdr->h_vlan_TCI = htons(fnic->vlan_id);
1106 if (fnic->ctlr.map_dest)
1109 memcpy(eth_hdr->h_dest, fnic->ctlr.dest_addr, ETH_ALEN);
1110 memcpy(eth_hdr->h_source, fnic->data_src_addr, ETH_ALEN);
1120 pa = dma_map_single(&fnic->pdev->dev, eth_hdr, tot_len, DMA_TO_DEVICE);
1121 if (dma_mapping_error(&fnic->pdev->dev, pa)) {
1127 if ((fnic_fc_trace_set_data(fnic->lport->host->host_no, FNIC_FC_SEND,
1129 printk(KERN_ERR "fnic ctlr frame trace error!!!");
1132 spin_lock_irqsave(&fnic->wq_lock[0], flags);
1135 dma_unmap_single(&fnic->pdev->dev, pa, tot_len, DMA_TO_DEVICE);
1142 fnic->vlan_id, 1, 1, 1);
1145 spin_unlock_irqrestore(&fnic->wq_lock[0], flags);
1160 struct fnic *fnic = lport_priv(lp);
1163 if (fnic->in_remove) {
1172 spin_lock_irqsave(&fnic->fnic_lock, flags);
1173 if (fnic->state != FNIC_IN_FC_MODE && fnic->state != FNIC_IN_ETH_MODE) {
1174 skb_queue_tail(&fnic->tx_queue, fp_skb(fp));
1175 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
1178 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
1180 return fnic_send_frame(fnic, fp);
1195 struct fnic *fnic = container_of(work, struct fnic, flush_work);
1199 while ((skb = skb_dequeue(&fnic->tx_queue))) {
1201 fnic_send_frame(fnic, fp);
1206 * fnic_set_eth_mode() - put fnic into ethernet mode.
1207 * @fnic: fnic device
1209 * Called without fnic lock held.
1211 static void fnic_set_eth_mode(struct fnic *fnic)
1217 spin_lock_irqsave(&fnic->fnic_lock, flags);
1219 old_state = fnic->state;
1224 fnic->state = FNIC_IN_FC_TRANS_ETH_MODE;
1225 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
1227 ret = fnic_fw_reset_handler(fnic);
1229 spin_lock_irqsave(&fnic->fnic_lock, flags);
1230 if (fnic->state != FNIC_IN_FC_TRANS_ETH_MODE)
1233 fnic->state = old_state;
1240 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
1249 struct fnic *fnic = vnic_dev_priv(wq->vdev);
1251 dma_unmap_single(&fnic->pdev->dev, buf->dma_addr, buf->len,
1262 struct fnic *fnic = vnic_dev_priv(vdev);
1265 spin_lock_irqsave(&fnic->wq_lock[q_number], flags);
1266 vnic_wq_service(&fnic->wq[q_number], cq_desc, completed_index,
1268 spin_unlock_irqrestore(&fnic->wq_lock[q_number], flags);
1273 int fnic_wq_cmpl_handler(struct fnic *fnic, int work_to_do)
1278 for (i = 0; i < fnic->raw_wq_count; i++) {
1279 wq_work_done += vnic_cq_service(&fnic->cq[fnic->rq_count+i],
1292 struct fnic *fnic = vnic_dev_priv(wq->vdev);
1294 dma_unmap_single(&fnic->pdev->dev, buf->dma_addr, buf->len,
1301 void fnic_fcoe_reset_vlans(struct fnic *fnic)
1312 spin_lock_irqsave(&fnic->vlans_lock, flags);
1313 if (!list_empty(&fnic->vlans)) {
1314 list_for_each_entry_safe(vlan, next, &fnic->vlans, list) {
1319 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
1322 void fnic_handle_fip_timer(struct fnic *fnic)
1326 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
1329 spin_lock_irqsave(&fnic->fnic_lock, flags);
1330 if (fnic->stop_rx_link_events) {
1331 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
1334 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
1336 if (fnic->ctlr.mode == FIP_MODE_NON_FIP)
1339 spin_lock_irqsave(&fnic->vlans_lock, flags);
1340 if (list_empty(&fnic->vlans)) {
1341 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
1345 shost_printk(KERN_DEBUG, fnic->lport->host,
1347 fnic_event_enq(fnic, FNIC_EVT_START_VLAN_DISC);
1351 vlan = list_first_entry(&fnic->vlans, struct fcoe_vlan, list);
1352 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
1357 FNIC_FCS_DBG(KERN_DEBUG, fnic->lport->host, fnic->fnic_num,
1359 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
1362 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
1366 shost_printk(KERN_DEBUG, fnic->lport->host,
1368 fnic_event_enq(fnic, FNIC_EVT_START_VLAN_DISC);
1376 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
1382 if (list_empty(&fnic->vlans)) {
1384 spin_unlock_irqrestore(&fnic->vlans_lock,
1386 FNIC_FCS_DBG(KERN_INFO, fnic->lport->host, fnic->fnic_num,
1389 fnic_event_enq(fnic, FNIC_EVT_START_VLAN_DISC);
1393 vlan = list_first_entry(&fnic->vlans, struct fcoe_vlan,
1395 fnic->set_vlan(fnic, vlan->vid);
1398 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
1403 mod_timer(&fnic->fip_timer, round_jiffies(sol_time));