Skip to content

Commit

Permalink
[nes]: BRIDGE + ETHERNET + HAL changes ...
Browse files Browse the repository at this point in the history
  • Loading branch information
nes-repo committed Oct 23, 2014
1 parent ec3baf3 commit d497a03
Show file tree
Hide file tree
Showing 9 changed files with 80 additions and 58 deletions.
28 changes: 15 additions & 13 deletions bridge/ieee8021PbMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -1050,10 +1050,12 @@ ieee8021PbEdgePortRowStatus_handler (
ieee8021PbEdgePortEntry_t *poEntry, uint8_t u8RowStatus)
{
register uint8_t u8RealStatus = u8RowStatus & xRowStatus_mask_c;
register ieee8021BridgeBaseEntry_t *poIeee8021BridgeBaseEntry = NULL;
register ieee8021BridgeBasePortEntry_t *poIeee8021BridgeBasePortEntry = NULL;
register ieee8021PbCnpEntry_t *poIeee8021PbCnpEntry = NULL;

if ((poIeee8021BridgeBasePortEntry = ieee8021BridgeBasePortTable_getByIndex (poEntry->u32CComponentId, poEntry->u32PepPort)) == NULL ||
if ((poIeee8021BridgeBaseEntry = ieee8021BridgeBaseTable_getByIndex (poEntry->u32CComponentId)) == NULL ||
(poIeee8021BridgeBasePortEntry = ieee8021BridgeBasePortTable_getByIndex (poEntry->u32CComponentId, poEntry->u32PepPort)) == NULL ||
(poIeee8021PbCnpEntry = ieee8021PbCnpTable_getByIndex (poEntry->u32BridgeBasePortComponentId, poEntry->u32PepPort)) != NULL)
{
goto ieee8021PbEdgePortRowStatus_handler_cleanup;
Expand All @@ -1075,7 +1077,7 @@ ieee8021PbEdgePortRowStatus_handler (
{
case xRowStatus_active_c:
case xRowStatus_notReady_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus) ||
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus) ||
!ieee8021PbCnpRowStatus_handler (poIeee8021PbCnpEntry, u8RealStatus))
{
goto ieee8021PbEdgePortRowStatus_handler_cleanup;
Expand All @@ -1087,7 +1089,7 @@ ieee8021PbEdgePortRowStatus_handler (
break;

case xRowStatus_notInService_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus) ||
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus) ||
!ieee8021PbCnpRowStatus_handler (poIeee8021PbCnpEntry, u8RealStatus))
{
goto ieee8021PbEdgePortRowStatus_handler_cleanup;
Expand All @@ -1107,7 +1109,7 @@ ieee8021PbEdgePortRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus) ||
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus) ||
!ieee8021PbCnpRowStatus_handler (poIeee8021PbCnpEntry, u8RealStatus))
{
goto ieee8021PbEdgePortRowStatus_handler_cleanup;
Expand Down Expand Up @@ -2046,7 +2048,7 @@ ieee8021PbCnpRowStatus_handler (
u8RealStatus = xRowStatus_notReady_c;
}

if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbCnpRowStatus_handler_cleanup;
}
Expand All @@ -2057,7 +2059,7 @@ ieee8021PbCnpRowStatus_handler (
break;

case xRowStatus_notInService_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbCnpRowStatus_handler_cleanup;
}
Expand All @@ -2076,7 +2078,7 @@ ieee8021PbCnpRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbCnpRowStatus_handler_cleanup;
}
Expand Down Expand Up @@ -2725,7 +2727,7 @@ ieee8021PbPnpRowStatus_handler (
u8RealStatus = xRowStatus_notReady_c;
}

if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbPnpRowStatus_handler_cleanup;
}
Expand All @@ -2736,7 +2738,7 @@ ieee8021PbPnpRowStatus_handler (
break;

case xRowStatus_notInService_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbPnpRowStatus_handler_cleanup;
}
Expand All @@ -2755,7 +2757,7 @@ ieee8021PbPnpRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbPnpRowStatus_handler_cleanup;
}
Expand Down Expand Up @@ -3379,7 +3381,7 @@ ieee8021PbCepRowStatus_handler (
u8RealStatus = xRowStatus_notReady_c;
}

if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbCepRowStatus_handler_cleanup;
}
Expand All @@ -3390,7 +3392,7 @@ ieee8021PbCepRowStatus_handler (
break;

case xRowStatus_notInService_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbCepRowStatus_handler_cleanup;
}
Expand All @@ -3409,7 +3411,7 @@ ieee8021PbCepRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbCepRowStatus_handler_cleanup;
}
Expand Down
12 changes: 6 additions & 6 deletions bridge/ieee8021PbbMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,7 @@ ieee8021PbbVipRowStatus_handler (
u8RealStatus = xRowStatus_notReady_c;
}

if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbbVipRowStatus_handler_cleanup;
}
Expand All @@ -515,7 +515,7 @@ ieee8021PbbVipRowStatus_handler (
break;

case xRowStatus_notInService_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbbVipRowStatus_handler_cleanup;
}
Expand All @@ -534,7 +534,7 @@ ieee8021PbbVipRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbbVipRowStatus_handler_cleanup;
}
Expand Down Expand Up @@ -4308,7 +4308,7 @@ ieee8021PbbCbpRowStatus_handler (
u8RealStatus = xRowStatus_notReady_c;
}

if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbbCbpRowStatus_handler_cleanup;
}
Expand All @@ -4319,7 +4319,7 @@ ieee8021PbbCbpRowStatus_handler (
break;

case xRowStatus_notInService_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbbCbpRowStatus_handler_cleanup;
}
Expand All @@ -4338,7 +4338,7 @@ ieee8021PbbCbpRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021PbbCbpRowStatus_handler_cleanup;
}
Expand Down
52 changes: 28 additions & 24 deletions ethernet/ethernetUtils.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,37 +90,16 @@ ethernet_portEnableModify (
ifData_t *poIfEntry, int32_t i32AdminStatus)
{
register bool bRetCode = false;
ieee8021BridgePhyPortInfo_t oEthernetPhyPortInfo = ieee8021BridgePhyPortInfo_initInline (ieee8021BridgePhyPortInfo_ifToPortEntry_c);

ieee8021BridgePhyPortInfo_rdLock ();

if (!ieee8021BridgePhyPortInfo_getByIfIndex (poIfEntry->u32Index, &oEthernetPhyPortInfo))
if (!halEthernet_portConfigure (poIfEntry, halEthernet_portAdminState_c))
{
goto ethernet_portEnableModify_cleanup;
}
oEthernetPhyPortInfo.poIfToPortEntry->u32IndexComponentId = 0;
oEthernetPhyPortInfo.poIfToPortEntry->u32IndexPort = 0;

if (oEthernetPhyPortInfo.poIfToPortEntry->u32IndexComponentId != 0 &&
oEthernetPhyPortInfo.poIfToPortEntry->u32IndexPort != 0)
{
if (i32AdminStatus == xAdminStatus_up_c &&
!halEthernet_ifConfig ())
{
goto ethernet_portEnableModify_cleanup;
}

if (!halEthernet_ifEnable (poIfEntry->u32Index, i32AdminStatus))
{
goto ethernet_portEnableModify_cleanup;
}
}

bRetCode = true;

ethernet_portEnableModify_cleanup:

ieee8021BridgePhyPortInfo_unLock ();
return bRetCode;
}

Expand Down Expand Up @@ -160,22 +139,47 @@ ieee8021BridgeBaseRowStatus_update (
break;
}

register uint8_t u8HalOpCode =
u8RowStatus == xRowStatus_createAndWait_c ? halEthernet_componentCreate_c:
u8RowStatus == xRowStatus_active_c ? halEthernet_componentEnable_c:
u8RowStatus == xRowStatus_notReady_c ? halEthernet_componentDisable_c:
u8RowStatus == xRowStatus_notInService_c ? halEthernet_componentDisable_c:
u8RowStatus == xRowStatus_destroy_c ? halEthernet_componentDestroy_c: halEthernet_componentNone_c;

if ((u8RowStatus == xRowStatus_destroy_c && poEntry->u8RowStatus == xRowStatus_active_c &&
!halEthernet_componentConfigure (poEntry, halEthernet_componentDisable_c, NULL)) ||
!halEthernet_componentConfigure (poEntry, u8HalOpCode, NULL))
{
goto ieee8021BridgeBaseRowStatus_update_cleanup;
}

bRetCode = true;

// ieee8021BridgeBaseRowStatus_update_cleanup:
ieee8021BridgeBaseRowStatus_update_cleanup:

return bRetCode;
}

bool
ieee8021BridgeBasePortRowStatus_update (
ieee8021BridgeBaseEntry_t *pComponent,
ieee8021BridgeBasePortEntry_t *poEntry, uint8_t u8RowStatus)
{
register bool bRetCode = false;

register uint8_t u8HalOpCode =
u8RowStatus == xRowStatus_active_c && poEntry->u8RowStatus != xRowStatus_active_c ? halEthernet_componentPortAttach_c:
u8RowStatus != xRowStatus_active_c && poEntry->u8RowStatus == xRowStatus_active_c ? halEthernet_componentPortDetach_c: halEthernet_componentNone_c;

if (u8HalOpCode != halEthernet_componentNone_c &&
!halEthernet_componentConfigure (pComponent, u8HalOpCode, poEntry))
{
goto ieee8021BridgeBasePortRowStatus_update_cleanup;
}

bRetCode = true;

//ieee8021BridgeBasePortRowStatus_update_cleanup:
ieee8021BridgeBasePortRowStatus_update_cleanup:

return bRetCode;
}
Expand Down
1 change: 1 addition & 0 deletions ethernet/ethernetUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ bool
ieee8021BridgeBaseEntry_t *poEntry, uint8_t u8RowStatus);
bool
ieee8021BridgeBasePortRowStatus_update (
ieee8021BridgeBaseEntry_t *pComponent,
ieee8021BridgeBasePortEntry_t *poEntry, uint8_t u8RowStatus);
bool
ieee8021BridgeDot1dPortRowStatus_update (
Expand Down
13 changes: 7 additions & 6 deletions ethernet/ieee8021BridgeMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -1366,6 +1366,7 @@ ieee8021BridgeBasePortIfIndex_handler (ieee8021BridgeBasePortEntry_t *poEntry)

bool
ieee8021BridgeBasePortRowStatus_handler (
ieee8021BridgeBaseEntry_t *pComponent,
ieee8021BridgeBasePortEntry_t *poEntry, uint8_t u8RowStatus)
{
register bool bRetCode = false;
Expand All @@ -1389,7 +1390,7 @@ ieee8021BridgeBasePortRowStatus_handler (

/* TODO */

if (!ieee8021BridgeBasePortRowStatus_update (poEntry, u8RowStatus))
if (!ieee8021BridgeBasePortRowStatus_update (pComponent, poEntry, u8RowStatus))
{
goto ieee8021BridgeBasePortRowStatus_handler_cleanup;
}
Expand Down Expand Up @@ -1417,7 +1418,7 @@ ieee8021BridgeBasePortRowStatus_handler (
memcpy (poEntry->pOldEntry, poEntry, sizeof (*poEntry->pOldEntry));
}

if (!ieee8021BridgeBasePortRowStatus_update (poEntry, u8RowStatus))
if (!ieee8021BridgeBasePortRowStatus_update (pComponent, poEntry, u8RowStatus))
{
goto ieee8021BridgeBasePortRowStatus_handler_cleanup;
}
Expand Down Expand Up @@ -1447,7 +1448,7 @@ ieee8021BridgeBasePortRowStatus_handler (
poEntry->pOldEntry = NULL;
}

if (!ieee8021BridgeBasePortRowStatus_update (poEntry, u8RowStatus))
if (!ieee8021BridgeBasePortRowStatus_update (pComponent, poEntry, u8RowStatus))
{
goto ieee8021BridgeBasePortRowStatus_handler_cleanup;
}
Expand Down Expand Up @@ -7095,7 +7096,7 @@ ieee8021BridgeDot1dPortRowStatus_handler (
u8RealStatus = xRowStatus_notReady_c;
}

if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021BridgeDot1dPortRowStatus_handler_cleanup;
}
Expand All @@ -7111,7 +7112,7 @@ ieee8021BridgeDot1dPortRowStatus_handler (
break;

case xRowStatus_notInService_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021BridgeDot1dPortRowStatus_handler_cleanup;
}
Expand All @@ -7135,7 +7136,7 @@ ieee8021BridgeDot1dPortRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RealStatus))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RealStatus))
{
goto ieee8021BridgeDot1dPortRowStatus_handler_cleanup;
}
Expand Down
1 change: 1 addition & 0 deletions ethernet/ieee8021BridgeMib.h
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ bool ieee8021BridgeBasePortTable_createHier (ieee8021BridgeBaseEntry_t *pCompone
bool ieee8021BridgeBasePortTable_removeHier (ieee8021BridgeBaseEntry_t *pComponent, ieee8021BridgeBasePortEntry_t *poEntry);
bool ieee8021BridgeBasePortIfIndex_handler (ieee8021BridgeBasePortEntry_t *poEntry);
bool ieee8021BridgeBasePortRowStatus_handler (
ieee8021BridgeBaseEntry_t *pComponent,
ieee8021BridgeBasePortEntry_t *poEntry, uint8_t u8RowStatus);
#ifdef SNMP_SRC
Netsnmp_First_Data_Point ieee8021BridgeBasePortTable_getFirst;
Expand Down
6 changes: 3 additions & 3 deletions ethernet/ieee8021QBridgeMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -1128,7 +1128,7 @@ ieee8021QBridgeCVlanPortRowStatus_handler (
switch (u8RowStatus & xRowStatus_mask_c)
{
case xRowStatus_active_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RowStatus & xRowStatus_mask_c))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RowStatus & xRowStatus_mask_c))
{
goto ieee8021QBridgeCVlanPortRowStatus_handler_cleanup;
}
Expand All @@ -1151,7 +1151,7 @@ ieee8021QBridgeCVlanPortRowStatus_handler (
goto ieee8021QBridgeCVlanPortRowStatus_handler_success;
}

if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RowStatus & xRowStatus_mask_c))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RowStatus & xRowStatus_mask_c))
{
goto ieee8021QBridgeCVlanPortRowStatus_handler_cleanup;
}
Expand All @@ -1170,7 +1170,7 @@ ieee8021QBridgeCVlanPortRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBasePortEntry, u8RowStatus & xRowStatus_mask_c))
if (!ieee8021BridgeBasePortRowStatus_handler (poIeee8021BridgeBaseEntry, poIeee8021BridgeBasePortEntry, u8RowStatus & xRowStatus_mask_c))
{
goto ieee8021QBridgeCVlanPortRowStatus_handler_cleanup;
}
Expand Down
6 changes: 3 additions & 3 deletions hal/halEthernet.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,19 @@
#include <stdint.h>


static bool
/*static*/ bool
halEthernet_ifNotify ();


bool
halEthernet_ifConfig ()
halEthernet_componentConfigure ()
{
/* TODO */
return false;
}

bool
halEthernet_ifEnable (uint32_t u32IfIndex, int32_t i32AdminStatus)
halEthernet_portConfigure ()
{
/* TODO */
return false;
Expand Down

0 comments on commit d497a03

Please sign in to comment.