Print this page




 111 static MR_LD_SPAN *MR_LdSpanPtrGet(U32 ld, U32 span, MR_FW_RAID_MAP_ALL *map)
 112 {
 113         return (&map->raidMap.ldSpanMap[ld].spanBlock[span].span);
 114 }
 115 
 116 /*
 117  * This function will validate Map info data provided by FW
 118  */
 119 U8 MR_ValidateMapInfo(MR_FW_RAID_MAP_ALL *map, PLD_LOAD_BALANCE_INFO lbInfo)
 120 {
 121         MR_FW_RAID_MAP *pFwRaidMap = &map->raidMap;
 122 
 123 
 124         if (pFwRaidMap->totalSize !=
 125             (sizeof (MR_FW_RAID_MAP) - sizeof (MR_LD_SPAN_MAP) +
 126             (sizeof (MR_LD_SPAN_MAP) * pFwRaidMap->ldCount))) {
 127 
 128                 con_log(CL_ANN1, (CE_NOTE,\
 129                     "map info structure size 0x%x\
 130                     is not matching with ld count\n",\
 131                     ((sizeof (MR_FW_RAID_MAP) - sizeof (MR_LD_SPAN_MAP)) +\
 132                     (sizeof (MR_LD_SPAN_MAP) * pFwRaidMap->ldCount))));
 133 
 134                 con_log(CL_ANN1, (CE_NOTE, "span map 0x%x total size 0x%x\n",\
 135                     sizeof (MR_LD_SPAN_MAP), pFwRaidMap->totalSize));
 136 
 137                 return (0);
 138         }
 139 
 140         mr_update_load_balance_params(map, lbInfo);
 141 
 142         return (1);
 143 }
 144 
 145 U32
 146 MR_GetSpanBlock(U32 ld, U64 row, U64 *span_blk, MR_FW_RAID_MAP_ALL *map, int *div_error)
 147 {
 148         MR_SPAN_BLOCK_INFO *pSpanBlock = MR_LdSpanInfoGet(ld, map);
 149         MR_QUAD_ELEMENT *quad;
 150         MR_LD_RAID      *raid = MR_LdRaidGet(ld, map);
 151         U32             span, j;
 152 
 153         for (span = 0; span < raid->spanDepth; span++, pSpanBlock++) {
 154                 for (j = 0; j < pSpanBlock->block_span_info.noElements; j++) {
 155                         quad = &pSpanBlock->block_span_info.quad[j];




 111 static MR_LD_SPAN *MR_LdSpanPtrGet(U32 ld, U32 span, MR_FW_RAID_MAP_ALL *map)
 112 {
 113         return (&map->raidMap.ldSpanMap[ld].spanBlock[span].span);
 114 }
 115 
 116 /*
 117  * This function will validate Map info data provided by FW
 118  */
 119 U8 MR_ValidateMapInfo(MR_FW_RAID_MAP_ALL *map, PLD_LOAD_BALANCE_INFO lbInfo)
 120 {
 121         MR_FW_RAID_MAP *pFwRaidMap = &map->raidMap;
 122 
 123 
 124         if (pFwRaidMap->totalSize !=
 125             (sizeof (MR_FW_RAID_MAP) - sizeof (MR_LD_SPAN_MAP) +
 126             (sizeof (MR_LD_SPAN_MAP) * pFwRaidMap->ldCount))) {
 127 
 128                 con_log(CL_ANN1, (CE_NOTE,\
 129                     "map info structure size 0x%x\
 130                     is not matching with ld count\n",\
 131                     (int)((sizeof (MR_FW_RAID_MAP) - sizeof (MR_LD_SPAN_MAP)) +\
 132                     (sizeof (MR_LD_SPAN_MAP) * pFwRaidMap->ldCount))));
 133 
 134                 con_log(CL_ANN1, (CE_NOTE, "span map 0x%x total size 0x%x\n",\
 135                     (int)sizeof (MR_LD_SPAN_MAP), pFwRaidMap->totalSize));
 136 
 137                 return (0);
 138         }
 139 
 140         mr_update_load_balance_params(map, lbInfo);
 141 
 142         return (1);
 143 }
 144 
 145 U32
 146 MR_GetSpanBlock(U32 ld, U64 row, U64 *span_blk, MR_FW_RAID_MAP_ALL *map, int *div_error)
 147 {
 148         MR_SPAN_BLOCK_INFO *pSpanBlock = MR_LdSpanInfoGet(ld, map);
 149         MR_QUAD_ELEMENT *quad;
 150         MR_LD_RAID      *raid = MR_LdRaidGet(ld, map);
 151         U32             span, j;
 152 
 153         for (span = 0; span < raid->spanDepth; span++, pSpanBlock++) {
 154                 for (j = 0; j < pSpanBlock->block_span_info.noElements; j++) {
 155                         quad = &pSpanBlock->block_span_info.quad[j];