forked from Minki/linux
scsi: libsas: Stop hardcoding SAS address length
Many times we use 8 for SAS address length, while we already have a macro for this - SAS_ADDR_SIZE. Replace instances of this with the macro. However, don't touch the SAS address array sizes sas.h, as these are defined according to the SAS spec. Some missing whitespaces are also added, and whitespace indentation in sas_hash_addr() is also fixed (see sas_hash_addr()). Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
01d4e3a2fc
commit
7b27c5fe24
@ -1151,7 +1151,7 @@ static int sas_find_sub_addr(struct domain_device *dev, u8 *sub_addr)
|
||||
phy->attached_dev_type == SAS_FANOUT_EXPANDER_DEVICE) &&
|
||||
phy->routing_attr == SUBTRACTIVE_ROUTING) {
|
||||
|
||||
memcpy(sub_addr, phy->attached_sas_addr,SAS_ADDR_SIZE);
|
||||
memcpy(sub_addr, phy->attached_sas_addr, SAS_ADDR_SIZE);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -1163,7 +1163,7 @@ static int sas_check_level_subtractive_boundary(struct domain_device *dev)
|
||||
{
|
||||
struct expander_device *ex = &dev->ex_dev;
|
||||
struct domain_device *child;
|
||||
u8 sub_addr[8] = {0, };
|
||||
u8 sub_addr[SAS_ADDR_SIZE] = {0, };
|
||||
|
||||
list_for_each_entry(child, &ex->children, siblings) {
|
||||
if (child->dev_type != SAS_EDGE_EXPANDER_DEVICE &&
|
||||
@ -1173,7 +1173,7 @@ static int sas_check_level_subtractive_boundary(struct domain_device *dev)
|
||||
sas_find_sub_addr(child, sub_addr);
|
||||
continue;
|
||||
} else {
|
||||
u8 s2[8];
|
||||
u8 s2[SAS_ADDR_SIZE];
|
||||
|
||||
if (sas_find_sub_addr(child, s2) &&
|
||||
(SAS_ADDR(sub_addr) != SAS_ADDR(s2))) {
|
||||
@ -1760,10 +1760,11 @@ static int sas_get_phy_attached_dev(struct domain_device *dev, int phy_id,
|
||||
|
||||
res = sas_get_phy_discover(dev, phy_id, disc_resp);
|
||||
if (res == 0) {
|
||||
memcpy(sas_addr, disc_resp->disc.attached_sas_addr, 8);
|
||||
memcpy(sas_addr, disc_resp->disc.attached_sas_addr,
|
||||
SAS_ADDR_SIZE);
|
||||
*type = to_dev_type(dr);
|
||||
if (*type == 0)
|
||||
memset(sas_addr, 0, 8);
|
||||
memset(sas_addr, 0, SAS_ADDR_SIZE);
|
||||
}
|
||||
kfree(disc_resp);
|
||||
return res;
|
||||
@ -2027,10 +2028,10 @@ static int sas_rediscover_dev(struct domain_device *dev, int phy_id, bool last)
|
||||
struct expander_device *ex = &dev->ex_dev;
|
||||
struct ex_phy *phy = &ex->ex_phy[phy_id];
|
||||
enum sas_device_type type = SAS_PHY_UNUSED;
|
||||
u8 sas_addr[8];
|
||||
u8 sas_addr[SAS_ADDR_SIZE];
|
||||
int res;
|
||||
|
||||
memset(sas_addr, 0, 8);
|
||||
memset(sas_addr, 0, SAS_ADDR_SIZE);
|
||||
res = sas_get_phy_attached_dev(dev, phy_id, sas_addr, &type);
|
||||
switch (res) {
|
||||
case SMP_RESP_NO_PHY:
|
||||
|
@ -87,25 +87,27 @@ EXPORT_SYMBOL_GPL(sas_free_task);
|
||||
/*------------ SAS addr hash -----------*/
|
||||
void sas_hash_addr(u8 *hashed, const u8 *sas_addr)
|
||||
{
|
||||
const u32 poly = 0x00DB2777;
|
||||
u32 r = 0;
|
||||
int i;
|
||||
const u32 poly = 0x00DB2777;
|
||||
u32 r = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
int b;
|
||||
for (b = 7; b >= 0; b--) {
|
||||
r <<= 1;
|
||||
if ((1 << b) & sas_addr[i]) {
|
||||
if (!(r & 0x01000000))
|
||||
r ^= poly;
|
||||
} else if (r & 0x01000000)
|
||||
r ^= poly;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < SAS_ADDR_SIZE; i++) {
|
||||
int b;
|
||||
|
||||
hashed[0] = (r >> 16) & 0xFF;
|
||||
hashed[1] = (r >> 8) & 0xFF ;
|
||||
hashed[2] = r & 0xFF;
|
||||
for (b = (SAS_ADDR_SIZE - 1); b >= 0; b--) {
|
||||
r <<= 1;
|
||||
if ((1 << b) & sas_addr[i]) {
|
||||
if (!(r & 0x01000000))
|
||||
r ^= poly;
|
||||
} else if (r & 0x01000000) {
|
||||
r ^= poly;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hashed[0] = (r >> 16) & 0xFF;
|
||||
hashed[1] = (r >> 8) & 0xFF;
|
||||
hashed[2] = r & 0xFF;
|
||||
}
|
||||
|
||||
int sas_register_ha(struct sas_ha_struct *sas_ha)
|
||||
|
@ -245,9 +245,9 @@ static inline struct sas_discovery_event *to_sas_discovery_event(struct work_str
|
||||
struct sas_discovery {
|
||||
struct sas_discovery_event disc_work[DISC_NUM_EVENTS];
|
||||
unsigned long pending;
|
||||
u8 fanout_sas_addr[8];
|
||||
u8 eeds_a[8];
|
||||
u8 eeds_b[8];
|
||||
u8 fanout_sas_addr[SAS_ADDR_SIZE];
|
||||
u8 eeds_a[SAS_ADDR_SIZE];
|
||||
u8 eeds_b[SAS_ADDR_SIZE];
|
||||
int max_level;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user