Lines Matching defs:fnic

6 #include "fnic.h"
14 * @fnic: Handle to fnic driver instance
16 void fnic_fcoe_reset_vlans(struct fnic *fnic)
21 spin_lock_irqsave(&fnic->vlans_lock, flags);
22 if (!list_empty(&fnic->vlan_list)) {
23 list_for_each_entry_safe(vlan, next, &fnic->vlan_list, list) {
29 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
30 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
36 * @fnic: Handle to fnic driver instance
38 void fnic_fcoe_send_vlan_req(struct fnic *fnic)
41 struct fnic_iport_s *iport = &fnic->iport;
42 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
49 FNIC_FIP_DBG(KERN_ERR, fnic->host, fnic->fnic_num,
54 fnic_fcoe_reset_vlans(fnic);
56 fnic->set_vlan(fnic, 0);
57 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
60 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
84 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
89 mod_timer(&fnic->retry_fip_timer, round_jiffies(vlan_tov));
90 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
97 * @fnic: Handle to fnic driver instance
102 void fnic_fcoe_process_vlan_resp(struct fnic *fnic, struct fip_header *fiph)
106 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
114 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
115 "fnic 0x%p got vlan resp\n", fnic);
118 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
121 spin_lock_irqsave(&fnic->vlans_lock, flags);
131 FNIC_FIP_DBG(KERN_INFO, fnic->host,
132 fnic->fnic_num,
139 FNIC_FIP_DBG(KERN_INFO, fnic->host,
140 fnic->fnic_num,
146 FNIC_FIP_DBG(KERN_INFO, fnic->host,
147 fnic->fnic_num,
149 spin_unlock_irqrestore(&fnic->vlans_lock,
155 list_add_tail(&vlan->list, &fnic->vlan_list);
158 FNIC_FIP_DBG(KERN_INFO, fnic->host,
159 fnic->fnic_num,
173 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
174 "fnic 0x%p No VLAN descriptors in FIP VLAN response\n",
175 fnic);
178 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
186 * @fnic: Handle to fnic driver instance
188 void fnic_fcoe_start_fcf_discovery(struct fnic *fnic)
191 struct fnic_iport_s *iport = &fnic->iport;
198 FNIC_FIP_DBG(KERN_ERR, fnic->host, fnic->fnic_num,
225 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
232 mod_timer(&fnic->retry_fip_timer, round_jiffies(fcs_tov));
237 * @fnic: Handle to fnic driver instance
249 void fnic_fcoe_fip_discovery_resp(struct fnic *fnic, struct fip_header *fiph)
251 struct fnic_iport_s *iport = &fnic->iport;
260 FNIC_FIP_DBG(KERN_INFO, fnic->host,
261 fnic->fnic_num,
262 "fnic 0x%p Solicited adv\n", fnic);
268 FNIC_FIP_DBG(KERN_INFO, fnic->host,
269 fnic->fnic_num,
270 "fnic 0x%p FCF Available\n", fnic);
277 FNIC_FIP_DBG(KERN_INFO, fnic->host,
278 fnic->fnic_num, "adv time %d",
297 fnic->host,
298 fnic->fnic_num,
318 mod_timer(&fnic->fcs_ka_timer,
321 if (timer_pending(&fnic->fcs_ka_timer))
322 timer_delete_sync(&fnic->fcs_ka_timer);
331 mod_timer(&fnic->enode_ka_timer,
338 mod_timer(&fnic->vn_ka_timer,
352 * @fnic: Handle to fnic driver instance
354 void fnic_fcoe_start_flogi(struct fnic *fnic)
357 struct fnic_iport_s *iport = &fnic->iport;
365 FNIC_FIP_DBG(KERN_ERR, fnic->host, fnic->fnic_num,
418 FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
420 mempool_free(frame, fnic->frame_pool);
430 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
436 flogi_tov = jiffies + msecs_to_jiffies(fnic->config.flogi_timeout);
437 mod_timer(&fnic->retry_fip_timer, round_jiffies(flogi_tov));
442 * @fnic: Handle to fnic driver instance
448 void fnic_fcoe_process_flogi_resp(struct fnic *fnic, struct fip_header *fiph)
450 struct fnic_iport_s *iport = &fnic->iport;
457 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
460 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
461 "fnic 0x%p FIP FLOGI rsp\n", fnic);
464 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
474 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
487 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
495 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
496 "fnic 0x%p rsp for pending FLOGI\n", fnic);
500 timer_delete_sync(&fnic->retry_fip_timer);
505 FNIC_FIP_DBG(KERN_INFO, fnic->host,
506 fnic->fnic_num,
507 "fnic 0x%p FLOGI success\n", fnic);
516 memcpy(fnic->iport.fcfmac, iport->selected_fcf.fcf_mac,
518 vnic_dev_add_addr(fnic->vdev, flogi_rsp->mac_desc.fd_mac);
522 FNIC_FIP_DBG(KERN_INFO, fnic->host,
523 fnic->fnic_num,
524 "fnic 0x%p flogi registration failed\n",
525 fnic);
531 FNIC_FIP_DBG(KERN_INFO, fnic->host,
532 fnic->fnic_num, "iport->state:%d\n",
542 mod_timer(&fnic->enode_ka_timer,
548 mod_timer(&fnic->vn_ka_timer,
559 fnic_fcoe_send_vlan_req(fnic);
569 * @fnic: Handle to fnic driver instance
571 void fnic_common_fip_cleanup(struct fnic *fnic)
574 struct fnic_iport_s *iport = &fnic->iport;
578 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
579 "fnic 0x%p fip cleanup\n", fnic);
583 timer_delete_sync(&fnic->retry_fip_timer);
584 timer_delete_sync(&fnic->fcs_ka_timer);
585 timer_delete_sync(&fnic->enode_ka_timer);
586 timer_delete_sync(&fnic->vn_ka_timer);
589 vnic_dev_del_addr(fnic->vdev, iport->fpma);
595 eth_zero_addr(fnic->iport.fcfmac);
601 fnic_fcoe_reset_vlans(fnic);
606 * @fnic: Handle to fnic driver instance
612 void fnic_fcoe_process_cvl(struct fnic *fnic, struct fip_header *fiph)
614 struct fnic_iport_s *iport = &fnic->iport;
620 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
621 "fnic 0x%p clear virtual link handler\n", fnic);
628 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
643 FNIC_FIP_DBG(KERN_INFO, fnic->host,
644 fnic->fnic_num,
658 fnic_common_fip_cleanup(fnic);
660 while (fnic->reset_in_progress == IN_PROGRESS) {
661 spin_unlock_irqrestore(&fnic->fnic_lock, fnic->lock_flags);
662 wait_for_completion_timeout(&fnic->reset_completion_wait,
664 spin_lock_irqsave(&fnic->fnic_lock, fnic->lock_flags);
667 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
669 fnic);
672 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
673 "fnic reset in progress. Link event needs to wait %p",
674 fnic);
676 fnic->reset_in_progress = IN_PROGRESS;
678 fnic->reset_in_progress = NOT_IN_PROGRESS;
679 complete(&fnic->reset_completion_wait);
680 fnic_fcoe_send_vlan_req(fnic);
686 * @fnic: Handle to fnic driver instance
689 int fdls_fip_recv_frame(struct fnic *fnic, void *frame)
702 fnic_debug_dump_fip_frame(fnic, eth, len, "Incoming");
705 fnic_fcoe_fip_discovery_resp(fnic, fiph);
707 fnic_fcoe_process_vlan_resp(fnic, fiph);
709 fnic_fcoe_process_cvl(fnic, fiph);
711 fnic_fcoe_process_flogi_resp(fnic, fiph);
717 FNIC_FCS_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
724 struct fnic *fnic = container_of(work, struct fnic, fip_timer_work);
725 struct fnic_iport_s *iport = &fnic->iport;
727 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
731 fnic_vlan_discovery_timeout(fnic);
735 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
740 fnic_scsi_fcpio_reset(iport->fnic);
744 fnic_fcoe_start_flogi(fnic);
753 mod_timer(&fnic->fcs_ka_timer,
757 FNIC_FIP_DBG(KERN_INFO, fnic->host,
758 fnic->fnic_num, "FCF Discovery timeout\n");
759 fnic_vlan_discovery_timeout(fnic);
763 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
765 if (iport->fip.flogi_retry < fnic->config.flogi_retries)
766 fnic_fcoe_start_flogi(fnic);
768 fnic_vlan_discovery_timeout(fnic);
780 struct fnic *fnic = timer_container_of(fnic, t, retry_fip_timer);
782 INIT_WORK(&fnic->fip_timer_work, fnic_work_on_fip_timer);
783 queue_work(fnic_fip_queue, &fnic->fip_timer_work);
793 struct fnic *fnic = timer_container_of(fnic, t, enode_ka_timer);
795 struct fnic_iport_s *iport = &fnic->iport;
810 FNIC_FIP_DBG(KERN_ERR, fnic->host, fnic->fnic_num,
831 FNIC_FIP_DBG(KERN_DEBUG, fnic->host, fnic->fnic_num,
836 mod_timer(&fnic->enode_ka_timer, round_jiffies(enode_ka_tov));
846 struct fnic *fnic = timer_container_of(fnic, t, vn_ka_timer);
848 struct fnic_iport_s *iport = &fnic->iport;
864 FNIC_FIP_DBG(KERN_ERR, fnic->host, fnic->fnic_num,
890 FNIC_FIP_DBG(KERN_DEBUG, fnic->host, fnic->fnic_num,
894 mod_timer(&fnic->vn_ka_timer, round_jiffies(vn_ka_tov));
899 * @fnic: Handle to fnic driver instance
904 void fnic_vlan_discovery_timeout(struct fnic *fnic)
907 struct fnic_iport_s *iport = &fnic->iport;
908 struct fnic_stats *fnic_stats = &fnic->fnic_stats;
911 spin_lock_irqsave(&fnic->fnic_lock, flags);
912 if (fnic->stop_rx_link_events) {
913 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
916 spin_unlock_irqrestore(&fnic->fnic_lock, flags);
921 spin_lock_irqsave(&fnic->vlans_lock, flags);
922 if (list_empty(&fnic->vlan_list)) {
924 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
925 fnic_fcoe_send_vlan_req(fnic);
929 vlan = list_first_entry(&fnic->vlan_list, struct fcoe_vlan, list);
940 if (list_empty(&fnic->vlan_list)) {
942 spin_unlock_irqrestore(&fnic->vlans_lock,
944 fnic_fcoe_send_vlan_req(fnic);
949 list_first_entry(&fnic->vlan_list, struct fcoe_vlan,
952 fnic->set_vlan(fnic, vlan->vid);
959 fnic->set_vlan(fnic, vlan->vid);
963 spin_unlock_irqrestore(&fnic->vlans_lock, flags);
964 fnic_fcoe_start_fcf_discovery(fnic);
976 struct fnic
977 *fnic = container_of(work, struct fnic, fip_timer_work);
978 struct fnic_iport_s *iport = &fnic->iport;
980 FNIC_FIP_DBG(KERN_INFO, fnic->host, fnic->fnic_num,
981 "fnic 0x%p fcs ka timeout\n", fnic);
983 fnic_common_fip_cleanup(fnic);
984 spin_lock_irqsave(&fnic->fnic_lock, fnic->lock_flags);
987 spin_unlock_irqrestore(&fnic->fnic_lock, fnic->lock_flags);
989 fnic_fcoe_send_vlan_req(fnic);
1001 struct fnic *fnic = timer_container_of(fnic, t, fcs_ka_timer);
1003 INIT_WORK(&fnic->fip_timer_work, fnic_work_on_fcs_ka_timer);
1004 queue_work(fnic_fip_queue, &fnic->fip_timer_work);