Deleted Added
full compact
firewire.c (277507) firewire.c (277508)
1/*-
2 * Copyright (c) 2003 Hidetoshi Shimokawa
3 * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 19 unchanged lines hidden (view full) ---

28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
30 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 */
34
35#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2003 Hidetoshi Shimokawa
3 * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 19 unchanged lines hidden (view full) ---

28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
30 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 */
34
35#include <sys/cdefs.h>
36__FBSDID("$FreeBSD: head/sys/dev/firewire/firewire.c 277507 2015-01-21 20:02:16Z will $");
36__FBSDID("$FreeBSD: head/sys/dev/firewire/firewire.c 277508 2015-01-21 20:03:46Z will $");
37
38#include <sys/param.h>
39#include <sys/systm.h>
40#include <sys/types.h>
41
42#include <sys/jail.h>
43#include <sys/kernel.h>
44#include <sys/module.h>

--- 711 unchanged lines hidden (view full) ---

756 * does not change it's Bus Info Block or
757 * Configuration ROM.
758 */
759#define FW_MAX_GENERATION 0xF
760 newrom = malloc(CROMSIZE, M_FW, M_NOWAIT | M_ZERO);
761 src = &fc->crom_src_buf->src;
762 crom_load(src, newrom, CROMSIZE);
763 if (bcmp(newrom, fc->config_rom, CROMSIZE) != 0) {
37
38#include <sys/param.h>
39#include <sys/systm.h>
40#include <sys/types.h>
41
42#include <sys/jail.h>
43#include <sys/kernel.h>
44#include <sys/module.h>

--- 711 unchanged lines hidden (view full) ---

756 * does not change it's Bus Info Block or
757 * Configuration ROM.
758 */
759#define FW_MAX_GENERATION 0xF
760 newrom = malloc(CROMSIZE, M_FW, M_NOWAIT | M_ZERO);
761 src = &fc->crom_src_buf->src;
762 crom_load(src, newrom, CROMSIZE);
763 if (bcmp(newrom, fc->config_rom, CROMSIZE) != 0) {
764 if (src->businfo.generation++ > FW_MAX_GENERATION)
764 /* Bump generation and reload. */
765 src->businfo.generation++;
766
767 /* Handle generation count wraps. */
768 if (src->businfo.generation < FW_GENERATION_CHANGEABLE)
765 src->businfo.generation = FW_GENERATION_CHANGEABLE;
769 src->businfo.generation = FW_GENERATION_CHANGEABLE;
770
771 /* Recalculate CRC to account for generation change. */
772 crom_load(src, newrom, CROMSIZE);
766 bcopy(newrom, fc->config_rom, CROMSIZE);
767 }
768 free(newrom, M_FW);
769}
770
771/* Call once after reboot */
772void fw_init(struct firewire_comm *fc)
773{

--- 377 unchanged lines hidden (view full) ---

1151}
1152
1153void
1154fw_xfer_unload(struct fw_xfer *xfer)
1155{
1156
1157 if (xfer == NULL)
1158 return;
773 bcopy(newrom, fc->config_rom, CROMSIZE);
774 }
775 free(newrom, M_FW);
776}
777
778/* Call once after reboot */
779void fw_init(struct firewire_comm *fc)
780{

--- 377 unchanged lines hidden (view full) ---

1158}
1159
1160void
1161fw_xfer_unload(struct fw_xfer *xfer)
1162{
1163
1164 if (xfer == NULL)
1165 return;
1159 FW_GLOCK(xfer->fc);
1160 if (xfer->flag & FWXF_INQ) {
1161 STAILQ_REMOVE(&xfer->q->q, xfer, fw_xfer, link);
1162 xfer->flag &= ~FWXF_INQ;
1163#if 0
1164 xfer->q->queued--;
1165#endif
1166 }
1167 FW_GUNLOCK(xfer->fc);
1166
1168 if (xfer->fc != NULL) {
1167 if (xfer->fc != NULL) {
1168 FW_GLOCK(xfer->fc);
1169 if (xfer->flag & FWXF_INQ) {
1170 STAILQ_REMOVE(&xfer->q->q, xfer, fw_xfer, link);
1171 xfer->flag &= ~FWXF_INQ;
1172 #if 0
1173 xfer->q->queued--;
1174 #endif
1175 }
1176 FW_GUNLOCK(xfer->fc);
1177
1169 /*
1170 * Ensure that any tlabel owner can't access this
1171 * xfer after it's freed.
1172 */
1173 fw_tl_free(xfer->fc, xfer);
1174#if 1
1175 if (xfer->flag & FWXF_START)
1176 /*

--- 1205 unchanged lines hidden ---
1178 /*
1179 * Ensure that any tlabel owner can't access this
1180 * xfer after it's freed.
1181 */
1182 fw_tl_free(xfer->fc, xfer);
1183#if 1
1184 if (xfer->flag & FWXF_START)
1185 /*

--- 1205 unchanged lines hidden ---