Lines Matching defs:fcf
98 * @fcf: The FCF to check
102 static inline int fcoe_ctlr_mtu_valid(const struct fcoe_fcf *fcf)
104 return (fcf->flags & FIP_FL_SOL) != 0;
109 * @fcf: The FCF to check
113 static inline int fcoe_ctlr_fcf_usable(struct fcoe_fcf *fcf)
117 return (fcf->flags & flags) == flags;
203 * The fcoe_sysfs layer can return a CONNECTED fcf that
204 * has a priv (fcf was never deleted) or a CONNECTED fcf
205 * that doesn't have a priv (fcf was deleted). However,
272 struct fcoe_fcf *fcf;
276 list_for_each_entry_safe(fcf, next, &fip->fcfs, list) {
277 fcoe_sysfs_fcf_del(fcf);
321 struct fcoe_fcf *fcf;
328 list_for_each_entry(fcf, &fip->fcfs, list)
329 fcf->flogi_sent = 0;
374 * @fcf: The destination FCF (if NULL, a multicast solicitation is sent)
376 static void fcoe_ctlr_solicit(struct fcoe_ctlr *fip, struct fcoe_fcf *fcf)
397 memcpy(sol->eth.h_dest, fcf ? fcf->fcf_mac : fcoe_all_fcfs, ETH_ALEN);
429 if (!fcf)
542 struct fcoe_fcf *fcf;
544 fcf = fip->sel_fcf;
546 if (!fcf || (ports && !lp->port_id))
556 memcpy(kal->eth.h_dest, fcf->fcf_mac, ETH_ALEN);
614 struct fcoe_fcf *fcf;
630 fcf = fip->sel_fcf;
631 if (!fcf)
633 fip_flags = fcf->flags;
638 memcpy(cap->eth.h_dest, fcf->fcf_mac, ETH_ALEN);
821 struct fcoe_fcf *fcf;
830 list_for_each_entry_safe(fcf, next, &fip->fcfs, list) {
831 deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2;
832 if (fip->sel_fcf == fcf) {
840 fip->lp->host->host_no, fcf->fabric_name,
846 deadline += fcf->fka_period;
848 if (fip->sel_fcf == fcf)
855 list_del(&fcf->list);
856 list_add(&fcf->list, &del_list);
861 if (fcoe_ctlr_mtu_valid(fcf) &&
862 (!sel_time || time_before(sel_time, fcf->time)))
863 sel_time = fcf->time;
867 list_for_each_entry_safe(fcf, next, &del_list, list) {
868 /* Removes fcf from current list */
869 fcoe_sysfs_fcf_del(fcf);
884 * @fcf: The resulting FCF entry
890 struct sk_buff *skb, struct fcoe_fcf *fcf)
902 memset(fcf, 0, sizeof(*fcf));
903 fcf->fka_period = msecs_to_jiffies(FCOE_CTLR_DEF_FKA);
906 fcf->flags = ntohs(fiph->fip_flags);
934 fcf->pri = ((struct fip_pri_desc *)desc)->fd_pri;
940 memcpy(fcf->fcf_mac,
943 memcpy(fcf->fcoe_mac, fcf->fcf_mac, ETH_ALEN);
944 if (!is_valid_ether_addr(fcf->fcf_mac)) {
947 fcf->fcf_mac);
956 fcf->switch_name = get_unaligned_be64(&wwn->fd_wwn);
963 fcf->fabric_name = get_unaligned_be64(&fab->fd_wwn);
964 fcf->vfid = ntohs(fab->fd_vfid);
965 fcf->fc_map = ntoh24(fab->fd_map);
973 fcf->fd_flags = 1;
976 fcf->fka_period = msecs_to_jiffies(t);
996 if (!fcf->fc_map || (fcf->fc_map & 0x10000))
998 if (!fcf->switch_name)
1020 struct fcoe_fcf *fcf;
1033 list_for_each_entry(fcf, &fip->fcfs, list) {
1034 if (fcf->switch_name == new.switch_name &&
1035 fcf->fabric_name == new.fabric_name &&
1036 fcf->fc_map == new.fc_map &&
1037 ether_addr_equal(fcf->fcf_mac, new.fcf_mac)) {
1046 fcf = kmalloc(sizeof(*fcf), GFP_ATOMIC);
1047 if (!fcf)
1050 memcpy(fcf, &new, sizeof(new));
1051 fcf->fip = fip;
1052 rc = fcoe_sysfs_fcf_add(fcf);
1057 kfree(fcf);
1067 fcf->fd_flags = new.fd_flags;
1068 if (!fcoe_ctlr_fcf_usable(fcf))
1069 fcf->flags = new.flags;
1071 if (fcf == fip->sel_fcf && !fcf->fd_flags) {
1072 fip->ctlr_ka_time -= fcf->fka_period;
1077 fcf->fka_period = new.fka_period;
1078 memcpy(fcf->fcf_mac, new.fcf_mac, ETH_ALEN);
1081 mtu_valid = fcoe_ctlr_mtu_valid(fcf);
1082 fcf->time = jiffies;
1085 fcf->fabric_name, fcf->fcf_mac);
1092 fcoe_ctlr_solicit(fip, fcf);
1110 list_move(&fcf->list, &fip->fcfs);
1117 fcoe_ctlr_fcf_usable(fcf)) {
1316 struct fcoe_fcf *fcf = fip->sel_fcf;
1328 if (!fcf) {
1346 if (!ether_addr_equal(eh->h_source, fcf->fcf_mac)) {
1404 if (!ether_addr_equal(mp->fd_mac, fcf->fcf_mac))
1412 if (get_unaligned_be64(&wp->fd_wwn) != fcf->switch_name)
1617 struct fcoe_fcf *fcf;
1620 list_for_each_entry(fcf, &fip->fcfs, list) {
1624 fcf->fabric_name, fcf->vfid, fcf->fcf_mac,
1625 fcf->fc_map, fcoe_ctlr_mtu_valid(fcf),
1626 fcf->flogi_sent, fcf->pri);
1627 if (!fcoe_ctlr_fcf_usable(fcf)) {
1630 fcf->fabric_name, fcf->fc_map,
1631 (fcf->flags & FIP_FL_SOL) ? "" : "in",
1632 (fcf->flags & FIP_FL_AVAIL) ?
1636 if (!best || fcf->pri < best->pri || best->flogi_sent)
1637 best = fcf;
1638 if (fcf->fabric_name != best->fabric_name ||
1639 fcf->vfid != best->vfid ||
1640 fcf->fc_map != best->fc_map) {
1707 struct fcoe_fcf *fcf;
1713 fcf = fcoe_ctlr_select(fip);
1714 if (!fcf || fcf->flogi_sent) {
1738 struct fcoe_fcf *fcf;
1741 fcf = fip->sel_fcf;
1742 if (!fcf || !fip->flogi_req_send)
1751 if (fcf->flogi_sent) {
1753 fcf = fcoe_ctlr_select(fip);
1754 if (!fcf || fcf->flogi_sent) {
1756 list_for_each_entry(fcf, &fip->fcfs, list)
1757 fcf->flogi_sent = 0;
1758 fcf = fcoe_ctlr_select(fip);
1761 if (fcf) {
1797 struct fcoe_fcf *fcf;
1809 fcf = fip->sel_fcf;
1823 else if (!sel && fcf)
2914 fip->mode == FIP_MODE_VN2VN ? "vn2vn" : "fcf",
3218 struct fcoe_fcf *fcf;
3223 fcf = fcoe_fcf_device_priv(fcf_dev);
3224 if (fcf)
3225 fcf_dev->selected = (fcf == fip->sel_fcf) ? 1 : 0;