fip 16 arch/x86/include/asm/fpu/types.h u32 fip; /* FPU IP Offset */ fip 45 arch/x86/include/asm/fpu/types.h u32 fip; /* FPU IP Offset */ fip 83 arch/x86/include/asm/fpu/types.h u32 fip; fip 12 arch/x86/include/asm/user32.h u32 fip; fip 25 arch/x86/include/asm/user32.h int fip; fip 49 arch/x86/include/asm/user_32.h long fip; fip 61 arch/x86/include/asm/user_32.h long fip; fip 244 arch/x86/kernel/fpu/regset.c env->fip = fxsave->rip; fip 258 arch/x86/kernel/fpu/regset.c env->fip = fxsave->fip; fip 281 arch/x86/kernel/fpu/regset.c fxsave->rip = env->fip; fip 285 arch/x86/kernel/fpu/regset.c fxsave->fip = env->fip; fip 47 arch/x86/math-emu/fpu_aux.c iaddr = (struct address *)&soft->fip; fip 104 arch/x86/math-emu/fpu_system.h #define instruction_address (*(struct address *)&I387->soft.fip) fip 93 arch/x86/um/signal.c env[3] = fxsave->fip; fip 129 arch/x86/um/signal.c fxsave->fip = env[3]; fip 1166 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h uint8_t fip[16]; /* foreign IP address (IPv4 in [3:0]) */ fip 651 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c memcpy(fwr->fip, f->fs.val.fip, sizeof(fwr->fip)); fip 652 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c memcpy(fwr->fipm, f->fs.mask.fip, sizeof(fwr->fipm)); fip 786 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c unsigned int fip = 0, fip_mask = 0; fip 813 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c fip |= fs->val.fip[i]; fip 814 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c fip_mask |= fs->mask.fip[i]; fip 820 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c if (fip && !fip_mask) fip 821 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c memset(fs->mask.fip, ~0, sizeof(fs->mask.lip)); fip 887 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c if (is_inaddr_any(fs->val.fip, AF_INET6) || fip 888 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c !is_addr_all_mask(fs->mask.fip, AF_INET6)) fip 895 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c if (is_inaddr_any(fs->val.fip, AF_INET) || fip 896 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c !is_addr_all_mask(fs->mask.fip, AF_INET)) fip 1024 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c req->peer_ip_hi = *(__be64 *)(&f->fs.val.fip); fip 1025 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c req->peer_ip_lo = *(((__be64 *)&f->fs.val.fip) + 1); fip 1064 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c memcpy(&req->peer_ip, f->fs.val.fip, 4); fip 125 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c memcpy(&fs->val.fip[0], &match.key->src, sizeof(match.key->src)); fip 127 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c memcpy(&fs->mask.fip[0], &match.mask->src, sizeof(match.mask->src)); fip 141 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c memcpy(&fs->val.fip[0], match.key->src.s6_addr, fip 145 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c memcpy(&fs->mask.fip[0], match.mask->src.s6_addr, fip 88 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->val.fip[0], &val, sizeof(u32)); fip 89 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->mask.fip[0], &mask, sizeof(u32)); fip 134 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->val.fip[0], &val, sizeof(u32)); fip 135 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->mask.fip[0], &mask, sizeof(u32)); fip 143 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->val.fip[4], &val, sizeof(u32)); fip 144 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->mask.fip[4], &mask, sizeof(u32)); fip 152 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->val.fip[8], &val, sizeof(u32)); fip 153 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->mask.fip[8], &mask, sizeof(u32)); fip 161 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->val.fip[12], &val, sizeof(u32)); fip 162 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32_parse.h memcpy(&f->mask.fip[12], &mask, sizeof(u32)); fip 197 drivers/net/ethernet/chelsio/cxgb4/t4fw_api.h __u8 fip[16]; fip 229 drivers/net/ethernet/chelsio/cxgb4/t4fw_api.h __u8 fip[16]; fip 863 drivers/scsi/bnx2fc/bnx2fc_els.c struct fcoe_ctlr *fip = arg; fip 892 drivers/scsi/bnx2fc/bnx2fc_els.c } else if (fip->sel_fcf && fip->sel_fcf->fc_map != 0) { fip 893 drivers/scsi/bnx2fc/bnx2fc_els.c hton24(fc_map, fip->sel_fcf->fc_map); fip 907 drivers/scsi/bnx2fc/bnx2fc_els.c fip->update_mac(lport, fcoe_mac); fip 915 drivers/scsi/bnx2fc/bnx2fc_els.c struct fcoe_ctlr *fip = arg; fip 921 drivers/scsi/bnx2fc/bnx2fc_els.c fip->update_mac(lport, zero_mac); fip 934 drivers/scsi/bnx2fc/bnx2fc_els.c struct fcoe_ctlr *fip = bnx2fc_to_ctlr(interface); fip 941 drivers/scsi/bnx2fc/bnx2fc_els.c fip, timeout); fip 947 drivers/scsi/bnx2fc/bnx2fc_els.c fip, timeout); fip 1104 drivers/scsi/bnx2fc/bnx2fc_fcoe.c static void bnx2fc_fip_send(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 1120 drivers/scsi/bnx2fc/bnx2fc_fcoe.c skb->dev = bnx2fc_from_ctlr(fip)->netdev; fip 293 drivers/scsi/fcoe/fcoe.c struct fcoe_ctlr *fip = fcoe_to_ctlr(fcoe); fip 323 drivers/scsi/fcoe/fcoe.c memcpy(fip->ctl_src_addr, ha->addr, ETH_ALEN); fip 324 drivers/scsi/fcoe/fcoe.c fip->spma = 1; fip 331 drivers/scsi/fcoe/fcoe.c if (!fip->spma) fip 332 drivers/scsi/fcoe/fcoe.c memcpy(fip->ctl_src_addr, netdev->dev_addr, netdev->addr_len); fip 341 drivers/scsi/fcoe/fcoe.c if (fip->spma) fip 342 drivers/scsi/fcoe/fcoe.c dev_uc_add(netdev, fip->ctl_src_addr); fip 343 drivers/scsi/fcoe/fcoe.c if (fip->mode == FIP_MODE_VN2VN) { fip 444 drivers/scsi/fcoe/fcoe.c struct fcoe_ctlr *fip = fcoe_to_ctlr(fcoe); fip 463 drivers/scsi/fcoe/fcoe.c if (fip->spma) fip 464 drivers/scsi/fcoe/fcoe.c dev_uc_del(netdev, fip->ctl_src_addr); fip 465 drivers/scsi/fcoe/fcoe.c if (fip->mode == FIP_MODE_VN2VN) { fip 489 drivers/scsi/fcoe/fcoe.c struct fcoe_ctlr *fip = fcoe_to_ctlr(fcoe); fip 493 drivers/scsi/fcoe/fcoe.c fcoe_ctlr_destroy(fip); fip 494 drivers/scsi/fcoe/fcoe.c scsi_host_put(fip->lp->host); fip 563 drivers/scsi/fcoe/fcoe.c static void fcoe_fip_send(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 565 drivers/scsi/fcoe/fcoe.c struct fcoe_interface *fcoe = fcoe_from_ctlr(fip); fip 568 drivers/scsi/fcoe/fcoe.c struct fip_header fip; fip 576 drivers/scsi/fcoe/fcoe.c ntohs(frame->fip.fip_op) == FIP_OP_VLAN && fip 581 drivers/scsi/fcoe/fcoe.c fcoe_port_send(lport_priv(fip->lp), skb); fip 2575 drivers/scsi/fcoe/fcoe.c struct fcoe_ctlr *fip = arg; fip 2586 drivers/scsi/fcoe/fcoe.c fcoe_ctlr_recv_flogi(fip, lport, fp); fip 2630 drivers/scsi/fcoe/fcoe.c struct fcoe_ctlr *fip = fcoe_to_ctlr(fcoe); fip 2639 drivers/scsi/fcoe/fcoe.c fip, timeout); fip 86 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_set_state(struct fcoe_ctlr *fip, enum fip_state state) fip 88 drivers/scsi/fcoe/fcoe_ctlr.c if (state == fip->state) fip 90 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->lp) fip 91 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "state %s -> %s\n", fip 92 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_state(fip->state), fcoe_ctlr_state(state)); fip 93 drivers/scsi/fcoe/fcoe_ctlr.c fip->state = state; fip 124 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_map_dest(struct fcoe_ctlr *fip) fip 126 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->mode == FIP_MODE_VN2VN) fip 127 drivers/scsi/fcoe/fcoe_ctlr.c hton24(fip->dest_addr, FIP_VN_FC_MAP); fip 129 drivers/scsi/fcoe/fcoe_ctlr.c hton24(fip->dest_addr, FIP_DEF_FC_MAP); fip 130 drivers/scsi/fcoe/fcoe_ctlr.c hton24(fip->dest_addr + 3, 0); fip 131 drivers/scsi/fcoe/fcoe_ctlr.c fip->map_dest = 1; fip 138 drivers/scsi/fcoe/fcoe_ctlr.c void fcoe_ctlr_init(struct fcoe_ctlr *fip, enum fip_mode mode) fip 140 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_LINK_WAIT); fip 141 drivers/scsi/fcoe/fcoe_ctlr.c fip->mode = mode; fip 142 drivers/scsi/fcoe/fcoe_ctlr.c fip->fip_resp = false; fip 143 drivers/scsi/fcoe/fcoe_ctlr.c INIT_LIST_HEAD(&fip->fcfs); fip 144 drivers/scsi/fcoe/fcoe_ctlr.c mutex_init(&fip->ctlr_mutex); fip 145 drivers/scsi/fcoe/fcoe_ctlr.c spin_lock_init(&fip->ctlr_lock); fip 146 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_oxid = FC_XID_UNKNOWN; fip 147 drivers/scsi/fcoe/fcoe_ctlr.c timer_setup(&fip->timer, fcoe_ctlr_timeout, 0); fip 148 drivers/scsi/fcoe/fcoe_ctlr.c INIT_WORK(&fip->timer_work, fcoe_ctlr_timer_work); fip 149 drivers/scsi/fcoe/fcoe_ctlr.c INIT_WORK(&fip->recv_work, fcoe_ctlr_recv_work); fip 150 drivers/scsi/fcoe/fcoe_ctlr.c skb_queue_head_init(&fip->fip_recv_list); fip 162 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip = new->fip; fip 167 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "New FCF fab %16.16llx mac %pM\n", fip 191 drivers/scsi/fcoe/fcoe_ctlr.c ctlr_dev = fcoe_ctlr_to_ctlr_dev(fip); fip 218 drivers/scsi/fcoe/fcoe_ctlr.c list_add(&new->list, &fip->fcfs); fip 219 drivers/scsi/fcoe/fcoe_ctlr.c fip->fcf_count++; fip 235 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip = new->fip; fip 240 drivers/scsi/fcoe/fcoe_ctlr.c fip->fcf_count--; fip 251 drivers/scsi/fcoe/fcoe_ctlr.c cdev = fcoe_ctlr_to_ctlr_dev(fip); fip 269 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_reset_fcfs(struct fcoe_ctlr *fip) fip 274 drivers/scsi/fcoe/fcoe_ctlr.c fip->sel_fcf = NULL; fip 275 drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry_safe(fcf, next, &fip->fcfs, list) { fip 278 drivers/scsi/fcoe/fcoe_ctlr.c WARN_ON(fip->fcf_count); fip 280 drivers/scsi/fcoe/fcoe_ctlr.c fip->sel_time = 0; fip 295 drivers/scsi/fcoe/fcoe_ctlr.c void fcoe_ctlr_destroy(struct fcoe_ctlr *fip) fip 297 drivers/scsi/fcoe/fcoe_ctlr.c cancel_work_sync(&fip->recv_work); fip 298 drivers/scsi/fcoe/fcoe_ctlr.c skb_queue_purge(&fip->fip_recv_list); fip 300 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 301 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_DISABLED); fip 302 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_reset_fcfs(fip); fip 303 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 304 drivers/scsi/fcoe/fcoe_ctlr.c del_timer_sync(&fip->timer); fip 305 drivers/scsi/fcoe/fcoe_ctlr.c cancel_work_sync(&fip->timer_work); fip 317 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_announce(struct fcoe_ctlr *fip) fip 322 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 323 drivers/scsi/fcoe/fcoe_ctlr.c spin_lock_bh(&fip->ctlr_lock); fip 325 drivers/scsi/fcoe/fcoe_ctlr.c kfree_skb(fip->flogi_req); fip 326 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_req = NULL; fip 327 drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry(fcf, &fip->fcfs, list) fip 330 drivers/scsi/fcoe/fcoe_ctlr.c spin_unlock_bh(&fip->ctlr_lock); fip 331 drivers/scsi/fcoe/fcoe_ctlr.c sel = fip->sel_fcf; fip 333 drivers/scsi/fcoe/fcoe_ctlr.c if (sel && ether_addr_equal(sel->fcf_mac, fip->dest_addr)) fip 335 drivers/scsi/fcoe/fcoe_ctlr.c if (!is_zero_ether_addr(fip->dest_addr)) { fip 338 drivers/scsi/fcoe/fcoe_ctlr.c fip->lp->host->host_no, fip->dest_addr); fip 339 drivers/scsi/fcoe/fcoe_ctlr.c memset(fip->dest_addr, 0, ETH_ALEN); fip 344 drivers/scsi/fcoe/fcoe_ctlr.c fip->lp->host->host_no, sel->fcf_mac); fip 345 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(fip->dest_addr, sel->fcoe_mac, ETH_ALEN); fip 346 drivers/scsi/fcoe/fcoe_ctlr.c fip->map_dest = 0; fip 349 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 359 drivers/scsi/fcoe/fcoe_ctlr.c static inline u32 fcoe_ctlr_fcoe_size(struct fcoe_ctlr *fip) fip 366 drivers/scsi/fcoe/fcoe_ctlr.c return fip->lp->mfs + sizeof(struct fc_frame_header) + fip 375 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_solicit(struct fcoe_ctlr *fip, struct fcoe_fcf *fcf) fip 380 drivers/scsi/fcoe/fcoe_ctlr.c struct fip_header fip; fip 397 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(sol->eth.h_source, fip->ctl_src_addr, ETH_ALEN); fip 400 drivers/scsi/fcoe/fcoe_ctlr.c sol->fip.fip_ver = FIP_VER_ENCAPS(FIP_VER); fip 401 drivers/scsi/fcoe/fcoe_ctlr.c sol->fip.fip_op = htons(FIP_OP_DISC); fip 402 drivers/scsi/fcoe/fcoe_ctlr.c sol->fip.fip_subcode = FIP_SC_SOL; fip 403 drivers/scsi/fcoe/fcoe_ctlr.c sol->fip.fip_dl_len = htons(sizeof(sol->desc) / FIP_BPW); fip 404 drivers/scsi/fcoe/fcoe_ctlr.c sol->fip.fip_flags = htons(FIP_FL_FPMA); fip 405 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->spma) fip 406 drivers/scsi/fcoe/fcoe_ctlr.c sol->fip.fip_flags |= htons(FIP_FL_SPMA); fip 410 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(sol->desc.mac.fd_mac, fip->ctl_src_addr, ETH_ALEN); fip 414 drivers/scsi/fcoe/fcoe_ctlr.c put_unaligned_be64(fip->lp->wwnn, &sol->desc.wwnn.fd_wwn); fip 416 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_size = fcoe_ctlr_fcoe_size(fip); fip 423 drivers/scsi/fcoe/fcoe_ctlr.c skb->priority = fip->priority; fip 426 drivers/scsi/fcoe/fcoe_ctlr.c fip->send(fip, skb); fip 429 drivers/scsi/fcoe/fcoe_ctlr.c fip->sol_time = jiffies; fip 438 drivers/scsi/fcoe/fcoe_ctlr.c void fcoe_ctlr_link_up(struct fcoe_ctlr *fip) fip 440 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 441 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_NON_FIP || fip->state == FIP_ST_AUTO) { fip 442 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 443 drivers/scsi/fcoe/fcoe_ctlr.c fc_linkup(fip->lp); fip 444 drivers/scsi/fcoe/fcoe_ctlr.c } else if (fip->state == FIP_ST_LINK_WAIT) { fip 445 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->mode == FIP_MODE_NON_FIP) fip 446 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_NON_FIP); fip 448 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_AUTO); fip 449 drivers/scsi/fcoe/fcoe_ctlr.c switch (fip->mode) { fip 451 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "invalid mode %d\n", fip->mode); fip 454 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "%s", "setting AUTO mode.\n"); fip 458 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 459 drivers/scsi/fcoe/fcoe_ctlr.c fc_linkup(fip->lp); fip 460 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_solicit(fip, NULL); fip 463 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_start(fip); fip 464 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 465 drivers/scsi/fcoe/fcoe_ctlr.c fc_linkup(fip->lp); fip 469 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 477 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_reset(struct fcoe_ctlr *fip) fip 479 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_reset_fcfs(fip); fip 480 drivers/scsi/fcoe/fcoe_ctlr.c del_timer(&fip->timer); fip 481 drivers/scsi/fcoe/fcoe_ctlr.c fip->ctlr_ka_time = 0; fip 482 drivers/scsi/fcoe/fcoe_ctlr.c fip->port_ka_time = 0; fip 483 drivers/scsi/fcoe/fcoe_ctlr.c fip->sol_time = 0; fip 484 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_oxid = FC_XID_UNKNOWN; fip 485 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_map_dest(fip); fip 497 drivers/scsi/fcoe/fcoe_ctlr.c int fcoe_ctlr_link_down(struct fcoe_ctlr *fip) fip 501 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "link down.\n"); fip 502 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 503 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_reset(fip); fip 504 drivers/scsi/fcoe/fcoe_ctlr.c link_dropped = fip->state != FIP_ST_LINK_WAIT; fip 505 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_LINK_WAIT); fip 506 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 509 drivers/scsi/fcoe/fcoe_ctlr.c fc_linkdown(fip->lp); fip 528 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_send_keep_alive(struct fcoe_ctlr *fip, fip 535 drivers/scsi/fcoe/fcoe_ctlr.c struct fip_header fip; fip 543 drivers/scsi/fcoe/fcoe_ctlr.c fcf = fip->sel_fcf; fip 544 drivers/scsi/fcoe/fcoe_ctlr.c lp = fip->lp; fip 559 drivers/scsi/fcoe/fcoe_ctlr.c kal->fip.fip_ver = FIP_VER_ENCAPS(FIP_VER); fip 560 drivers/scsi/fcoe/fcoe_ctlr.c kal->fip.fip_op = htons(FIP_OP_CTRL); fip 561 drivers/scsi/fcoe/fcoe_ctlr.c kal->fip.fip_subcode = FIP_SC_KEEP_ALIVE; fip 562 drivers/scsi/fcoe/fcoe_ctlr.c kal->fip.fip_dl_len = htons((sizeof(kal->mac) + fip 564 drivers/scsi/fcoe/fcoe_ctlr.c kal->fip.fip_flags = htons(FIP_FL_FPMA); fip 565 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->spma) fip 566 drivers/scsi/fcoe/fcoe_ctlr.c kal->fip.fip_flags |= htons(FIP_FL_SPMA); fip 570 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(kal->mac.fd_mac, fip->ctl_src_addr, ETH_ALEN); fip 575 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(vn->fd_mac, fip->get_src_addr(lport), ETH_ALEN); fip 581 drivers/scsi/fcoe/fcoe_ctlr.c skb->priority = fip->priority; fip 584 drivers/scsi/fcoe/fcoe_ctlr.c fip->send(fip, skb); fip 602 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_encaps(struct fcoe_ctlr *fip, struct fc_lport *lport, fip 607 drivers/scsi/fcoe/fcoe_ctlr.c struct fip_header fip; fip 624 drivers/scsi/fcoe/fcoe_ctlr.c if (fcoe_ctlr_vn_lookup(fip, d_id, cap->eth.h_dest)) fip 628 drivers/scsi/fcoe/fcoe_ctlr.c fcf = fip->sel_fcf; fip 632 drivers/scsi/fcoe/fcoe_ctlr.c fip_flags &= fip->spma ? FIP_FL_SPMA | FIP_FL_FPMA : fip 638 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(cap->eth.h_source, fip->ctl_src_addr, ETH_ALEN); fip 641 drivers/scsi/fcoe/fcoe_ctlr.c cap->fip.fip_ver = FIP_VER_ENCAPS(FIP_VER); fip 642 drivers/scsi/fcoe/fcoe_ctlr.c cap->fip.fip_op = htons(FIP_OP_LS); fip 644 drivers/scsi/fcoe/fcoe_ctlr.c cap->fip.fip_subcode = FIP_SC_REP; fip 646 drivers/scsi/fcoe/fcoe_ctlr.c cap->fip.fip_subcode = FIP_SC_REQ; fip 647 drivers/scsi/fcoe/fcoe_ctlr.c cap->fip.fip_flags = htons(fip_flags); fip 658 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(mac->fd_mac, fip->get_src_addr(lport), ETH_ALEN); fip 659 drivers/scsi/fcoe/fcoe_ctlr.c } else if (fip->mode == FIP_MODE_VN2VN) { fip 661 drivers/scsi/fcoe/fcoe_ctlr.c hton24(mac->fd_mac + 3, fip->port_id); fip 663 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FLOGI/FDISC sent with SPMA\n"); fip 664 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(mac->fd_mac, fip->ctl_src_addr, ETH_ALEN); fip 666 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FLOGI/FDISC sent with FPMA\n"); fip 670 drivers/scsi/fcoe/fcoe_ctlr.c cap->fip.fip_dl_len = htons(dlen / FIP_BPW); fip 673 drivers/scsi/fcoe/fcoe_ctlr.c skb->priority = fip->priority; fip 695 drivers/scsi/fcoe/fcoe_ctlr.c int fcoe_ctlr_els_send(struct fcoe_ctlr *fip, struct fc_lport *lport, fip 708 drivers/scsi/fcoe/fcoe_ctlr.c if (op == ELS_FLOGI && fip->mode != FIP_MODE_VN2VN) { fip 709 drivers/scsi/fcoe/fcoe_ctlr.c old_xid = fip->flogi_oxid; fip 710 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_oxid = ntohs(fh->fh_ox_id); fip 711 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_AUTO) { fip 713 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_count = 0; fip 714 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_count++; fip 715 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->flogi_count < 3) fip 717 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_map_dest(fip); fip 720 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_NON_FIP) fip 721 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_map_dest(fip); fip 724 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_NON_FIP) fip 726 drivers/scsi/fcoe/fcoe_ctlr.c if (!fip->sel_fcf && fip->mode != FIP_MODE_VN2VN) fip 731 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->mode == FIP_MODE_VN2VN) fip 733 drivers/scsi/fcoe/fcoe_ctlr.c spin_lock_bh(&fip->ctlr_lock); fip 734 drivers/scsi/fcoe/fcoe_ctlr.c kfree_skb(fip->flogi_req); fip 735 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_req = skb; fip 736 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_req_send = 1; fip 737 drivers/scsi/fcoe/fcoe_ctlr.c spin_unlock_bh(&fip->ctlr_lock); fip 738 drivers/scsi/fcoe/fcoe_ctlr.c schedule_work(&fip->timer_work); fip 746 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->mode == FIP_MODE_VN2VN) { fip 747 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state != FIP_ST_VNMP_UP) fip 752 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state != FIP_ST_ENABLED) fip 767 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_NON_FIP) { fip 768 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->flogi_oxid == FC_XID_UNKNOWN) fip 770 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_oxid = FC_XID_UNKNOWN; fip 772 drivers/scsi/fcoe/fcoe_ctlr.c fip->update_mac(lport, mac); fip 781 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state != FIP_ST_ENABLED && fip 782 drivers/scsi/fcoe/fcoe_ctlr.c fip->state != FIP_ST_VNMP_UP) fip 786 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "els_send op %u d_id %x\n", fip 788 drivers/scsi/fcoe/fcoe_ctlr.c if (fcoe_ctlr_encaps(fip, lport, op, skb, ntoh24(fh->fh_d_id))) fip 790 drivers/scsi/fcoe/fcoe_ctlr.c fip->send(fip, skb); fip 793 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "drop els_send op %u d_id %x\n", fip 817 drivers/scsi/fcoe/fcoe_ctlr.c static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) fip 829 drivers/scsi/fcoe/fcoe_ctlr.c stats = per_cpu_ptr(fip->lp->stats, get_cpu()); fip 831 drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry_safe(fcf, next, &fip->fcfs, list) { fip 833 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->sel_fcf == fcf) { fip 839 drivers/scsi/fcoe/fcoe_ctlr.c fip->lp->host->host_no, fcf->fabric_name, fip 847 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->sel_fcf == fcf) fip 848 drivers/scsi/fcoe/fcoe_ctlr.c fip->sel_fcf = NULL; fip 872 drivers/scsi/fcoe/fcoe_ctlr.c if (sel_time && !fip->sel_fcf && !fip->sel_time) { fip 874 drivers/scsi/fcoe/fcoe_ctlr.c fip->sel_time = sel_time; fip 889 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_parse_adv(struct fcoe_ctlr *fip, fip 926 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Duplicate Critical " fip 945 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 986 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "unexpected descriptor type %x " fip 1001 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "adv missing descriptors mask %x\n", fip 1008 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FIP length error in descriptor type %x len %zu\n", fip 1018 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_recv_adv(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 1028 drivers/scsi/fcoe/fcoe_ctlr.c if (fcoe_ctlr_parse_adv(fip, skb, &new)) fip 1031 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1032 drivers/scsi/fcoe/fcoe_ctlr.c first = list_empty(&fip->fcfs); fip 1033 drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry(fcf, &fip->fcfs, list) { fip 1043 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->fcf_count >= FCOE_CTLR_FCF_LIMIT) fip 1051 drivers/scsi/fcoe/fcoe_ctlr.c fcf->fip = fip; fip 1071 drivers/scsi/fcoe/fcoe_ctlr.c if (fcf == fip->sel_fcf && !fcf->fd_flags) { fip 1072 drivers/scsi/fcoe/fcoe_ctlr.c fip->ctlr_ka_time -= fcf->fka_period; fip 1073 drivers/scsi/fcoe/fcoe_ctlr.c fip->ctlr_ka_time += new.fka_period; fip 1074 drivers/scsi/fcoe/fcoe_ctlr.c if (time_before(fip->ctlr_ka_time, fip->timer.expires)) fip 1075 drivers/scsi/fcoe/fcoe_ctlr.c mod_timer(&fip->timer, fip->ctlr_ka_time); fip 1084 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "New FCF fab %16.16llx mac %pM\n", fip 1092 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_solicit(fip, fcf); fip 1100 drivers/scsi/fcoe/fcoe_ctlr.c if (first && time_after(jiffies, fip->sol_time + sol_tov)) fip 1101 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_solicit(fip, NULL); fip 1110 drivers/scsi/fcoe/fcoe_ctlr.c list_move(&fcf->list, &fip->fcfs); fip 1116 drivers/scsi/fcoe/fcoe_ctlr.c if (mtu_valid && !fip->sel_fcf && !fip->sel_time && fip 1118 drivers/scsi/fcoe/fcoe_ctlr.c fip->sel_time = jiffies + fip 1120 drivers/scsi/fcoe/fcoe_ctlr.c if (!timer_pending(&fip->timer) || fip 1121 drivers/scsi/fcoe/fcoe_ctlr.c time_before(fip->sel_time, fip->timer.expires)) fip 1122 drivers/scsi/fcoe/fcoe_ctlr.c mod_timer(&fip->timer, fip->sel_time); fip 1126 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1134 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_recv_els(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 1136 drivers/scsi/fcoe/fcoe_ctlr.c struct fc_lport *lport = fip->lp; fip 1173 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Duplicate Critical " fip 1181 drivers/scsi/fcoe/fcoe_ctlr.c sel = fip->sel_fcf; fip 1183 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FIP descriptors " fip 1213 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FIP descriptors " fip 1227 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "unexpected descriptor type %x " fip 1233 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FIP descriptors " fip 1248 drivers/scsi/fcoe/fcoe_ctlr.c sub == FIP_SC_REP && fip->mode != FIP_MODE_VN2VN) { fip 1251 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 1258 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->flogi_oxid == ntohs(fh->fh_ox_id)) { fip 1259 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_oxid = FC_XID_UNKNOWN; fip 1261 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_announce(fip); fip 1264 drivers/scsi/fcoe/fcoe_ctlr.c !fcoe_ctlr_flogi_retry(fip)) fip 1270 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Missing critical descriptors " fip 1296 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FIP length error in descriptor type %x len %zu\n", fip 1310 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_recv_clr_vlink(struct fcoe_ctlr *fip, fip 1319 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_fcf *fcf = fip->sel_fcf; fip 1320 drivers/scsi/fcoe/fcoe_ctlr.c struct fc_lport *lport = fip->lp; fip 1329 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Clear Virtual Link received\n"); fip 1336 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Resetting fcoe_ctlr as FCF has not been " fip 1338 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1339 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_reset(fip); fip 1340 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1350 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Dropping CVL due to source address " fip 1360 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "lport not logged in, resoliciting\n"); fip 1361 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1362 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_reset(fip); fip 1363 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1364 drivers/scsi/fcoe/fcoe_ctlr.c fc_lport_reset(fip->lp); fip 1365 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_solicit(fip, NULL); fip 1398 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Duplicate Critical " fip 1427 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1431 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_reset(fip); fip 1432 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1449 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "missing descriptors mask %x\n", fip 1452 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "CVL: no Vx_Port descriptor found\n"); fip 1457 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1460 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_reset(fip); fip 1461 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1468 drivers/scsi/fcoe/fcoe_ctlr.c fc_lport_reset(fip->lp); fip 1469 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_solicit(fip, NULL); fip 1473 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "performing Clear Virtual Link\n"); fip 1485 drivers/scsi/fcoe/fcoe_ctlr.c if (!ether_addr_equal(fip->get_src_addr(vn_port), fip 1502 drivers/scsi/fcoe/fcoe_ctlr.c fc_lport_reset(fip->lp); fip 1503 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_solicit(fip, NULL); fip 1518 drivers/scsi/fcoe/fcoe_ctlr.c void fcoe_ctlr_recv(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 1523 drivers/scsi/fcoe/fcoe_ctlr.c skb_queue_tail(&fip->fip_recv_list, skb); fip 1524 drivers/scsi/fcoe/fcoe_ctlr.c schedule_work(&fip->recv_work); fip 1535 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_recv_handler(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 1549 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->mode == FIP_MODE_VN2VN) { fip 1550 drivers/scsi/fcoe/fcoe_ctlr.c if (!ether_addr_equal(eh->h_dest, fip->ctl_src_addr) && fip 1554 drivers/scsi/fcoe/fcoe_ctlr.c } else if (!ether_addr_equal(eh->h_dest, fip->ctl_src_addr) && fip 1566 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1567 drivers/scsi/fcoe/fcoe_ctlr.c state = fip->state; fip 1569 drivers/scsi/fcoe/fcoe_ctlr.c fip->map_dest = 0; fip 1570 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_ENABLED); fip 1572 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Using FIP mode\n"); fip 1574 drivers/scsi/fcoe/fcoe_ctlr.c fip_vlan_resp = fip->fip_resp; fip 1575 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1577 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->mode == FIP_MODE_VN2VN && op == FIP_OP_VN2VN) fip 1578 drivers/scsi/fcoe/fcoe_ctlr.c return fcoe_ctlr_vn_recv(fip, skb); fip 1581 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "fip vlan discovery\n"); fip 1582 drivers/scsi/fcoe/fcoe_ctlr.c return fcoe_ctlr_vlan_recv(fip, skb); fip 1590 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_recv_els(fip, skb); /* consumes skb */ fip 1598 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_recv_adv(fip, skb); fip 1600 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_recv_clr_vlink(fip, skb); fip 1621 drivers/scsi/fcoe/fcoe_ctlr.c static struct fcoe_fcf *fcoe_ctlr_select(struct fcoe_ctlr *fip) fip 1624 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_fcf *best = fip->sel_fcf; fip 1626 drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry(fcf, &fip->fcfs, list) { fip 1627 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "consider FCF fab %16.16llx " fip 1634 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FCF for fab %16.16llx " fip 1647 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "Conflicting fabric, VFID, " fip 1652 drivers/scsi/fcoe/fcoe_ctlr.c fip->sel_fcf = best; fip 1654 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "using FCF mac %pM\n", best->fcf_mac); fip 1655 drivers/scsi/fcoe/fcoe_ctlr.c fip->port_ka_time = jiffies + fip 1657 drivers/scsi/fcoe/fcoe_ctlr.c fip->ctlr_ka_time = jiffies + best->fka_period; fip 1658 drivers/scsi/fcoe/fcoe_ctlr.c if (time_before(fip->ctlr_ka_time, fip->timer.expires)) fip 1659 drivers/scsi/fcoe/fcoe_ctlr.c mod_timer(&fip->timer, fip->ctlr_ka_time); fip 1673 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_flogi_send_locked(struct fcoe_ctlr *fip) fip 1680 drivers/scsi/fcoe/fcoe_ctlr.c skb_orig = fip->flogi_req; fip 1690 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_req = NULL; fip 1693 drivers/scsi/fcoe/fcoe_ctlr.c error = fcoe_ctlr_encaps(fip, fip->lp, FIP_DT_FLOGI, skb, fip 1699 drivers/scsi/fcoe/fcoe_ctlr.c fip->send(fip, skb); fip 1700 drivers/scsi/fcoe/fcoe_ctlr.c fip->sel_fcf->flogi_sent = 1; fip 1711 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_flogi_retry(struct fcoe_ctlr *fip) fip 1716 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1717 drivers/scsi/fcoe/fcoe_ctlr.c spin_lock_bh(&fip->ctlr_lock); fip 1718 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "re-sending FLOGI - reselect\n"); fip 1719 drivers/scsi/fcoe/fcoe_ctlr.c fcf = fcoe_ctlr_select(fip); fip 1721 drivers/scsi/fcoe/fcoe_ctlr.c kfree_skb(fip->flogi_req); fip 1722 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_req = NULL; fip 1725 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_solicit(fip, NULL); fip 1726 drivers/scsi/fcoe/fcoe_ctlr.c error = fcoe_ctlr_flogi_send_locked(fip); fip 1728 drivers/scsi/fcoe/fcoe_ctlr.c spin_unlock_bh(&fip->ctlr_lock); fip 1729 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1742 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_flogi_send(struct fcoe_ctlr *fip) fip 1746 drivers/scsi/fcoe/fcoe_ctlr.c spin_lock_bh(&fip->ctlr_lock); fip 1747 drivers/scsi/fcoe/fcoe_ctlr.c fcf = fip->sel_fcf; fip 1748 drivers/scsi/fcoe/fcoe_ctlr.c if (!fcf || !fip->flogi_req_send) fip 1751 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "sending FLOGI\n"); fip 1758 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "sending FLOGI - reselect\n"); fip 1759 drivers/scsi/fcoe/fcoe_ctlr.c fcf = fcoe_ctlr_select(fip); fip 1761 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "sending FLOGI - clearing\n"); fip 1762 drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry(fcf, &fip->fcfs, list) fip 1764 drivers/scsi/fcoe/fcoe_ctlr.c fcf = fcoe_ctlr_select(fip); fip 1768 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_flogi_send_locked(fip); fip 1769 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_req_send = 0; fip 1771 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "No FCF selected - defer send\n"); fip 1773 drivers/scsi/fcoe/fcoe_ctlr.c spin_unlock_bh(&fip->ctlr_lock); fip 1782 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip = from_timer(fip, t, timer); fip 1784 drivers/scsi/fcoe/fcoe_ctlr.c schedule_work(&fip->timer_work); fip 1796 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip; fip 1806 drivers/scsi/fcoe/fcoe_ctlr.c fip = container_of(work, struct fcoe_ctlr, timer_work); fip 1807 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->mode == FIP_MODE_VN2VN) fip 1808 drivers/scsi/fcoe/fcoe_ctlr.c return fcoe_ctlr_vn_timeout(fip); fip 1809 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1810 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_DISABLED) { fip 1811 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1815 drivers/scsi/fcoe/fcoe_ctlr.c fcf = fip->sel_fcf; fip 1816 drivers/scsi/fcoe/fcoe_ctlr.c next_timer = fcoe_ctlr_age_fcfs(fip); fip 1818 drivers/scsi/fcoe/fcoe_ctlr.c sel = fip->sel_fcf; fip 1819 drivers/scsi/fcoe/fcoe_ctlr.c if (!sel && fip->sel_time) { fip 1820 drivers/scsi/fcoe/fcoe_ctlr.c if (time_after_eq(jiffies, fip->sel_time)) { fip 1821 drivers/scsi/fcoe/fcoe_ctlr.c sel = fcoe_ctlr_select(fip); fip 1822 drivers/scsi/fcoe/fcoe_ctlr.c fip->sel_time = 0; fip 1823 drivers/scsi/fcoe/fcoe_ctlr.c } else if (time_after(next_timer, fip->sel_time)) fip 1824 drivers/scsi/fcoe/fcoe_ctlr.c next_timer = fip->sel_time; fip 1827 drivers/scsi/fcoe/fcoe_ctlr.c if (sel && fip->flogi_req_send) fip 1828 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_flogi_send(fip); fip 1833 drivers/scsi/fcoe/fcoe_ctlr.c if (time_after_eq(jiffies, fip->ctlr_ka_time)) { fip 1834 drivers/scsi/fcoe/fcoe_ctlr.c fip->ctlr_ka_time = jiffies + sel->fka_period; fip 1837 drivers/scsi/fcoe/fcoe_ctlr.c if (time_after(next_timer, fip->ctlr_ka_time)) fip 1838 drivers/scsi/fcoe/fcoe_ctlr.c next_timer = fip->ctlr_ka_time; fip 1840 drivers/scsi/fcoe/fcoe_ctlr.c if (time_after_eq(jiffies, fip->port_ka_time)) { fip 1841 drivers/scsi/fcoe/fcoe_ctlr.c fip->port_ka_time = jiffies + fip 1845 drivers/scsi/fcoe/fcoe_ctlr.c if (time_after(next_timer, fip->port_ka_time)) fip 1846 drivers/scsi/fcoe/fcoe_ctlr.c next_timer = fip->port_ka_time; fip 1848 drivers/scsi/fcoe/fcoe_ctlr.c if (!list_empty(&fip->fcfs)) fip 1849 drivers/scsi/fcoe/fcoe_ctlr.c mod_timer(&fip->timer, next_timer); fip 1850 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1853 drivers/scsi/fcoe/fcoe_ctlr.c fc_lport_reset(fip->lp); fip 1855 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_solicit(fip, NULL); fip 1859 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_send_keep_alive(fip, NULL, 0, fip->ctl_src_addr); fip 1862 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->lp->lp_mutex); fip 1863 drivers/scsi/fcoe/fcoe_ctlr.c mac = fip->get_src_addr(fip->lp); fip 1864 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_send_keep_alive(fip, fip->lp, 1, mac); fip 1865 drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry(vport, &fip->lp->vports, list) { fip 1866 drivers/scsi/fcoe/fcoe_ctlr.c mac = fip->get_src_addr(vport); fip 1867 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_send_keep_alive(fip, vport, 1, mac); fip 1869 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->lp->lp_mutex); fip 1879 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip; fip 1882 drivers/scsi/fcoe/fcoe_ctlr.c fip = container_of(recv_work, struct fcoe_ctlr, recv_work); fip 1883 drivers/scsi/fcoe/fcoe_ctlr.c while ((skb = skb_dequeue(&fip->fip_recv_list))) fip 1884 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_recv_handler(fip, skb); fip 1902 drivers/scsi/fcoe/fcoe_ctlr.c int fcoe_ctlr_recv_flogi(struct fcoe_ctlr *fip, struct fc_lport *lport, fip 1916 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_oxid == ntohs(fh->fh_ox_id)) { fip 1918 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1919 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state != FIP_ST_AUTO && fip->state != FIP_ST_NON_FIP) { fip 1920 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1923 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_NON_FIP); fip 1924 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 1934 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_map_dest(fip); fip 1936 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(fip->dest_addr, sa, ETH_ALEN); fip 1937 drivers/scsi/fcoe/fcoe_ctlr.c fip->map_dest = 0; fip 1939 drivers/scsi/fcoe/fcoe_ctlr.c fip->flogi_oxid = FC_XID_UNKNOWN; fip 1940 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 1946 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 1947 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_AUTO || fip->state == FIP_ST_NON_FIP) { fip 1948 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(fip->dest_addr, sa, ETH_ALEN); fip 1949 drivers/scsi/fcoe/fcoe_ctlr.c fip->map_dest = 0; fip 1950 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_AUTO) fip 1951 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "received non-FIP FLOGI. " fip 1953 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_NON_FIP); fip 1955 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 2018 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_send(struct fcoe_ctlr *fip, fip 2025 drivers/scsi/fcoe/fcoe_ctlr.c struct fip_header fip; fip 2056 drivers/scsi/fcoe/fcoe_ctlr.c hton24(frame->eth.h_source + 3, fip->port_id); fip 2058 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(frame->eth.h_source, fip->ctl_src_addr, ETH_ALEN); fip 2062 drivers/scsi/fcoe/fcoe_ctlr.c frame->fip.fip_ver = FIP_VER_ENCAPS(FIP_VER); fip 2063 drivers/scsi/fcoe/fcoe_ctlr.c frame->fip.fip_op = htons(FIP_OP_VN2VN); fip 2064 drivers/scsi/fcoe/fcoe_ctlr.c frame->fip.fip_subcode = sub; fip 2065 drivers/scsi/fcoe/fcoe_ctlr.c frame->fip.fip_dl_len = htons(dlen / FIP_BPW); fip 2069 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(frame->mac.fd_mac, fip->ctl_src_addr, ETH_ALEN); fip 2073 drivers/scsi/fcoe/fcoe_ctlr.c put_unaligned_be64(fip->lp->wwnn, &frame->wwnn.fd_wwn); fip 2078 drivers/scsi/fcoe/fcoe_ctlr.c hton24(frame->vn.fd_mac + 3, fip->port_id); fip 2079 drivers/scsi/fcoe/fcoe_ctlr.c hton24(frame->vn.fd_fc_id, fip->port_id); fip 2080 drivers/scsi/fcoe/fcoe_ctlr.c put_unaligned_be64(fip->lp->wwpn, &frame->vn.fd_wwpn); fip 2090 drivers/scsi/fcoe/fcoe_ctlr.c ff->fd_fts = fip->lp->fcts; fip 2093 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->lp->service_params & FCP_SPPF_INIT_FCN) fip 2095 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->lp->service_params & FCP_SPPF_TARG_FCN) fip 2103 drivers/scsi/fcoe/fcoe_ctlr.c size->fd_size = htons(fcoe_ctlr_fcoe_size(fip)); fip 2108 drivers/scsi/fcoe/fcoe_ctlr.c skb->priority = fip->priority; fip 2112 drivers/scsi/fcoe/fcoe_ctlr.c fip->send(fip, skb); fip 2127 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip = lport->disc.priv; fip 2130 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_rport_callback %x event %d\n", fip 2133 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 2143 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 2152 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 2189 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip = lport->disc.priv; fip 2191 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 2193 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 2216 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_restart(struct fcoe_ctlr *fip) fip 2221 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_disc_stop_locked(fip->lp); fip 2230 drivers/scsi/fcoe/fcoe_ctlr.c port_id = fip->port_id; fip 2231 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->probe_tries) fip 2232 drivers/scsi/fcoe/fcoe_ctlr.c port_id = prandom_u32_state(&fip->rnd_state) & 0xffff; fip 2234 drivers/scsi/fcoe/fcoe_ctlr.c port_id = fip->lp->wwpn & 0xffff; fip 2237 drivers/scsi/fcoe/fcoe_ctlr.c fip->port_id = port_id; fip 2239 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->probe_tries < FIP_VN_RLIM_COUNT) { fip 2240 drivers/scsi/fcoe/fcoe_ctlr.c fip->probe_tries++; fip 2244 drivers/scsi/fcoe/fcoe_ctlr.c mod_timer(&fip->timer, jiffies + msecs_to_jiffies(wait)); fip 2245 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_VNMP_START); fip 2254 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_start(struct fcoe_ctlr *fip) fip 2256 drivers/scsi/fcoe/fcoe_ctlr.c fip->probe_tries = 0; fip 2257 drivers/scsi/fcoe/fcoe_ctlr.c prandom_seed_state(&fip->rnd_state, fip->lp->wwpn); fip 2258 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_restart(fip); fip 2270 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_vn_parse(struct fcoe_ctlr *fip, fip 2304 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_parse unknown subcode %u\n", sub); fip 2321 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 2337 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 2371 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "unexpected descriptor type %x " fip 2384 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FIP length error in descriptor type %x len %zu\n", fip 2395 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_send_claim(struct fcoe_ctlr *fip) fip 2397 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_CLAIM_NOTIFY, fcoe_all_vn2vn, 0); fip 2398 drivers/scsi/fcoe/fcoe_ctlr.c fip->sol_time = jiffies; fip 2408 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_probe_req(struct fcoe_ctlr *fip, fip 2411 drivers/scsi/fcoe/fcoe_ctlr.c if (frport->rdata.ids.port_id != fip->port_id) fip 2414 drivers/scsi/fcoe/fcoe_ctlr.c switch (fip->state) { fip 2417 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_probe_req: send reply, state %x\n", fip 2418 drivers/scsi/fcoe/fcoe_ctlr.c fip->state); fip 2419 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_PROBE_REP, fip 2431 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->lp->wwpn > frport->rdata.ids.port_name && fip 2433 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_probe_req: " fip 2435 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_PROBE_REP, fip 2441 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_probe_req: " fip 2443 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_restart(fip); fip 2446 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_probe_req: ignore state %x\n", fip 2447 drivers/scsi/fcoe/fcoe_ctlr.c fip->state); fip 2459 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_probe_reply(struct fcoe_ctlr *fip, fip 2462 drivers/scsi/fcoe/fcoe_ctlr.c if (frport->rdata.ids.port_id != fip->port_id) fip 2464 drivers/scsi/fcoe/fcoe_ctlr.c switch (fip->state) { fip 2469 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_probe_reply: restart state %x\n", fip 2470 drivers/scsi/fcoe/fcoe_ctlr.c fip->state); fip 2471 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_restart(fip); fip 2474 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_probe_reply: send claim notify\n"); fip 2475 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send_claim(fip); fip 2489 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_add(struct fcoe_ctlr *fip, struct fcoe_rport *new) fip 2491 drivers/scsi/fcoe/fcoe_ctlr.c struct fc_lport *lport = fip->lp; fip 2498 drivers/scsi/fcoe/fcoe_ctlr.c if (port_id == fip->port_id) fip 2519 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_add rport logoff %6.6x\n", port_id); fip 2528 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_add rport %6.6x %s state %d\n", fip 2547 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_vn_lookup(struct fcoe_ctlr *fip, u32 port_id, u8 *mac) fip 2549 drivers/scsi/fcoe/fcoe_ctlr.c struct fc_lport *lport = fip->lp; fip 2571 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_claim_notify(struct fcoe_ctlr *fip, fip 2575 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "send probe req for P2P/REC\n"); fip 2576 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_PROBE_REQ, fcoe_all_vn2vn, 0); fip 2579 drivers/scsi/fcoe/fcoe_ctlr.c switch (fip->state) { fip 2583 drivers/scsi/fcoe/fcoe_ctlr.c if (new->rdata.ids.port_id == fip->port_id) { fip 2584 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_claim_notify: " fip 2586 drivers/scsi/fcoe/fcoe_ctlr.c fip->state); fip 2587 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_restart(fip); fip 2592 drivers/scsi/fcoe/fcoe_ctlr.c if (new->rdata.ids.port_id == fip->port_id) { fip 2593 drivers/scsi/fcoe/fcoe_ctlr.c if (new->rdata.ids.port_name > fip->lp->wwpn) { fip 2594 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_claim_notify: " fip 2596 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_restart(fip); fip 2599 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_claim_notify: " fip 2601 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send_claim(fip); fip 2604 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_claim_notify: send reply to %x\n", fip 2606 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_CLAIM_REP, new->enode_mac, fip 2608 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_fcoe_size(fip))); fip 2609 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_add(fip, new); fip 2612 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_claim_notify: " fip 2626 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_claim_resp(struct fcoe_ctlr *fip, fip 2629 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "claim resp from from rport %x - state %s\n", fip 2630 drivers/scsi/fcoe/fcoe_ctlr.c new->rdata.ids.port_id, fcoe_ctlr_state(fip->state)); fip 2631 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state == FIP_ST_VNMP_UP || fip->state == FIP_ST_VNMP_CLAIM) fip 2632 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_add(fip, new); fip 2642 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_beacon(struct fcoe_ctlr *fip, fip 2645 drivers/scsi/fcoe/fcoe_ctlr.c struct fc_lport *lport = fip->lp; fip 2650 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "p2p beacon while in vn2vn mode\n"); fip 2651 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_PROBE_REQ, fcoe_all_vn2vn, 0); fip 2660 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "beacon from rport %x\n", fip 2662 drivers/scsi/fcoe/fcoe_ctlr.c if (!frport->time && fip->state == FIP_ST_VNMP_UP) { fip 2663 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "beacon expired " fip 2673 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->state != FIP_ST_VNMP_UP) fip 2681 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "beacon from new rport %x. sending claim notify\n", fip 2684 drivers/scsi/fcoe/fcoe_ctlr.c fip->sol_time + msecs_to_jiffies(FIP_VN_ANN_WAIT))) fip 2685 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send_claim(fip); fip 2696 drivers/scsi/fcoe/fcoe_ctlr.c static unsigned long fcoe_ctlr_vn_age(struct fcoe_ctlr *fip) fip 2698 drivers/scsi/fcoe/fcoe_ctlr.c struct fc_lport *lport = fip->lp; fip 2718 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 2738 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_vn_recv(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 2748 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->lp->vlan) fip 2751 drivers/scsi/fcoe/fcoe_ctlr.c if (vlan_id && vlan_id != fip->lp->vlan) { fip 2752 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_recv drop frame sub %x vlan %d\n", fip 2758 drivers/scsi/fcoe/fcoe_ctlr.c rc = fcoe_ctlr_vn_parse(fip, skb, &frport); fip 2760 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_recv vn_parse error %d\n", rc); fip 2764 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 2767 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_probe_req(fip, &frport); fip 2770 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_probe_reply(fip, &frport); fip 2773 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_claim_notify(fip, &frport); fip 2776 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_claim_resp(fip, &frport); fip 2779 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_beacon(fip, &frport); fip 2782 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_recv unknown subcode %d\n", sub); fip 2786 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 2801 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_vlan_parse(struct fcoe_ctlr *fip, fip 2824 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_parse unknown subcode %u\n", sub); fip 2841 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 2857 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, fip 2872 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "unexpected descriptor type %x " fip 2885 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "FIP length error in descriptor type %x len %zu\n", fip 2897 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vlan_send(struct fcoe_ctlr *fip, fip 2904 drivers/scsi/fcoe/fcoe_ctlr.c struct fip_header fip; fip 2919 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "fip %s vlan notification, vlan %d\n", fip 2920 drivers/scsi/fcoe/fcoe_ctlr.c fip->mode == FIP_MODE_VN2VN ? "vn2vn" : "fcf", fip 2921 drivers/scsi/fcoe/fcoe_ctlr.c fip->lp->vlan); fip 2927 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(frame->eth.h_source, fip->ctl_src_addr, ETH_ALEN); fip 2930 drivers/scsi/fcoe/fcoe_ctlr.c frame->fip.fip_ver = FIP_VER_ENCAPS(FIP_VER); fip 2931 drivers/scsi/fcoe/fcoe_ctlr.c frame->fip.fip_op = htons(FIP_OP_VLAN); fip 2932 drivers/scsi/fcoe/fcoe_ctlr.c frame->fip.fip_subcode = sub; fip 2933 drivers/scsi/fcoe/fcoe_ctlr.c frame->fip.fip_dl_len = htons(dlen / FIP_BPW); fip 2937 drivers/scsi/fcoe/fcoe_ctlr.c memcpy(frame->mac.fd_mac, fip->ctl_src_addr, ETH_ALEN); fip 2941 drivers/scsi/fcoe/fcoe_ctlr.c put_unaligned_be16(fip->lp->vlan, &frame->vlan.fd_vlan); fip 2945 drivers/scsi/fcoe/fcoe_ctlr.c skb->priority = fip->priority; fip 2949 drivers/scsi/fcoe/fcoe_ctlr.c fip->send(fip, skb); fip 2959 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vlan_disc_reply(struct fcoe_ctlr *fip, fip 2964 drivers/scsi/fcoe/fcoe_ctlr.c if (fip->mode == FIP_MODE_VN2VN) fip 2967 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vlan_send(fip, sub, frport->enode_mac); fip 2976 drivers/scsi/fcoe/fcoe_ctlr.c static int fcoe_ctlr_vlan_recv(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 2985 drivers/scsi/fcoe/fcoe_ctlr.c rc = fcoe_ctlr_vlan_parse(fip, skb, &frport); fip 2987 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vlan_recv vlan_parse error %d\n", rc); fip 2990 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 2992 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vlan_disc_reply(fip, &frport); fip 2993 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 3035 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip = disc->priv; fip 3041 drivers/scsi/fcoe/fcoe_ctlr.c schedule_work(&fip->timer_work); fip 3053 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_disc(struct fcoe_ctlr *fip) fip 3055 drivers/scsi/fcoe/fcoe_ctlr.c struct fc_lport *lport = fip->lp; fip 3081 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_vn_timeout(struct fcoe_ctlr *fip) fip 3087 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 3088 drivers/scsi/fcoe/fcoe_ctlr.c switch (fip->state) { fip 3090 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_VNMP_PROBE1); fip 3091 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_timeout: send 1st probe request\n"); fip 3092 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_PROBE_REQ, fcoe_all_vn2vn, 0); fip 3096 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_VNMP_PROBE2); fip 3097 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_timeout: send 2nd probe request\n"); fip 3098 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_PROBE_REQ, fcoe_all_vn2vn, 0); fip 3102 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_VNMP_CLAIM); fip 3103 drivers/scsi/fcoe/fcoe_ctlr.c new_port_id = fip->port_id; fip 3106 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_map_dest(fip); fip 3107 drivers/scsi/fcoe/fcoe_ctlr.c fip->update_mac(fip->lp, mac); fip 3108 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_timeout: send claim notify\n"); fip 3109 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send_claim(fip); fip 3117 drivers/scsi/fcoe/fcoe_ctlr.c next_time = fip->sol_time + msecs_to_jiffies(FIP_VN_ANN_WAIT); fip 3119 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_set_state(fip, FIP_ST_VNMP_UP); fip 3120 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_timeout: send vn2vn beacon\n"); fip 3121 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_BEACON, fip 3124 drivers/scsi/fcoe/fcoe_ctlr.c fip->port_ka_time = next_time; fip 3126 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_disc(fip); fip 3129 drivers/scsi/fcoe/fcoe_ctlr.c next_time = fcoe_ctlr_vn_age(fip); fip 3130 drivers/scsi/fcoe/fcoe_ctlr.c if (time_after_eq(jiffies, fip->port_ka_time)) { fip 3131 drivers/scsi/fcoe/fcoe_ctlr.c LIBFCOE_FIP_DBG(fip, "vn_timeout: send vn2vn beacon\n"); fip 3132 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_vn_send(fip, FIP_SC_VN_BEACON, fip 3134 drivers/scsi/fcoe/fcoe_ctlr.c fip->port_ka_time = jiffies + fip 3138 drivers/scsi/fcoe/fcoe_ctlr.c if (time_before(fip->port_ka_time, next_time)) fip 3139 drivers/scsi/fcoe/fcoe_ctlr.c next_time = fip->port_ka_time; fip 3144 drivers/scsi/fcoe/fcoe_ctlr.c WARN(1, "unexpected state %d\n", fip->state); fip 3147 drivers/scsi/fcoe/fcoe_ctlr.c mod_timer(&fip->timer, next_time); fip 3149 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 3153 drivers/scsi/fcoe/fcoe_ctlr.c fc_lport_set_local_id(fip->lp, new_port_id); fip 3168 drivers/scsi/fcoe/fcoe_ctlr.c static void fcoe_ctlr_mode_set(struct fc_lport *lport, struct fcoe_ctlr *fip, fip 3183 drivers/scsi/fcoe/fcoe_ctlr.c priv = fip; fip 3206 drivers/scsi/fcoe/fcoe_ctlr.c int fcoe_libfc_config(struct fc_lport *lport, struct fcoe_ctlr *fip, fip 3217 drivers/scsi/fcoe/fcoe_ctlr.c fcoe_ctlr_mode_set(lport, fip, fip->mode); fip 3225 drivers/scsi/fcoe/fcoe_ctlr.c struct fcoe_ctlr *fip = fcoe_ctlr_device_priv(ctlr_dev); fip 3228 drivers/scsi/fcoe/fcoe_ctlr.c mutex_lock(&fip->ctlr_mutex); fip 3233 drivers/scsi/fcoe/fcoe_ctlr.c fcf_dev->selected = (fcf == fip->sel_fcf) ? 1 : 0; fip 3238 drivers/scsi/fcoe/fcoe_ctlr.c mutex_unlock(&fip->ctlr_mutex); fip 389 drivers/scsi/fcoe/fcoe_sysfs.c struct fcoe_ctlr *fip = fcoe_ctlr_device_priv(ctlr); fip 391 drivers/scsi/fcoe/fcoe_sysfs.c mutex_lock(&fip->ctlr_mutex); fip 394 drivers/scsi/fcoe/fcoe_sysfs.c fip->fip_resp = 1; fip 395 drivers/scsi/fcoe/fcoe_sysfs.c mutex_unlock(&fip->ctlr_mutex); fip 399 drivers/scsi/fcoe/fcoe_sysfs.c fip->fip_resp = 0; fip 400 drivers/scsi/fcoe/fcoe_sysfs.c mutex_unlock(&fip->ctlr_mutex); fip 404 drivers/scsi/fcoe/fcoe_sysfs.c mutex_unlock(&fip->ctlr_mutex); fip 413 drivers/scsi/fcoe/fcoe_sysfs.c struct fcoe_ctlr *fip = fcoe_ctlr_device_priv(ctlr); fip 415 drivers/scsi/fcoe/fcoe_sysfs.c return sprintf(buf, "%d\n", fip->fip_resp ? 1 : 0); fip 219 drivers/scsi/fcoe/fcoe_transport.c struct fcoe_ctlr *fip = fcoe_ctlr_device_priv(ctlr_dev); fip 220 drivers/scsi/fcoe/fcoe_transport.c struct net_device *netdev = fcoe_get_netdev(fip->lp); fip 224 drivers/scsi/fcoe/fcoe_transport.c __fcoe_get_lesb(fip->lp, fc_lesb, netdev); fip 23 drivers/scsi/fcoe/libfcoe.h #define LIBFCOE_FIP_DBG(fip, fmt, args...) \ fip 26 drivers/scsi/fcoe/libfcoe.h (fip)->lp->host->host_no, ##args);) fip 317 drivers/scsi/fnic/fnic.h static inline struct fnic *fnic_from_ctlr(struct fcoe_ctlr *fip) fip 319 drivers/scsi/fnic/fnic.h return container_of(fip, struct fnic, ctlr); fip 304 drivers/scsi/fnic/fnic_fcs.c static inline int is_fnic_fip_flogi_reject(struct fcoe_ctlr *fip, fip 307 drivers/scsi/fnic/fnic_fcs.c struct fc_lport *lport = fip->lp; fip 375 drivers/scsi/fnic/fnic_fcs.c struct fcoe_ctlr *fip = &fnic->ctlr; fip 399 drivers/scsi/fnic/fnic_fcs.c memcpy(vlan->eth.h_source, fip->ctl_src_addr, ETH_ALEN); fip 403 drivers/scsi/fnic/fnic_fcs.c vlan->fip.fip_ver = FIP_VER_ENCAPS(FIP_VER); fip 404 drivers/scsi/fnic/fnic_fcs.c vlan->fip.fip_op = htons(FIP_OP_VLAN); fip 405 drivers/scsi/fnic/fnic_fcs.c vlan->fip.fip_subcode = FIP_SC_VL_REQ; fip 406 drivers/scsi/fnic/fnic_fcs.c vlan->fip.fip_dl_len = htons(sizeof(vlan->desc) / FIP_BPW); fip 410 drivers/scsi/fnic/fnic_fcs.c memcpy(&vlan->desc.mac.fd_mac, fip->ctl_src_addr, ETH_ALEN); fip 414 drivers/scsi/fnic/fnic_fcs.c put_unaligned_be64(fip->lp->wwnn, &vlan->desc.wwnn.fd_wwn); fip 421 drivers/scsi/fnic/fnic_fcs.c fip->send(fip, skb); fip 430 drivers/scsi/fnic/fnic_fcs.c struct fcoe_ctlr *fip = &fnic->ctlr; fip 494 drivers/scsi/fnic/fnic_fcs.c fcoe_ctlr_link_up(fip); fip 1028 drivers/scsi/fnic/fnic_fcs.c void fnic_eth_send(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 1030 drivers/scsi/fnic/fnic_fcs.c struct fnic *fnic = fnic_from_ctlr(fip); fip 53 drivers/scsi/fnic/fnic_fip.h struct fip_header fip; fip 9286 drivers/scsi/lpfc/lpfc_sli.c uint32_t fip; fip 9301 drivers/scsi/lpfc/lpfc_sli.c fip = phba->hba_flag & HBA_FIP_SUPPORT; fip 9305 drivers/scsi/lpfc/lpfc_sli.c else if (fip && (iocbq->iocb_flag & LPFC_FIP_ELS_ID_MASK)) fip 9738 drivers/scsi/lpfc/lpfc_sli.c fip = abrtiocbq->iocb_flag & LPFC_FIP_ELS_ID_MASK; fip 9740 drivers/scsi/lpfc/lpfc_sli.c fip = 0; fip 9742 drivers/scsi/lpfc/lpfc_sli.c if ((iocbq->iocb.ulpCommand == CMD_CLOSE_XRI_CN) || fip) fip 479 drivers/scsi/qedf/qedf.h extern void qedf_fip_send(struct fcoe_ctlr *fip, struct sk_buff *skb); fip 546 drivers/scsi/qedf/qedf.h struct fip_header fip; fip 40 drivers/scsi/qedf/qedf_fip.c vlan->fip.fip_ver = FIP_VER_ENCAPS(FIP_VER); fip 41 drivers/scsi/qedf/qedf_fip.c vlan->fip.fip_op = htons(FIP_OP_VLAN); fip 42 drivers/scsi/qedf/qedf_fip.c vlan->fip.fip_subcode = FIP_SC_VL_REQ; fip 43 drivers/scsi/qedf/qedf_fip.c vlan->fip.fip_dl_len = htons(sizeof(vlan->desc) / FIP_BPW); fip 121 drivers/scsi/qedf/qedf_fip.c void qedf_fip_send(struct fcoe_ctlr *fip, struct sk_buff *skb) fip 123 drivers/scsi/qedf/qedf_fip.c struct qedf_ctx *qedf = container_of(fip, struct qedf_ctx, ctlr); fip 201 include/scsi/libfcoe.h struct fcoe_ctlr *fip; fip 270 include/scsi/libfcoe.h static inline bool is_fip_mode(struct fcoe_ctlr *fip) fip 272 include/scsi/libfcoe.h return fip->state == FIP_ST_ENABLED;