mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-23 18:07:03 +00:00
[SCSI] zfcp: Simplify mask lookups for incoming RSCNs
Use an array for looking up the mask corresponding to the 2-bit information instead of the switch/case. Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Acked-by: Felix Beck <felix@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
3623ecba19
commit
e0d7fcb5ec
@ -159,20 +159,6 @@ struct fcp_rscn_element {
|
||||
u32 nport_did:24;
|
||||
} __attribute__((packed));
|
||||
|
||||
#define ZFCP_PORT_ADDRESS 0x0
|
||||
#define ZFCP_AREA_ADDRESS 0x1
|
||||
#define ZFCP_DOMAIN_ADDRESS 0x2
|
||||
#define ZFCP_FABRIC_ADDRESS 0x3
|
||||
|
||||
#define ZFCP_PORTS_RANGE_PORT 0xFFFFFF
|
||||
#define ZFCP_PORTS_RANGE_AREA 0xFFFF00
|
||||
#define ZFCP_PORTS_RANGE_DOMAIN 0xFF0000
|
||||
#define ZFCP_PORTS_RANGE_FABRIC 0x000000
|
||||
|
||||
#define ZFCP_NO_PORTS_PER_AREA 0x100
|
||||
#define ZFCP_NO_PORTS_PER_DOMAIN 0x10000
|
||||
#define ZFCP_NO_PORTS_PER_FABRIC 0x1000000
|
||||
|
||||
/* see fc-ph */
|
||||
struct fcp_logo {
|
||||
u32 command;
|
||||
|
@ -11,6 +11,20 @@
|
||||
|
||||
#include "zfcp_ext.h"
|
||||
|
||||
enum rscn_address_format {
|
||||
RSCN_PORT_ADDRESS = 0x0,
|
||||
RSCN_AREA_ADDRESS = 0x1,
|
||||
RSCN_DOMAIN_ADDRESS = 0x2,
|
||||
RSCN_FABRIC_ADDRESS = 0x3,
|
||||
};
|
||||
|
||||
static u32 rscn_range_mask[] = {
|
||||
[RSCN_PORT_ADDRESS] = 0xFFFFFF,
|
||||
[RSCN_AREA_ADDRESS] = 0xFFFF00,
|
||||
[RSCN_DOMAIN_ADDRESS] = 0xFF0000,
|
||||
[RSCN_FABRIC_ADDRESS] = 0x000000,
|
||||
};
|
||||
|
||||
struct ct_iu_gpn_ft_req {
|
||||
struct ct_hdr header;
|
||||
u8 flags;
|
||||
@ -160,22 +174,7 @@ static void zfcp_fc_incoming_rscn(struct zfcp_fsf_req *fsf_req)
|
||||
for (i = 1; i < no_entries; i++) {
|
||||
/* skip head and start with 1st element */
|
||||
fcp_rscn_element++;
|
||||
switch (fcp_rscn_element->addr_format) {
|
||||
case ZFCP_PORT_ADDRESS:
|
||||
range_mask = ZFCP_PORTS_RANGE_PORT;
|
||||
break;
|
||||
case ZFCP_AREA_ADDRESS:
|
||||
range_mask = ZFCP_PORTS_RANGE_AREA;
|
||||
break;
|
||||
case ZFCP_DOMAIN_ADDRESS:
|
||||
range_mask = ZFCP_PORTS_RANGE_DOMAIN;
|
||||
break;
|
||||
case ZFCP_FABRIC_ADDRESS:
|
||||
range_mask = ZFCP_PORTS_RANGE_FABRIC;
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
range_mask = rscn_range_mask[fcp_rscn_element->addr_format];
|
||||
_zfcp_fc_incoming_rscn(fsf_req, range_mask, fcp_rscn_element);
|
||||
}
|
||||
schedule_work(&fsf_req->adapter->scan_work);
|
||||
|
Loading…
Reference in New Issue
Block a user