aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Carnuccio <joe.carnuccio@qlogic.com>2014-09-25 05:16:36 -0400
committerChristoph Hellwig <hch@lst.de>2014-09-25 08:25:01 -0400
commit2ac224bc0e9021520be95f6678c94440d526aa49 (patch)
treee15c2c939e8879aa1ea98235c859edc304f2d6ce
parentce9b9b0858c6806ae84072d5fabb5ae0ca3f2799 (diff)
qla2xxx: Add ISP27xx fwdump template entry T275 (insert buffer).
Signed-off-by: Joe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r--drivers/scsi/qla2xxx/qla_dbg.c7
-rw-r--r--drivers/scsi/qla2xxx/qla_tmpl.c27
-rw-r--r--drivers/scsi/qla2xxx/qla_tmpl.h6
3 files changed, 36 insertions, 4 deletions
diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
index 61bd49f4f7bf..fff8769f0b33 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.c
+++ b/drivers/scsi/qla2xxx/qla_dbg.c
@@ -64,11 +64,10 @@
64 * | | | 0xb13c-0xb140 | 64 * | | | 0xb13c-0xb140 |
65 * | | | 0xb149 | 65 * | | | 0xb149 |
66 * | MultiQ | 0xc00c | | 66 * | MultiQ | 0xc00c | |
67 * | Misc | 0xd212 | 0xd011-0xd017 | 67 * | Misc | 0xd213 | 0xd011-0xd017 |
68 * | | | 0xd020 | 68 * | | | 0xd031-0xd0ff |
69 * | | | 0xd030-0xd0ff |
70 * | | | 0xd101-0xd1fe | 69 * | | | 0xd101-0xd1fe |
71 * | | | 0xd213-0xd2fe | 70 * | | | 0xd214-0xd2fe |
72 * | Target Mode | 0xe078 | | 71 * | Target Mode | 0xe078 | |
73 * | Target Mode Management | 0xf072 | 0xf002-0xf003 | 72 * | Target Mode Management | 0xf072 | 0xf002-0xf003 |
74 * | | | 0xf046-0xf049 | 73 * | | | 0xf046-0xf049 |
diff --git a/drivers/scsi/qla2xxx/qla_tmpl.c b/drivers/scsi/qla2xxx/qla_tmpl.c
index 6f2f7b29607d..d92ee068e802 100644
--- a/drivers/scsi/qla2xxx/qla_tmpl.c
+++ b/drivers/scsi/qla2xxx/qla_tmpl.c
@@ -690,6 +690,32 @@ qla27xx_fwdt_entry_t274(struct scsi_qla_host *vha,
690} 690}
691 691
692static int 692static int
693qla27xx_fwdt_entry_t275(struct scsi_qla_host *vha,
694 struct qla27xx_fwdt_entry *ent, void *buf, ulong *len)
695{
696 ulong offset = offsetof(typeof(*ent), t275.buffer);
697
698 ql_dbg(ql_dbg_misc, vha, 0xd213,
699 "%s: buffer(%x) [%lx]\n", __func__, ent->t275.length, *len);
700 if (!ent->t275.length) {
701 ql_dbg(ql_dbg_misc, vha, 0xd020,
702 "%s: buffer zero length\n", __func__);
703 qla27xx_skip_entry(ent, buf);
704 goto done;
705 }
706 if (offset + ent->t275.length > ent->hdr.entry_size) {
707 ql_dbg(ql_dbg_misc, vha, 0xd030,
708 "%s: buffer overflow\n", __func__);
709 qla27xx_skip_entry(ent, buf);
710 goto done;
711 }
712
713 qla27xx_insertbuf(ent->t275.buffer, ent->t275.length, buf, len);
714done:
715 return false;
716}
717
718static int
693qla27xx_fwdt_entry_other(struct scsi_qla_host *vha, 719qla27xx_fwdt_entry_other(struct scsi_qla_host *vha,
694 struct qla27xx_fwdt_entry *ent, void *buf, ulong *len) 720 struct qla27xx_fwdt_entry *ent, void *buf, ulong *len)
695{ 721{
@@ -731,6 +757,7 @@ static struct qla27xx_fwdt_entry_call ql27xx_fwdt_entry_call_list[] = {
731 { ENTRY_TYPE_RDREMRAM , qla27xx_fwdt_entry_t272 } , 757 { ENTRY_TYPE_RDREMRAM , qla27xx_fwdt_entry_t272 } ,
732 { ENTRY_TYPE_PCICFG , qla27xx_fwdt_entry_t273 } , 758 { ENTRY_TYPE_PCICFG , qla27xx_fwdt_entry_t273 } ,
733 { ENTRY_TYPE_GET_SHADOW , qla27xx_fwdt_entry_t274 } , 759 { ENTRY_TYPE_GET_SHADOW , qla27xx_fwdt_entry_t274 } ,
760 { ENTRY_TYPE_WRITE_BUF , qla27xx_fwdt_entry_t275 } ,
734 { -1 , qla27xx_fwdt_entry_other } 761 { -1 , qla27xx_fwdt_entry_other }
735}; 762};
736 763
diff --git a/drivers/scsi/qla2xxx/qla_tmpl.h b/drivers/scsi/qla2xxx/qla_tmpl.h
index 1967424c8e64..f19856bb873f 100644
--- a/drivers/scsi/qla2xxx/qla_tmpl.h
+++ b/drivers/scsi/qla2xxx/qla_tmpl.h
@@ -53,6 +53,7 @@ struct __packed qla27xx_fwdt_template {
53#define ENTRY_TYPE_RDREMRAM 272 53#define ENTRY_TYPE_RDREMRAM 272
54#define ENTRY_TYPE_PCICFG 273 54#define ENTRY_TYPE_PCICFG 273
55#define ENTRY_TYPE_GET_SHADOW 274 55#define ENTRY_TYPE_GET_SHADOW 274
56#define ENTRY_TYPE_WRITE_BUF 275
56 57
57#define CAPTURE_FLAG_PHYS_ONLY BIT_0 58#define CAPTURE_FLAG_PHYS_ONLY BIT_0
58#define CAPTURE_FLAG_PHYS_VIRT BIT_1 59#define CAPTURE_FLAG_PHYS_VIRT BIT_1
@@ -193,6 +194,11 @@ struct __packed qla27xx_fwdt_entry {
193 uint8_t queue_type; 194 uint8_t queue_type;
194 uint8_t reserved[3]; 195 uint8_t reserved[3];
195 } t274; 196 } t274;
197
198 struct __packed {
199 uint32_t length;
200 uint8_t buffer[];
201 } t275;
196 }; 202 };
197}; 203};
198 204