This converts the Open-FCoE tree to use the common 24-bit types Signed-off-by: Chris Leech <christopher.leech@xxxxxxxxx> --- drivers/scsi/fcoe/fcoe_dev.c | 6 +++--- drivers/scsi/libfc/fc_exch.c | 24 ++++++++++++------------ drivers/scsi/libfc/fc_fcp.c | 2 +- drivers/scsi/libfc/fc_lport.c | 8 ++++---- drivers/scsi/libfc/fc_ns.c | 14 +++++++------- drivers/scsi/libfc/fc_rport.c | 4 ++-- include/scsi/fc/fc_els.h | 18 +++++++++--------- include/scsi/fc/fc_fcoe.h | 6 ++---- include/scsi/fc/fc_fs.h | 8 ++++---- include/scsi/fc/fc_gs.h | 2 +- include/scsi/fc/fc_ns.h | 6 +++--- include/scsi/libfc/libfc.h | 13 ------------- 12 files changed, 48 insertions(+), 63 deletions(-) diff --git a/drivers/scsi/fcoe/fcoe_dev.c b/drivers/scsi/fcoe/fcoe_dev.c index d5a354f..d5fc479 100644 --- a/drivers/scsi/fcoe/fcoe_dev.c +++ b/drivers/scsi/fcoe/fcoe_dev.c @@ -233,7 +233,7 @@ int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp) * MAC in this case would have been set by receving the * FLOGI. */ - fc_fcoe_set_mac(fc->data_src_addr, fh->fh_s_id); + fc_fcoe_set_mac(fc->data_src_addr, &fh->fh_s_id); fc->flogi_progress = 0; } } @@ -311,7 +311,7 @@ int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp) skb->ip_summed = CHECKSUM_NONE; eh = (struct ethhdr *)skb_push(skb, hlen + sizeof(struct ethhdr)); if (fc->address_mode == FCOE_FCOUI_ADDR_MODE) - fc_fcoe_set_mac(eh->h_dest, fh->fh_d_id); + fc_fcoe_set_mac(eh->h_dest, &fh->fh_d_id); else /* insert GW address */ memcpy(eh->h_dest, fc->dest_addr, ETH_ALEN); @@ -516,7 +516,7 @@ static void fcoe_recv_flogi(struct fcoe_softc *fc, struct fc_frame *fp, u8 *sa) if (compare_ether_addr(fc->data_src_addr, (u8[6]) { 0 })) dev_unicast_delete(fc->real_dev, fc->data_src_addr, ETH_ALEN); - fc_fcoe_set_mac(fc->data_src_addr, fh->fh_d_id); + fc_fcoe_set_mac(fc->data_src_addr, &fh->fh_d_id); dev_unicast_add(fc->real_dev, fc->data_src_addr, ETH_ALEN); rtnl_unlock(); diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c index 11a03bd..9fd011b 100644 --- a/drivers/scsi/libfc/fc_exch.c +++ b/drivers/scsi/libfc/fc_exch.c @@ -278,8 +278,8 @@ static void fc_seq_fill_hdr(struct fc_seq *sp, struct fc_frame *fp) ep = fc_seq_exch(sp); - hton24(fh->fh_s_id, ep->sid); - hton24(fh->fh_d_id, ep->did); + fh->fh_s_id = hton24(ep->sid); + fh->fh_d_id = hton24(ep->did); fh->fh_ox_id = htons(ep->oxid); fh->fh_rx_id = htons(ep->rxid); fh->fh_seq_id = sp->id; @@ -892,7 +892,7 @@ int fc_seq_send(struct fc_lport *lp, struct fc_seq *sp, fr_eof(fp) = FC_EOF_N; } - hton24(fh->fh_f_ctl, f_ctl | fill); + fh->fh_f_ctl = hton24(f_ctl | fill); fh->fh_seq_cnt = htons(sp->cnt++); /* @@ -992,7 +992,7 @@ static void fc_seq_send_ack(struct fc_seq *sp, const struct fc_frame *rx_fp) FC_FC_END_SEQ | FC_FC_END_CONN | FC_FC_SEQ_INIT | FC_FC_RETX_SEQ | FC_FC_UNI_TX; f_ctl ^= FC_FC_EX_CTX | FC_FC_SEQ_CTX; - hton24(fh->fh_f_ctl, f_ctl); + fh->fh_f_ctl = hton24(f_ctl); fh->fh_seq_id = rx_fh->fh_seq_id; fh->fh_seq_cnt = rx_fh->fh_seq_cnt; @@ -1039,8 +1039,8 @@ fc_exch_send_ba_rjt(struct fc_frame *rx_fp, enum fc_ba_rjt_reason reason, /* * seq_id, cs_ctl, df_ctl and param/offset are zero. */ - memcpy(fh->fh_s_id, rx_fh->fh_d_id, 3); - memcpy(fh->fh_d_id, rx_fh->fh_s_id, 3); + fh->fh_s_id = rx_fh->fh_d_id; + fh->fh_d_id = rx_fh->fh_s_id; fh->fh_ox_id = rx_fh->fh_rx_id; fh->fh_rx_id = rx_fh->fh_ox_id; fh->fh_seq_cnt = rx_fh->fh_seq_cnt; @@ -1062,7 +1062,7 @@ fc_exch_send_ba_rjt(struct fc_frame *rx_fp, enum fc_ba_rjt_reason reason, f_ctl ^= FC_FC_EX_CTX | FC_FC_SEQ_CTX; f_ctl |= FC_FC_LAST_SEQ | FC_FC_END_SEQ; f_ctl &= ~FC_FC_FIRST_SEQ; - hton24(fh->fh_f_ctl, f_ctl); + fh->fh_f_ctl = hton24(f_ctl); fr_sof(fp) = fc_sof_class(fr_sof(rx_fp)); fr_eof(fp) = FC_EOF_T; @@ -1607,12 +1607,12 @@ static void fc_exch_els_rec(struct fc_seq *sp, struct fc_frame *rfp) memset(acc, 0, sizeof(*acc)); acc->reca_cmd = ELS_LS_ACC; acc->reca_ox_id = rp->rec_ox_id; - memcpy(acc->reca_ofid, rp->rec_s_id, 3); + acc->reca_ofid = rp->rec_s_id; acc->reca_rx_id = htons(ep->rxid); if (ep->sid == ep->oid) - hton24(acc->reca_rfid, ep->did); + acc->reca_rfid = hton24(ep->did); else - hton24(acc->reca_rfid, ep->sid); + acc->reca_rfid = hton24(ep->sid); acc->reca_fc4value = htonl(ep->seq.rec_data); acc->reca_e_stat = htonl(ep->esb_stat & (ESB_ST_RESP | ESB_ST_SEQ_INIT | @@ -1704,7 +1704,7 @@ static void fc_exch_rrq(struct fc_exch *ep) rrq = fc_frame_payload_get(fp, sizeof(*rrq)); memset(rrq, 0, sizeof(*rrq)); rrq->rrq_cmd = ELS_RRQ; - hton24(rrq->rrq_s_id, ep->sid); + rrq->rrq_s_id = hton24(ep->sid); rrq->rrq_ox_id = htons(ep->oxid); rrq->rrq_rx_id = htons(ep->rxid); @@ -1906,7 +1906,7 @@ struct fc_seq *fc_exch_seq_send(struct fc_lport *lp, } f_ctl |= ep->f_ctl; fh = fc_frame_header_get(fp); - hton24(fh->fh_f_ctl, f_ctl | fill); + fh->fh_f_ctl = hton24(f_ctl | fill); fh->fh_seq_cnt = htons(sp->cnt++); if (unlikely(lp->tt.frame_send(lp, fp))) diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c index 9402eba..6c24724 100644 --- a/drivers/scsi/libfc/fc_fcp.c +++ b/drivers/scsi/libfc/fc_fcp.c @@ -1332,7 +1332,7 @@ static void fc_fcp_rec(struct fc_fcp_pkt *fsp) rec = fc_frame_payload_get(fp, sizeof(*rec)); memset(rec, 0, sizeof(*rec)); rec->rec_cmd = ELS_REC; - hton24(rec->rec_s_id, lp->fid); + rec->rec_s_id = hton24(lp->fid); rec->rec_ox_id = htons(ox_id); rec->rec_rx_id = htons(rx_id); diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c index b06f519..ad5c5b1 100644 --- a/drivers/scsi/libfc/fc_lport.c +++ b/drivers/scsi/libfc/fc_lport.c @@ -244,8 +244,8 @@ static void fc_lport_rnid_req(struct fc_seq *sp, struct fc_frame *in_fp, rp->rnid.rnid_cmd = ELS_LS_ACC; rp->rnid.rnid_fmt = fmt; rp->rnid.rnid_cid_len = sizeof(rp->cid); - rp->cid.rnid_wwpn = htonll(lp->wwpn); - rp->cid.rnid_wwnn = htonll(lp->wwnn); + rp->cid.rnid_wwpn = cpu_to_be64(lp->wwpn); + rp->cid.rnid_wwnn = cpu_to_be64(lp->wwnn); if (fmt == ELS_RNIDF_GEN) { rp->rnid.rnid_sid_len = sizeof(rp->gen); memcpy(&rp->gen, &lp->rnid_gen, @@ -747,8 +747,8 @@ static void fc_lport_enter_logo(struct fc_lport *lp) logo = fc_frame_payload_get(fp, sizeof(*logo)); memset(logo, 0, sizeof(*logo)); logo->fl_cmd = ELS_LOGO; - hton24(logo->fl_n_port_id, lp->fid); - logo->fl_n_port_wwn = htonll(lp->wwpn); + logo->fl_n_port_id = hton24(lp->fid); + logo->fl_n_port_wwn = cpu_to_be64(lp->wwpn); fc_frame_setup(fp, FC_RCTL_ELS_REQ, FC_TYPE_ELS); fc_frame_set_offset(fp, 0); diff --git a/drivers/scsi/libfc/fc_ns.c b/drivers/scsi/libfc/fc_ns.c index 6204bcc..c280913 100644 --- a/drivers/scsi/libfc/fc_ns.c +++ b/drivers/scsi/libfc/fc_ns.c @@ -265,7 +265,7 @@ static void fc_ns_enter_reg_ft(struct fc_lport *lp) FC_NS_RFT_ID, sizeof(*req) - sizeof(struct fc_ct_hdr)); - hton24(req->fid.fp_fid, lp->fid); + req->fid.fp_fid = hton24(lp->fid); req->fts = *lps; fc_frame_setup(fp, FC_RCTL_DD_UNSOL_CTL, FC_TYPE_CT); if (!lp->tt.exch_seq_send(lp, fp, @@ -774,7 +774,7 @@ static int fc_ns_gpn_ft_parse(struct fc_lport *lp, void *buf, size_t len) break; dp->lp = lp; dp->ids.port_id = ntoh24(np->fp_fid); - dp->ids.port_name = ntohll(np->fp_wwpn); + dp->ids.port_name = be64_to_cpu(np->fp_wwpn); dp->ids.node_name = -1; dp->ids.roles = FC_RPORT_ROLE_UNKNOWN; error = fc_ns_gnn_id_req(lp, dp); @@ -934,7 +934,7 @@ static int fc_ns_gpn_id_req(struct fc_lport *lp, struct fc_ns_port *dp) cp = fc_frame_payload_get(fp, sizeof(*cp)); fc_ns_fill_dns_hdr(lp, &cp->ct, FC_NS_GPN_ID, sizeof(cp->fid)); - hton24(cp->fid.fp_fid, dp->ids.port_id); + cp->fid.fp_fid = hton24(dp->ids.port_id); WARN_ON(!fc_lport_test_ready(lp)); @@ -989,7 +989,7 @@ static void fc_ns_gpn_id_resp(struct fc_seq *sp, struct fc_frame *fp, fr_len(fp)); break; } - dp->ids.port_name = ntohll(cp->wwn); + dp->ids.port_name = be64_to_cpu(cp->wwn); fc_ns_gnn_id_req(lp, dp); break; case FC_FS_RJT: @@ -1137,7 +1137,7 @@ static void fc_ns_enter_reg_pn(struct fc_lport *lp) req = fc_frame_payload_get(fp, sizeof(*req)); memset(req, 0, sizeof(*req)); fc_lport_fill_dns_hdr(lp, &req->ct, FC_NS_RPN_ID, sizeof(req->rn)); - hton24(req->rn.fr_fid.fp_fid, lp->fid); + req->rn.fr_fid.fp_fid = hton24(lp->fid); put_unaligned_be64(lp->wwpn, &req->rn.fr_wwn); fc_frame_setup(fp, FC_RCTL_DD_UNSOL_CTL, FC_TYPE_CT); if (!lp->tt.exch_seq_send(lp, fp, @@ -1191,7 +1191,7 @@ static int fc_ns_gnn_id_req(struct fc_lport *lp, struct fc_ns_port *dp) cp = fc_frame_payload_get(fp, sizeof(*cp)); fc_ns_fill_dns_hdr(lp, &cp->ct, FC_NS_GNN_ID, sizeof(cp->fid)); - hton24(cp->fid.fp_fid, dp->ids.port_id); + cp->fid.fp_fid = hton24(dp->ids.port_id); WARN_ON(!fc_lport_test_ready(lp)); @@ -1246,7 +1246,7 @@ static void fc_ns_gnn_id_resp(struct fc_seq *sp, struct fc_frame *fp, fr_len(fp)); break; } - dp->ids.node_name = ntohll(cp->wwn); + dp->ids.node_name = be64_to_cpu(cp->wwn); fc_ns_new_target(lp, NULL, &dp->ids); break; case FC_FS_RJT: diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c index cd559dd..0ca4c12 100644 --- a/drivers/scsi/libfc/fc_rport.c +++ b/drivers/scsi/libfc/fc_rport.c @@ -857,8 +857,8 @@ static void fc_rport_enter_logo(struct fc_rport *rport) logo = fc_frame_payload_get(fp, sizeof(*logo)); memset(logo, 0, sizeof(*logo)); logo->fl_cmd = ELS_LOGO; - hton24(logo->fl_n_port_id, lp->fid); - logo->fl_n_port_wwn = htonll(lp->wwpn); + logo->fl_n_port_id = hton24(lp->fid); + logo->fl_n_port_wwn = cpu_to_be64(lp->wwpn); fc_frame_setup(fp, FC_RCTL_ELS_REQ, FC_TYPE_ELS); if (!lp->tt.exch_seq_send(lp, fp, diff --git a/include/scsi/fc/fc_els.h b/include/scsi/fc/fc_els.h index af4bf0c..c1cfe21 100644 --- a/include/scsi/fc/fc_els.h +++ b/include/scsi/fc/fc_els.h @@ -357,7 +357,7 @@ struct fc_els_rrq { __u8 rrq_cmd; /* command (0x12) */ __u8 rrq_zero[3]; /* specified as zero - part of cmd */ __u8 rrq_resvd; /* reserved */ - __u8 rrq_s_id[3]; /* originator FID */ + __be24 rrq_s_id; /* originator FID */ __be16 rrq_ox_id; /* originator exchange ID */ __be16 rrq_rx_id; /* responders exchange ID */ }; @@ -369,7 +369,7 @@ struct fc_els_rec { __u8 rec_cmd; /* command (0x13) */ __u8 rec_zero[3]; /* specified as zero - part of cmd */ __u8 rec_resvd; /* reserved */ - __u8 rec_s_id[3]; /* originator FID */ + __be24 rec_s_id; /* originator FID */ __be16 rec_ox_id; /* originator exchange ID */ __be16 rec_rx_id; /* responders exchange ID */ }; @@ -383,9 +383,9 @@ struct fc_els_rec_acc { __be16 reca_ox_id; /* originator exchange ID */ __be16 reca_rx_id; /* responders exchange ID */ __u8 reca_resvd1; /* reserved */ - __u8 reca_ofid[3]; /* originator FID */ + __be24 reca_ofid; /* originator FID */ __u8 reca_resvd2; /* reserved */ - __u8 reca_rfid[3]; /* responder FID */ + __be24 reca_rfid; /* responder FID */ __be32 reca_fc4value; /* FC4 value */ __be32 reca_e_stat; /* ESB (exchange status block) status */ }; @@ -407,7 +407,7 @@ struct fc_els_logo { __u8 fl_cmd; /* command code */ __u8 fl_zero[3]; /* specified as zero - part of cmd */ __u8 fl_resvd; /* reserved */ - __u8 fl_n_port_id[3];/* N port ID */ + __be24 fl_n_port_id; /* N port ID */ __be64 fl_n_port_wwn; /* port name */ }; @@ -465,7 +465,7 @@ struct fc_els_rscn { struct fc_els_rscn_page { __u8 rscn_page_flags; /* event and address format */ - __u8 rscn_fid[3]; /* fabric ID */ + __be24 rscn_fid; /* fabric ID */ }; #define ELS_RSCN_EV_QUAL_BIT 2 /* shift count for event qualifier */ @@ -598,7 +598,7 @@ struct fc_els_rpl { struct fc_els_pnb { __be32 pnb_phys_pn; /* physical port number */ __u8 pnb_resv; /* reserved */ - __u8 pnb_port_id[3]; /* port ID */ + __be24 pnb_port_id; /* port ID */ __be64 pnb_wwpn; /* port name */ }; @@ -709,7 +709,7 @@ enum fc_els_srl_flag { struct fc_els_rls { __u8 rls_cmd; /* command */ __u8 rls_resv[4]; /* reserved - must be zero */ - __u8 rls_port_id[3]; /* port ID */ + __be24 rls_port_id; /* port ID */ }; /* @@ -741,7 +741,7 @@ struct fc_els_clir { __be64 clir_wwpn; /* incident port name */ __be64 clir_wwnn; /* incident port node name */ __u8 clir_port_type; /* incident port type */ - __u8 clir_port_id[3]; /* incident port ID */ + __be24 clir_port_id; /* incident port ID */ __be64 clir_conn_wwpn; /* connected port name */ __be64 clir_conn_wwnn; /* connected node name */ diff --git a/include/scsi/fc/fc_fcoe.h b/include/scsi/fc/fc_fcoe.h index b2e07ec..4c0f692 100644 --- a/include/scsi/fc/fc_fcoe.h +++ b/include/scsi/fc/fc_fcoe.h @@ -83,14 +83,12 @@ struct fcoe_crc_eof { /* * Store OUI + DID into MAC address field. */ -static inline void fc_fcoe_set_mac(u8 *mac, u8 *did) +static inline void fc_fcoe_set_mac(u8 *mac, __be24 *did) { mac[0] = (u8) (FC_FCOE_OUI >> 16); mac[1] = (u8) (FC_FCOE_OUI >> 8); mac[2] = (u8) FC_FCOE_OUI; - mac[3] = did[0]; - mac[4] = did[1]; - mac[5] = did[2]; + *(__be24 *) &mac[3] = *did; } /* diff --git a/include/scsi/fc/fc_fs.h b/include/scsi/fc/fc_fs.h index ba6df64..125ba15 100644 --- a/include/scsi/fc/fc_fs.h +++ b/include/scsi/fc/fc_fs.h @@ -29,14 +29,14 @@ * Frame header */ struct fc_frame_header { - __u8 fh_r_ctl; /* routing control */ - __u8 fh_d_id[3]; /* Destination ID */ + __u8 fh_r_ctl; /* routing control */ + __be24 fh_d_id; /* Destination ID */ __u8 fh_cs_ctl; /* class of service control / pri */ - __u8 fh_s_id[3]; /* Source ID */ + __be24 fh_s_id; /* Source ID */ __u8 fh_type; /* see enum fc_fh_type below */ - __u8 fh_f_ctl[3]; /* frame control */ + __be24 fh_f_ctl; /* frame control */ __u8 fh_seq_id; /* sequence ID */ __u8 fh_df_ctl; /* data field control */ diff --git a/include/scsi/fc/fc_gs.h b/include/scsi/fc/fc_gs.h index ffab027..fb082bf 100644 --- a/include/scsi/fc/fc_gs.h +++ b/include/scsi/fc/fc_gs.h @@ -27,7 +27,7 @@ struct fc_ct_hdr { __u8 ct_rev; /* revision */ - __u8 ct_in_id[3]; /* N_Port ID of original requestor */ + __be24 ct_in_id; /* N_Port ID of original requestor */ __u8 ct_fs_type; /* type of fibre channel service */ __u8 ct_fs_subtype; /* subtype */ __u8 ct_options; diff --git a/include/scsi/fc/fc_ns.h b/include/scsi/fc/fc_ns.h index 790d7b9..44c3019 100644 --- a/include/scsi/fc/fc_ns.h +++ b/include/scsi/fc/fc_ns.h @@ -76,7 +76,7 @@ struct fc_ns_pt_obj { */ struct fc_ns_fid { __u8 fp_flags; /* flags for responses only */ - __u8 fp_fid[3]; + __be24 fp_fid; }; /* @@ -119,7 +119,7 @@ struct fc_ns_gid_ft { */ struct fc_gpn_ft_resp { __u8 fp_flags; /* see fp_flags definitions above */ - __u8 fp_fid[3]; /* port ID */ + __be24 fp_fid; /* port ID */ __be32 fp_resvd; __be64 fp_wwpn; /* port name */ }; @@ -136,7 +136,7 @@ struct fc_ns_gid_pn { */ struct fc_gid_pn_resp { __u8 fp_resvd; - __u8 fp_fid[3]; /* port ID */ + __be24 fp_fid; /* port ID */ }; /* diff --git a/include/scsi/libfc/libfc.h b/include/scsi/libfc/libfc.h index d8ec019..bfe91cf 100644 --- a/include/scsi/libfc/libfc.h +++ b/include/scsi/libfc/libfc.h @@ -53,19 +53,6 @@ #define FC_EX_TIMEOUT 1 /* Exchange timeout */ #define FC_EX_CLOSED 2 /* Exchange closed */ -/* some helpful macros */ - -#define ntohll(x) be64_to_cpu(x) -#define htonll(x) cpu_to_be64(x) - -#define ntoh24(p) (((p)[0] << 16) | ((p)[1] << 8) | ((p)[2])) - -#define hton24(p, v) do { \ - p[0] = (((v) >> 16) & 0xFF); \ - p[1] = (((v) >> 8) & 0xFF); \ - p[2] = ((v) & 0xFF); \ -} while (0) - struct fc_exch_mgr; /* -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html