Deleted Added
full compact
isp_library.c (317360) isp_library.c (321870)
1/*-
1/*-
2 * Copyright (c) 2009-2017 Alexander Motin <mav@FreeBSD.org>
2 * Copyright (c) 1997-2009 by Matthew Jacob
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright

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

30 */
31#ifdef __NetBSD__
32#include <sys/cdefs.h>
33__KERNEL_RCSID(0, "$NetBSD$");
34#include <dev/ic/isp_netbsd.h>
35#endif
36#ifdef __FreeBSD__
37#include <sys/cdefs.h>
3 * Copyright (c) 1997-2009 by Matthew Jacob
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:
9 *
10 * 1. Redistributions of source code must retain the above copyright

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

31 */
32#ifdef __NetBSD__
33#include <sys/cdefs.h>
34__KERNEL_RCSID(0, "$NetBSD$");
35#include <dev/ic/isp_netbsd.h>
36#endif
37#ifdef __FreeBSD__
38#include <sys/cdefs.h>
38__FBSDID("$FreeBSD: stable/11/sys/dev/isp/isp_library.c 317360 2017-04-24 10:21:13Z mav $");
39__FBSDID("$FreeBSD: stable/11/sys/dev/isp/isp_library.c 321870 2017-08-01 13:03:06Z mav $");
39#include <dev/isp/isp_freebsd.h>
40#endif
41#ifdef __OpenBSD__
42#include <dev/ic/isp_openbsd.h>
43#endif
44#ifdef __linux__
45#include "isp_linux.h"
46#endif

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

1737 ISP_IOXPUT_16(isp, src->snscb_reserved1, &dst->snscb_reserved1);
1738 ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);
1739 ISP_IOXPUT_16(isp, src->snscb_mword_div_2, &dst->snscb_mword_div_2);
1740 ISP_IOXPUT_32(isp, src->snscb_reserved3, &dst->snscb_reserved3);
1741 ISP_IOXPUT_32(isp, src->snscb_fc4_type, &dst->snscb_fc4_type);
1742}
1743
1744void
40#include <dev/isp/isp_freebsd.h>
41#endif
42#ifdef __OpenBSD__
43#include <dev/ic/isp_openbsd.h>
44#endif
45#ifdef __linux__
46#include "isp_linux.h"
47#endif

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

1738 ISP_IOXPUT_16(isp, src->snscb_reserved1, &dst->snscb_reserved1);
1739 ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);
1740 ISP_IOXPUT_16(isp, src->snscb_mword_div_2, &dst->snscb_mword_div_2);
1741 ISP_IOXPUT_32(isp, src->snscb_reserved3, &dst->snscb_reserved3);
1742 ISP_IOXPUT_32(isp, src->snscb_fc4_type, &dst->snscb_fc4_type);
1743}
1744
1745void
1745isp_put_gxn_id_request(ispsoftc_t *isp, sns_gxn_id_req_t *src, sns_gxn_id_req_t *dst)
1746isp_put_gid_pt_request(ispsoftc_t *isp, sns_gid_pt_req_t *src, sns_gid_pt_req_t *dst)
1746{
1747 ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen);
1748 ISP_IOXPUT_16(isp, src->snscb_reserved0, &dst->snscb_reserved0);
1749 ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]);
1750 ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]);
1751 ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]);
1752 ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]);
1753 ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen);
1754 ISP_IOXPUT_16(isp, src->snscb_reserved1, &dst->snscb_reserved1);
1755 ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);
1747{
1748 ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen);
1749 ISP_IOXPUT_16(isp, src->snscb_reserved0, &dst->snscb_reserved0);
1750 ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]);
1751 ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]);
1752 ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]);
1753 ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]);
1754 ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen);
1755 ISP_IOXPUT_16(isp, src->snscb_reserved1, &dst->snscb_reserved1);
1756 ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);
1756 ISP_IOXPUT_16(isp, src->snscb_reserved2, &dst->snscb_reserved2);
1757 ISP_IOXPUT_16(isp, src->snscb_mword_div_2, &dst->snscb_mword_div_2);
1757 ISP_IOXPUT_32(isp, src->snscb_reserved3, &dst->snscb_reserved3);
1758 ISP_IOXPUT_32(isp, src->snscb_reserved3, &dst->snscb_reserved3);
1758 ISP_IOXPUT_32(isp, src->snscb_portid, &dst->snscb_portid);
1759 ISP_IOXPUT_8(isp, src->snscb_port_type, &dst->snscb_port_type);
1760 ISP_IOXPUT_8(isp, src->snscb_domain, &dst->snscb_domain);
1761 ISP_IOXPUT_8(isp, src->snscb_area, &dst->snscb_area);
1762 ISP_IOXPUT_8(isp, src->snscb_flags, &dst->snscb_flags);
1759}
1760
1763}
1764
1761/*
1762 * Generic SNS response - not particularly useful since the per-command data
1763 * isn't always 16 bit words.
1764 */
1765void
1765void
1766isp_get_sns_response(ispsoftc_t *isp, sns_scrsp_t *src, sns_scrsp_t *dst, int nwords)
1766isp_put_gxx_id_request(ispsoftc_t *isp, sns_gxx_id_req_t *src, sns_gxx_id_req_t *dst)
1767{
1767{
1768 int i;
1769 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1770 ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type);
1771 for (i = 0; i < 3; i++) {
1772 ISP_IOXGET_8(isp, &src->snscb_port_id[i],
1773 dst->snscb_port_id[i]);
1774 }
1775 for (i = 0; i < 8; i++) {
1776 ISP_IOXGET_8(isp, &src->snscb_portname[i],
1777 dst->snscb_portname[i]);
1778 }
1779 for (i = 0; i < nwords; i++) {
1780 ISP_IOXGET_16(isp, &src->snscb_data[i], dst->snscb_data[i]);
1781 }
1768 ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen);
1769 ISP_IOXPUT_16(isp, src->snscb_reserved0, &dst->snscb_reserved0);
1770 ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]);
1771 ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]);
1772 ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]);
1773 ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]);
1774 ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen);
1775 ISP_IOXPUT_16(isp, src->snscb_reserved1, &dst->snscb_reserved1);
1776 ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);
1777 ISP_IOXPUT_16(isp, src->snscb_mword_div_2, &dst->snscb_mword_div_2);
1778 ISP_IOXPUT_32(isp, src->snscb_reserved3, &dst->snscb_reserved3);
1779 ISP_IOXPUT_32(isp, src->snscb_portid, &dst->snscb_portid);
1782}
1783
1784void
1780}
1781
1782void
1785isp_get_gid_ft_response(ispsoftc_t *isp, sns_gid_ft_rsp_t *src, sns_gid_ft_rsp_t *dst, int nwords)
1783isp_get_gid_xx_response(ispsoftc_t *isp, sns_gid_xx_rsp_t *src, sns_gid_xx_rsp_t *dst, int nwords)
1786{
1784{
1787 int i;
1785 int i, j;
1786
1788 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1789 for (i = 0; i < nwords; i++) {
1787 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1788 for (i = 0; i < nwords; i++) {
1790 int j;
1791 ISP_IOXGET_8(isp, &src->snscb_ports[i].control, dst->snscb_ports[i].control);
1789 ISP_IOZGET_8(isp, &src->snscb_ports[i].control,
1790 dst->snscb_ports[i].control);
1792 for (j = 0; j < 3; j++) {
1791 for (j = 0; j < 3; j++) {
1793 ISP_IOXGET_8(isp, &src->snscb_ports[i].portid[j], dst->snscb_ports[i].portid[j]);
1792 ISP_IOZGET_8(isp, &src->snscb_ports[i].portid[j],
1793 dst->snscb_ports[i].portid[j]);
1794 }
1794 }
1795 if (dst->snscb_ports[i].control & 0x80) {
1795 if (dst->snscb_ports[i].control & 0x80)
1796 break;
1796 break;
1797 }
1798 }
1799}
1800
1801void
1802isp_get_gxn_id_response(ispsoftc_t *isp, sns_gxn_id_rsp_t *src, sns_gxn_id_rsp_t *dst)
1803{
1804 int i;
1797 }
1798}
1799
1800void
1801isp_get_gxn_id_response(ispsoftc_t *isp, sns_gxn_id_rsp_t *src, sns_gxn_id_rsp_t *dst)
1802{
1803 int i;
1804
1805 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1805 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1806 for (i = 0; i < 8; i++)
1807 ISP_IOZGET_8(isp, &src->snscb_wwn[i], dst->snscb_wwn[i]);
1808}
1809
1810void
1811isp_get_gft_id_response(ispsoftc_t *isp, sns_gft_id_rsp_t *src, sns_gft_id_rsp_t *dst)
1812{
1813 int i;
1814
1815 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1806 for (i = 0; i < 8; i++) {
1816 for (i = 0; i < 8; i++) {
1807 ISP_IOXGET_8(isp, &src->snscb_wwn[i], dst->snscb_wwn[i]);
1817 ISP_IOZGET_32(isp, &src->snscb_fc4_types[i],
1818 dst->snscb_fc4_types[i]);
1808 }
1809}
1810
1811void
1812isp_get_gff_id_response(ispsoftc_t *isp, sns_gff_id_rsp_t *src, sns_gff_id_rsp_t *dst)
1813{
1814 int i;
1819 }
1820}
1821
1822void
1823isp_get_gff_id_response(ispsoftc_t *isp, sns_gff_id_rsp_t *src, sns_gff_id_rsp_t *dst)
1824{
1825 int i;
1826
1815 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1816 for (i = 0; i < 32; i++) {
1827 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1828 for (i = 0; i < 32; i++) {
1817 ISP_IOXGET_32(isp, &src->snscb_fc4_features[i], dst->snscb_fc4_features[i]);
1829 ISP_IOZGET_32(isp, &src->snscb_fc4_features[i],
1830 dst->snscb_fc4_features[i]);
1818 }
1819}
1820
1821void
1822isp_get_ga_nxt_response(ispsoftc_t *isp, sns_ga_nxt_rsp_t *src, sns_ga_nxt_rsp_t *dst)
1823{
1824 int i;
1825 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1831 }
1832}
1833
1834void
1835isp_get_ga_nxt_response(ispsoftc_t *isp, sns_ga_nxt_rsp_t *src, sns_ga_nxt_rsp_t *dst)
1836{
1837 int i;
1838 isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
1826 ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type);
1839 ISP_IOZGET_8(isp, &src->snscb_port_type, dst->snscb_port_type);
1827 for (i = 0; i < 3; i++) {
1840 for (i = 0; i < 3; i++) {
1828 ISP_IOXGET_8(isp, &src->snscb_port_id[i], dst->snscb_port_id[i]);
1841 ISP_IOZGET_8(isp, &src->snscb_port_id[i], dst->snscb_port_id[i]);
1829 }
1830 for (i = 0; i < 8; i++) {
1842 }
1843 for (i = 0; i < 8; i++) {
1831 ISP_IOXGET_8(isp, &src->snscb_portname[i], dst->snscb_portname[i]);
1844 ISP_IOZGET_8(isp, &src->snscb_portname[i], dst->snscb_portname[i]);
1832 }
1845 }
1833 ISP_IOXGET_8(isp, &src->snscb_pnlen, dst->snscb_pnlen);
1846 ISP_IOZGET_8(isp, &src->snscb_pnlen, dst->snscb_pnlen);
1834 for (i = 0; i < 255; i++) {
1847 for (i = 0; i < 255; i++) {
1835 ISP_IOXGET_8(isp, &src->snscb_pname[i], dst->snscb_pname[i]);
1848 ISP_IOZGET_8(isp, &src->snscb_pname[i], dst->snscb_pname[i]);
1836 }
1837 for (i = 0; i < 8; i++) {
1849 }
1850 for (i = 0; i < 8; i++) {
1838 ISP_IOXGET_8(isp, &src->snscb_nodename[i], dst->snscb_nodename[i]);
1851 ISP_IOZGET_8(isp, &src->snscb_nodename[i], dst->snscb_nodename[i]);
1839 }
1852 }
1840 ISP_IOXGET_8(isp, &src->snscb_nnlen, dst->snscb_nnlen);
1853 ISP_IOZGET_8(isp, &src->snscb_nnlen, dst->snscb_nnlen);
1841 for (i = 0; i < 255; i++) {
1854 for (i = 0; i < 255; i++) {
1842 ISP_IOXGET_8(isp, &src->snscb_nname[i], dst->snscb_nname[i]);
1855 ISP_IOZGET_8(isp, &src->snscb_nname[i], dst->snscb_nname[i]);
1843 }
1844 for (i = 0; i < 8; i++) {
1856 }
1857 for (i = 0; i < 8; i++) {
1845 ISP_IOXGET_8(isp, &src->snscb_ipassoc[i], dst->snscb_ipassoc[i]);
1858 ISP_IOZGET_8(isp, &src->snscb_ipassoc[i], dst->snscb_ipassoc[i]);
1846 }
1847 for (i = 0; i < 16; i++) {
1859 }
1860 for (i = 0; i < 16; i++) {
1848 ISP_IOXGET_8(isp, &src->snscb_ipaddr[i], dst->snscb_ipaddr[i]);
1861 ISP_IOZGET_8(isp, &src->snscb_ipaddr[i], dst->snscb_ipaddr[i]);
1849 }
1850 for (i = 0; i < 4; i++) {
1862 }
1863 for (i = 0; i < 4; i++) {
1851 ISP_IOXGET_8(isp, &src->snscb_svc_class[i], dst->snscb_svc_class[i]);
1864 ISP_IOZGET_8(isp, &src->snscb_svc_class[i], dst->snscb_svc_class[i]);
1852 }
1853 for (i = 0; i < 32; i++) {
1865 }
1866 for (i = 0; i < 32; i++) {
1854 ISP_IOXGET_8(isp, &src->snscb_fc4_types[i], dst->snscb_fc4_types[i]);
1867 ISP_IOZGET_8(isp, &src->snscb_fc4_types[i], dst->snscb_fc4_types[i]);
1855 }
1856 for (i = 0; i < 8; i++) {
1868 }
1869 for (i = 0; i < 8; i++) {
1857 ISP_IOXGET_8(isp, &src->snscb_fpname[i], dst->snscb_fpname[i]);
1870 ISP_IOZGET_8(isp, &src->snscb_fpname[i], dst->snscb_fpname[i]);
1858 }
1871 }
1859 ISP_IOXGET_8(isp, &src->snscb_reserved, dst->snscb_reserved);
1872 ISP_IOZGET_8(isp, &src->snscb_reserved, dst->snscb_reserved);
1860 for (i = 0; i < 3; i++) {
1873 for (i = 0; i < 3; i++) {
1861 ISP_IOXGET_8(isp, &src->snscb_hardaddr[i], dst->snscb_hardaddr[i]);
1874 ISP_IOZGET_8(isp, &src->snscb_hardaddr[i], dst->snscb_hardaddr[i]);
1862 }
1863}
1864
1865void
1866isp_get_els(ispsoftc_t *isp, els_t *src, els_t *dst)
1867{
1868 int i;
1869

--- 1460 unchanged lines hidden ---
1875 }
1876}
1877
1878void
1879isp_get_els(ispsoftc_t *isp, els_t *src, els_t *dst)
1880{
1881 int i;
1882

--- 1460 unchanged lines hidden ---