scsi.h: Make exported header exportable
Subsystems (2)
PATCH 1/2 scsi.h: Make exported header exportable
* Move kernel specific things to end of file inside an #ifdef __KERNEL__ clause
* Convert some u8 to __u8
CC Peter Korsgaard <[email protected]>
Signed-off-by Boaz Harrosh <[email protected]>
--- include/scsi/scsi.h | 97 +++++++++++++++++++++++++++------------------------ 1 files changed, 51 insertions(+), 46 deletions(-)
include/scsi/scsi.h +51 -46
@@ -10,39 +10,6 @@#include <linux/types.h> -struct scsi_cmnd ; - -/* -* The maximum number of SG segments that we will put inside a -* scatterlist (unless chaining is used). Should ideally fit inside a -* single page, to avoid a higher order allocation. We could define this -* to SG_MAX_SINGLE_ALLOC to pack correctly at the highest order. The -* minimum value is 32 -*/ -#define SCSI_MAX_SG_SEGMENTS 128 - -/* -* Like SCSI_MAX_SG_SEGMENTS, but for archs that have sg chaining. This limit -* is totally arbitrary, a setting of 2048 will get you at least 8mb ios. -*/ -#ifdef ARCH_HAS_SG_CHAIN -#define SCSI_MAX_SG_CHAIN_SEGMENTS 2048 -#else -#define SCSI_MAX_SG_CHAIN_SEGMENTS SCSI_MAX_SG_SEGMENTS -#endif - -/* -* DIX-capable adapters effectively support infinite chaining for the -* protection information scatterlist -*/ -#define SCSI_MAX_PROT_SG_SEGMENTS 0xFFFF - -/* -* Special value for scanning to specify scanning or rescanning of all -* possible channels, (target) ids, or luns on a given shost. -*/ -#define SCAN_WILD_CARD ~0 -/* * SCSI opcodes */
@@ -173,16 +140,6 @@ scsi_varlen_cdb_length(const void *hdr)return ((struct scsi_varlen_cdb_hdr *)hdr)->additional_cdb_length +8 ; } -extern const unsigned char scsi_command_size_tbl[8 ]; -#define COMMAND_SIZE (opcode) scsi_command_size_tbl[((opcode) >> 5) & 7] - -static inline unsigned -scsi_command_size (const unsigned char *cmnd) -{ -return (cmnd[0 ] ==VARIABLE_LENGTH_CMD ) ? -scsi_varlen_cdb_length (cmnd) :COMMAND_SIZE (cmnd[0 ]); -} -/* * SCSI Architecture Model (SAM) Status codes. Taken from SAM-3 draft * T10/1561-D Revision 4 Draft dated 7th November 2002.
@@ -298,9 +255,6 @@ enum scsi_protocol { SCSI_PROTOCOL_UNSPEC = 0xf, /* No specific protocol */ }; -/* Returns a human-readable name for the device */ -extern const char *scsi_device_type (unsigned type); -/* * standard mode-select header prepended to all mode-select commands */
@@ -526,4 +480,55 @@ static inline __u32 scsi_to_u32(__u8 *ptr) return (ptr[0]<<24) + (ptr[1]<<16) + (ptr[2]<<8) + ptr[3]; } + +#ifdef __KERNEL__ + +struct scsi_cmnd ; + +/* +* The maximum number of SG segments that we will put inside a +* scatterlist (unless chaining is used). Should ideally fit inside a +* single page, to avoid a higher order allocation. We could define this +* to SG_MAX_SINGLE_ALLOC to pack correctly at the highest order. The +* minimum value is 32 +*/ +#define SCSI_MAX_SG_SEGMENTS 128 + +/* +* Like SCSI_MAX_SG_SEGMENTS, but for archs that have sg chaining. This limit +* is totally arbitrary, a setting of 2048 will get you at least 8mb ios. +*/ +#ifdef ARCH_HAS_SG_CHAIN +#define SCSI_MAX_SG_CHAIN_SEGMENTS 2048 +#else +#define SCSI_MAX_SG_CHAIN_SEGMENTS SCSI_MAX_SG_SEGMENTS +#endif + +/* +* DIX-capable adapters effectively support infinite chaining for the +* protection information scatterlist +*/ +#define SCSI_MAX_PROT_SG_SEGMENTS 0xFFFF + +/* +* Special value for scanning to specify scanning or rescanning of all +* possible channels, (target) ids, or luns on a given shost. +*/ +#define SCAN_WILD_CARD ~0 + +extern const unsigned char scsi_command_size_tbl[8 ]; +#define COMMAND_SIZE (opcode) scsi_command_size_tbl[((opcode) >> 5) & 7] + +static inline unsigned +scsi_command_size (const unsigned char *cmnd) +{ +return (cmnd[0 ] ==VARIABLE_LENGTH_CMD ) ? +scsi_varlen_cdb_length (cmnd) :COMMAND_SIZE (cmnd[0 ]); +} + +/* Returns a human-readable name for the device */ +extern const char *scsi_device_type (unsigned type); + +#endif /* __KERNEL__ */ +#endif /* _SCSI_SCSI_H */
Signature · 1 line
1.7.2.3
PATCH 2/2 scsi.h: Remove pointless and wrong scsi_to_u32
In most architectures current code is 50-90 times
slower than the proper Kernel's routines.
Signed-off-by Boaz Harrosh <[email protected]>
--- drivers/scsi/libsas/sas_expander.c | 9 +++++---- include/scsi/scsi.h | 7 ------- 2 files changed, 5 insertions(+), 11 deletions(-)
drivers/scsi/libsas/sas_expander.c +5 -4
@@ -25,6 +25,7 @@#include <linux/scatterlist.h> #include <linux/blkdev.h> #include <linux/slab.h> +#include <asm/unaligned.h> #include "sas_internal.h"
@@ -545,10 +546,10 @@ int sas_smp_get_phy_events(struct sas_phy *phy)if (!res) goto out; - phy->invalid_dword_count =scsi_to_u32 (&resp[12 ]); - phy->running_disparity_error_count =scsi_to_u32 (&resp[16 ]); - phy->loss_of_dword_sync_count =scsi_to_u32 (&resp[20 ]); - phy->phy_reset_problem_count =scsi_to_u32 (&resp[24 ]); + phy->invalid_dword_count =get_unaligned_be32 (&resp[12 ]); + phy->running_disparity_error_count =get_unaligned_be32 (&resp[16 ]); + phy->loss_of_dword_sync_count =get_unaligned_be32 (&resp[20 ]); + phy->phy_reset_problem_count =get_unaligned_be32 (&resp[24 ]); out:kfree (resp);
include/scsi/scsi.h +0 -7
@@ -474,13 +474,6 @@ static inline int scsi_is_wlun(unsigned int lun)/* Used to obtain the PCI location of a device */ #define SCSI_IOCTL_GET_PCI 0x5387 -/* Pull a u32 out of a SCSI message (using BE SCSI conventions) */ -static inline __u32 scsi_to_u32 (__u8 *ptr) -{ -return (ptr[0 ]<<24 ) + (ptr[1 ]<<16 ) + (ptr[2 ]<<8 ) + ptr[3 ]; -} - -#ifdef __KERNEL__struct scsi_cmnd ;
Signature · 1 line
1.7.2.3