Lines Matching full:span
123 u16 MR_LdSpanArrayGet(u32 ld, u32 span, struct MR_DRV_RAID_MAP_ALL *map) in MR_LdSpanArrayGet() argument
125 return le16_to_cpu(map->raidMap.ldSpanMap[ld].spanBlock[span].span.arrayRef); in MR_LdSpanArrayGet()
148 static struct MR_LD_SPAN *MR_LdSpanPtrGet(u32 ld, u32 span, in MR_LdSpanPtrGet() argument
151 return &map->raidMap.ldSpanMap[ld].spanBlock[span].span; in MR_LdSpanPtrGet()
338 dev_err(&instance->pdev->dev, "megasas: span map %x, pDrvRaidMap->totalSize : %x\n", in MR_ValidateMapInfo()
379 u32 span, j; in MR_GetSpanBlock() local
381 for (span = 0; span < raid->spanDepth; span++, pSpanBlock++) { in MR_GetSpanBlock()
398 return span; in MR_GetSpanBlock()
408 * This routine calculates the Span block for given row using spanset.
418 * span - Span number
430 u32 span, info; in mr_spanset_get_span_block() local
442 for (span = 0; span < raid->spanDepth; span++) in mr_spanset_get_span_block()
443 if (le32_to_cpu(map->raidMap.ldSpanMap[ld].spanBlock[span]. in mr_spanset_get_span_block()
446 spanBlock[span]. in mr_spanset_get_span_block()
463 return span; in mr_spanset_get_span_block()
493 u32 info, strip_offset, span, span_offset; in get_row_from_strip() local
509 for (span = 0, span_offset = 0; span < raid->spanDepth; span++) in get_row_from_strip()
510 if (le32_to_cpu(map->raidMap.ldSpanMap[ld].spanBlock[span]. in get_row_from_strip()
513 span_set->strip_offset[span]) in get_row_from_strip()
551 u32 span, info; in get_strip_from_row() local
562 for (span = 0; span < raid->spanDepth; span++) in get_strip_from_row()
563 if (le32_to_cpu(map->raidMap.ldSpanMap[ld].spanBlock[span]. in get_strip_from_row()
566 spanBlock[span].block_span_info.quad[info]; in get_strip_from_row()
577 strip += span_set->strip_offset[span]; in get_strip_from_row()
611 u32 info, strip_offset, span, span_offset, retval; in get_arm_from_strip() local
625 for (span = 0, span_offset = 0; span < raid->spanDepth; span++) in get_arm_from_strip()
626 if (le32_to_cpu(map->raidMap.ldSpanMap[ld].spanBlock[span]. in get_arm_from_strip()
629 span_set->strip_offset[span]) in get_arm_from_strip()
631 span_set->strip_offset[span]; in get_arm_from_strip()
648 static u8 get_arm(struct megasas_instance *instance, u32 ld, u8 span, u64 stripe, in get_arm() argument
659 arm = mega_mod64(stripe, SPAN_ROW_SIZE(map, ld, span)); in get_arm()
676 * This routine calculates the arm, span and block for the specified stripe and
687 * span - Span number
697 u8 physArm, span; in mr_spanset_get_phy_params() local
707 /*Get row and span from io_info for Uneven Span IO.*/ in mr_spanset_get_phy_params()
709 span = io_info->start_span; in mr_spanset_get_phy_params()
716 rowMod = mega_mod64(row, SPAN_ROW_SIZE(map, ld, span)); in mr_spanset_get_phy_params()
717 armQ = SPAN_ROW_SIZE(map, ld, span) - 1 - rowMod; in mr_spanset_get_phy_params()
719 if (arm >= SPAN_ROW_SIZE(map, ld, span)) in mr_spanset_get_phy_params()
720 arm -= SPAN_ROW_SIZE(map, ld, span); in mr_spanset_get_phy_params()
724 physArm = get_arm(instance, ld, span, stripRow, map); in mr_spanset_get_phy_params()
728 arRef = MR_LdSpanArrayGet(ld, span, map); in mr_spanset_get_phy_params()
759 *pdBlock += stripRef + le64_to_cpu(MR_LdSpanPtrGet(ld, span, map)->startBlk); in mr_spanset_get_phy_params()
762 (span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm; in mr_spanset_get_phy_params()
764 (span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm; in mr_spanset_get_phy_params()
767 (span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm; in mr_spanset_get_phy_params()
777 * This routine calculates the arm, span and block for the specified stripe and
788 * span - Span number
798 u8 physArm, span; in MR_GetPhyParams() local
832 span = 0; in MR_GetPhyParams()
835 span = (u8)MR_GetSpanBlock(ld, row, pdBlock, map); in MR_GetPhyParams()
836 if (span == SPAN_INVALID) in MR_GetPhyParams()
840 /* Get the array on which this span is present */ in MR_GetPhyParams()
841 arRef = MR_LdSpanArrayGet(ld, span, map); in MR_GetPhyParams()
875 *pdBlock += stripRef + le64_to_cpu(MR_LdSpanPtrGet(ld, span, map)->startBlk); in MR_GetPhyParams()
878 (span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm; in MR_GetPhyParams()
880 (span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm; in MR_GetPhyParams()
883 (span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm; in MR_GetPhyParams()
909 u8 span, dataArms, arms, dataArm, logArm; in mr_get_phy_params_r56_rmw() local
927 span = 0; in mr_get_phy_params_r56_rmw()
929 span = (u8)MR_GetSpanBlock(ld, rowNum, pdBlock, map); in mr_get_phy_params_r56_rmw()
930 if (span == SPAN_INVALID) in mr_get_phy_params_r56_rmw()
954 pRAID_Context->span_arm = (span << RAID_CTX_SPANARM_SPAN_SHIFT) | dataArm; in mr_get_phy_params_r56_rmw()
1006 * if rowDataSize @RAID map and spanRowDataSize @SPAN INFO are zero in MR_BuildRaidContext()
1016 "raid->rowDataSize is 0, but has SPAN[0]" in MR_BuildRaidContext()
1107 * For Even span region lock optimization. in MR_BuildRaidContext()
1128 * For Uneven span region lock optimization. in MR_BuildRaidContext()
1223 u8 span, count; in mr_update_span_set() local
1239 for (span = 0; span < raid->spanDepth; span++) { in mr_update_span_set()
1240 if (le32_to_cpu(map->raidMap.ldSpanMap[ld].spanBlock[span]. in mr_update_span_set()
1246 spanBlock[span].block_span_info. in mr_update_span_set()
1315 if (span == raid->spanDepth) in mr_update_span_set()
1357 u8 bestArm, pd0, pd1, span, arm; in megasas_get_best_arm_pd() local
1363 span = ((io_info->span_arm & RAID_CTX_SPANARM_SPAN_MASK) in megasas_get_best_arm_pd()
1370 SPAN_ROW_SIZE(drv_map, ld, span) : raid->rowSize; in megasas_get_best_arm_pd()
1372 arRef = MR_LdSpanArrayGet(ld, span, drv_map); in megasas_get_best_arm_pd()
1402 (span << RAID_CTX_SPANARM_SPAN_SHIFT) | bestArm; in megasas_get_best_arm_pd()