diff options
author | Joe Carnuccio <joe.carnuccio@qlogic.com> | 2014-09-25 05:16:36 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-09-25 08:25:01 -0400 |
commit | 2ac224bc0e9021520be95f6678c94440d526aa49 (patch) | |
tree | e15c2c939e8879aa1ea98235c859edc304f2d6ce | |
parent | ce9b9b0858c6806ae84072d5fabb5ae0ca3f2799 (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.c | 7 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_tmpl.c | 27 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_tmpl.h | 6 |
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 | ||
692 | static int | 692 | static int |
693 | qla27xx_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); | ||
714 | done: | ||
715 | return false; | ||
716 | } | ||
717 | |||
718 | static int | ||
693 | qla27xx_fwdt_entry_other(struct scsi_qla_host *vha, | 719 | qla27xx_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 | ||