Lines Matching refs:fcf
112 static int fcoe_fcf_set_dev_loss_tmo(struct fcoe_fcf_device *fcf, in fcoe_fcf_set_dev_loss_tmo() argument
115 if ((fcf->state == FCOE_FCF_STATE_UNKNOWN) || in fcoe_fcf_set_dev_loss_tmo()
116 (fcf->state == FCOE_FCF_STATE_DISCONNECTED) || in fcoe_fcf_set_dev_loss_tmo()
117 (fcf->state == FCOE_FCF_STATE_DELETED)) in fcoe_fcf_set_dev_loss_tmo()
125 fcoe_fcf_dev_loss_tmo(fcf) = val; in fcoe_fcf_set_dev_loss_tmo()
150 struct fcoe_fcf_device *fcf = dev_to_fcf(dev); \
151 struct fcoe_ctlr_device *ctlr = fcoe_fcf_dev_to_ctlr_dev(fcf); \
153 ctlr->f->get_fcoe_fcf_##field(fcf); \
155 cast fcoe_fcf_##field(fcf)); \
172 struct fcoe_fcf_device *fcf = dev_to_fcf(dev); \
173 return snprintf(buf, sz, format_string, cast fcoe_fcf_##field(fcf)); \
188 static FCOE_DEVICE_ATTR(fcf, field, S_IRUGO, \
193 static FCOE_DEVICE_ATTR(fcf, field, S_IRUGO, \
203 static FCOE_DEVICE_ATTR(fcf, field, S_IRUGO, \
233 struct fcoe_fcf_device *fcf = dev_to_fcf(dev); in fcoe_enum_name_search() local
235 name = get_fcoe_fcf_state_name(fcf->state); in fcoe_enum_name_search()
240 static FCOE_DEVICE_ATTR(fcf, state, S_IRUGO, show_fcf_state, NULL);
477 struct fcoe_fcf_device *fcf; in store_private_fcoe_ctlr_fcf_dev_loss_tmo() local
487 list_for_each_entry(fcf, &ctlr->fcfs, peers) in store_private_fcoe_ctlr_fcf_dev_loss_tmo()
488 fcoe_fcf_set_dev_loss_tmo(fcf, val); in store_private_fcoe_ctlr_fcf_dev_loss_tmo()
520 struct fcoe_fcf_device *fcf = dev_to_fcf(dev); in store_fcoe_fcf_dev_loss_tmo() local
528 rc = fcoe_fcf_set_dev_loss_tmo(fcf, val); in store_fcoe_fcf_dev_loss_tmo()
533 static FCOE_DEVICE_ATTR(fcf, dev_loss_tmo, S_IRUGO | S_IWUSR,
626 struct fcoe_fcf_device *fcf = dev_to_fcf(dev); in fcoe_fcf_device_release() local
627 kfree(fcf); in fcoe_fcf_device_release()
850 struct fcoe_fcf_device *fcf, *next; in fcoe_ctlr_device_delete() local
853 list_for_each_entry_safe(fcf, next, in fcoe_ctlr_device_delete()
855 list_del(&fcf->peers); in fcoe_ctlr_device_delete()
856 fcf->state = FCOE_FCF_STATE_DELETED; in fcoe_ctlr_device_delete()
857 fcoe_ctlr_device_queue_work(ctlr, &fcf->delete_work); in fcoe_ctlr_device_delete()
881 struct fcoe_fcf_device *fcf = in fcoe_fcf_device_final_delete() local
883 struct fcoe_ctlr_device *ctlr = fcoe_fcf_dev_to_ctlr_dev(fcf); in fcoe_fcf_device_final_delete()
890 if (!cancel_delayed_work(&fcf->dev_loss_work)) in fcoe_fcf_device_final_delete()
893 device_unregister(&fcf->dev); in fcoe_fcf_device_final_delete()
905 struct fcoe_fcf_device *fcf = in fip_timeout_deleted_fcf() local
907 struct fcoe_ctlr_device *ctlr = fcoe_fcf_dev_to_ctlr_dev(fcf); in fip_timeout_deleted_fcf()
917 if (fcf->state != FCOE_FCF_STATE_DISCONNECTED) in fip_timeout_deleted_fcf()
920 dev_printk(KERN_ERR, &fcf->dev, in fip_timeout_deleted_fcf()
923 list_del(&fcf->peers); in fip_timeout_deleted_fcf()
924 fcf->state = FCOE_FCF_STATE_DELETED; in fip_timeout_deleted_fcf()
925 fcoe_ctlr_device_queue_work(ctlr, &fcf->delete_work); in fip_timeout_deleted_fcf()
940 void fcoe_fcf_device_delete(struct fcoe_fcf_device *fcf) in fcoe_fcf_device_delete() argument
942 struct fcoe_ctlr_device *ctlr = fcoe_fcf_dev_to_ctlr_dev(fcf); in fcoe_fcf_device_delete()
943 int timeout = fcf->dev_loss_tmo; in fcoe_fcf_device_delete()
945 if (fcf->state != FCOE_FCF_STATE_CONNECTED) in fcoe_fcf_device_delete()
948 fcf->state = FCOE_FCF_STATE_DISCONNECTED; in fcoe_fcf_device_delete()
955 fcf->priv = NULL; in fcoe_fcf_device_delete()
957 fcoe_ctlr_device_queue_devloss_work(ctlr, &fcf->dev_loss_work, in fcoe_fcf_device_delete()
972 struct fcoe_fcf_device *fcf; in fcoe_fcf_device_add() local
975 list_for_each_entry(fcf, &ctlr->fcfs, peers) { in fcoe_fcf_device_add()
976 if (fcoe_fcf_device_match(new_fcf, fcf)) { in fcoe_fcf_device_add()
977 if (fcf->state == FCOE_FCF_STATE_CONNECTED) in fcoe_fcf_device_add()
978 return fcf; in fcoe_fcf_device_add()
980 fcf->state = FCOE_FCF_STATE_CONNECTED; in fcoe_fcf_device_add()
982 if (!cancel_delayed_work(&fcf->dev_loss_work)) in fcoe_fcf_device_add()
985 return fcf; in fcoe_fcf_device_add()
989 fcf = kzalloc(sizeof(struct fcoe_fcf_device), GFP_ATOMIC); in fcoe_fcf_device_add()
990 if (unlikely(!fcf)) in fcoe_fcf_device_add()
993 INIT_WORK(&fcf->delete_work, fcoe_fcf_device_final_delete); in fcoe_fcf_device_add()
994 INIT_DELAYED_WORK(&fcf->dev_loss_work, fip_timeout_deleted_fcf); in fcoe_fcf_device_add()
996 fcf->dev.parent = &ctlr->dev; in fcoe_fcf_device_add()
997 fcf->dev.bus = &fcoe_bus_type; in fcoe_fcf_device_add()
998 fcf->dev.type = &fcoe_fcf_device_type; in fcoe_fcf_device_add()
999 fcf->id = atomic_inc_return(&fcf_num) - 1; in fcoe_fcf_device_add()
1000 fcf->state = FCOE_FCF_STATE_UNKNOWN; in fcoe_fcf_device_add()
1002 fcf->dev_loss_tmo = ctlr->fcf_dev_loss_tmo; in fcoe_fcf_device_add()
1004 dev_set_name(&fcf->dev, "fcf_%d", fcf->id); in fcoe_fcf_device_add()
1006 fcf->fabric_name = new_fcf->fabric_name; in fcoe_fcf_device_add()
1007 fcf->switch_name = new_fcf->switch_name; in fcoe_fcf_device_add()
1008 fcf->fc_map = new_fcf->fc_map; in fcoe_fcf_device_add()
1009 fcf->vfid = new_fcf->vfid; in fcoe_fcf_device_add()
1010 memcpy(fcf->mac, new_fcf->mac, ETH_ALEN); in fcoe_fcf_device_add()
1011 fcf->priority = new_fcf->priority; in fcoe_fcf_device_add()
1012 fcf->fka_period = new_fcf->fka_period; in fcoe_fcf_device_add()
1013 fcf->selected = new_fcf->selected; in fcoe_fcf_device_add()
1015 error = device_register(&fcf->dev); in fcoe_fcf_device_add()
1017 put_device(&fcf->dev); in fcoe_fcf_device_add()
1021 fcf->state = FCOE_FCF_STATE_CONNECTED; in fcoe_fcf_device_add()
1022 list_add_tail(&fcf->peers, &ctlr->fcfs); in fcoe_fcf_device_add()
1024 return fcf; in fcoe_fcf_device_add()