Skip to content

Commit

Permalink
[nes]: ETHERNET changes ...
Browse files Browse the repository at this point in the history
  • Loading branch information
nes-repo committed Jun 21, 2015
1 parent f9db64a commit c59876e
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 89 deletions.
4 changes: 2 additions & 2 deletions entity/entityUtils.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ neEntPortRowStatus_update (
switch (u8RowStatus)
{
case xRowStatus_active_c:
if (!ieee8021BridgePhyData_createRegister (poEntry->oK.u32IfIndex, poEntry->u32PhysicalIndex, poEntry->u32ChassisIndex))
if (!ieee8021BridgePhyPortTable_createRegister (poEntry->oK.u32IfIndex, poEntry->u32PhysicalIndex, poEntry->u32ChassisIndex))
{
goto neEntPortRowStatus_update_cleanup;
}
Expand Down Expand Up @@ -232,7 +232,7 @@ neEntPortRowStatus_update (
goto neEntPortRowStatus_update_cleanup;
}

if (!ieee8021BridgePhyData_removeRegister (poEntry->oK.u32IfIndex, poEntry->u32PhysicalIndex))
if (!ieee8021BridgePhyPortTable_removeRegister (poEntry->oK.u32IfIndex, poEntry->u32PhysicalIndex))
{
goto neEntPortRowStatus_update_cleanup;
}
Expand Down
70 changes: 68 additions & 2 deletions ethernet/ethernetUtils.c
Original file line number Diff line number Diff line change
Expand Up @@ -855,16 +855,82 @@ ieee8021BridgeXPortRowStatus_halUpdate (
return bRetCode;
}

bool
ieee8021BridgeTpPortStatus_handler (
uint32_t u32IfIndex, uint8_t *pu8AdminFlags, bool bLocked)
{
register bool bRetCode = false;
register ieee8021BridgePhyPortEntry_t *poPhy = NULL;
register ieee8021BridgeBaseEntry_t *poIeee8021BridgeBaseEntry = NULL;
register bool bMacLearn = xBitmap_getBitRev (pu8AdminFlags, neIfAdminFlags_macLearn_c);
register bool bMacFwd = xBitmap_getBitRev (pu8AdminFlags, neIfAdminFlags_macFwd_c);
register bool bPhyLocked = false;
register bool bBridgeLocked = false;


if (u32IfIndex == 0 || pu8AdminFlags == NULL || (bMacLearn && !bMacFwd))
{
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}


if (!bLocked)
{
ieee8021BridgePhyPortTable_rdLock ();
bPhyLocked = true;
}

if ((poPhy = ieee8021BridgePhyPortTable_getByIndex (u32IfIndex, 0)) == NULL ||
poPhy->oIf.u32ComponentId == 0 || poPhy->oIf.u32Port == 0)
{
goto ieee8021BridgeTpPortStatus_handler_success;
}

ieee8021Bridge_wrLock ();
bBridgeLocked = true;

if ((poIeee8021BridgeBaseEntry = ieee8021BridgeBaseTable_getByIndex (poPhy->oIf.u32ComponentId)) == NULL)
{
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}

ieee8021BridgeBase_wrLock (poIeee8021BridgeBaseEntry);


if (!ieee8021BridgeTpPortTable_handler (poIeee8021BridgeBaseEntry, poPhy, bMacLearn, bMacFwd))
{
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}

ieee8021BridgeTpPortStatus_handler_success:

if (poPhy != NULL)
{
xBitmap_setBitRev (poPhy->au8AdminFlags, neIfAdminFlags_macLearn_c, bMacLearn);
xBitmap_setBitRev (poPhy->au8AdminFlags, neIfAdminFlags_macFwd_c, bMacFwd);
}

bRetCode = true;

ieee8021BridgeTpPortStatus_handler_cleanup:

poIeee8021BridgeBaseEntry != NULL ? ieee8021BridgeBase_unLock (poIeee8021BridgeBaseEntry): false;
bBridgeLocked ? ieee8021Bridge_unLock (): false;
bPhyLocked ? ieee8021BridgePhyPortTable_unLock (): false;

return bRetCode;
}

bool
ieee8021BridgeTpPortStatus_update (
ieee8021BridgePhyData_t *poPhyData,
ieee8021BridgePhyPortEntry_t *poPhy,
ieee8021BridgeTpPortEntry_t *poEntry, bool bMacLearn, bool bMacFwd)
{
register bool bRetCode = false;
halEthernet_ifEntry_t oHalIfEntry;

memset (&oHalIfEntry, 0, sizeof (oHalIfEntry));
oHalIfEntry.u32IfIndex = poPhyData->u32IfIndex;
oHalIfEntry.u32IfIndex = poPhy->u32IfIndex;
!bMacLearn && !bMacFwd ? xBitmap_setBitRev (oHalIfEntry.au8Flags, halEthernet_if_bFdbDisable_c, 1): 0;
bMacLearn ? xBitmap_setBitRev (oHalIfEntry.au8Flags, halEthernet_if_bFdbLearn_c, 1): 0;
bMacFwd ? xBitmap_setBitRev (oHalIfEntry.au8Flags, halEthernet_if_bFdbForward_c, 1): 0;
Expand Down
10 changes: 5 additions & 5 deletions ethernet/ethernetUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,20 @@ bool
bool
neIeee8021BridgeBasePortAdminFlags_update (
ieee8021BridgeBasePortEntry_t *poEntry, uint8_t *pu8AdminFlags);
bool
ieee8021BridgeXPortRowStatus_halUpdate (
ieee8021BridgeBaseEntry_t *poComponent,
void *pvEntry, int32_t i32Type, uint8_t u8CurStatus, uint8_t u8RowStatus);
bool
ieee8021BridgeBasePortTable_hierUpdate (
ieee8021BridgeBasePortEntry_t *poEntry, uint8_t u8RowStatus);
bool
ieee8021BridgeBasePortRowStatus_update (
ieee8021BridgeBaseEntry_t *poComponent,
ieee8021BridgeBasePortEntry_t *poEntry, uint8_t u8RowStatus);
bool
ieee8021BridgeXPortRowStatus_halUpdate (
ieee8021BridgeBaseEntry_t *poComponent,
void *pvEntry, int32_t i32Type, uint8_t u8CurStatus, uint8_t u8RowStatus);
bool
ieee8021BridgeTpPortStatus_update (
ieee8021BridgePhyData_t *poPhyData,
ieee8021BridgePhyPortEntry_t *poPhy,
ieee8021BridgeTpPortEntry_t *poEntry, bool bMacLearn, bool bMacFwd);
bool
ieee8021BridgeDot1dPortRowStatus_update (
Expand Down
74 changes: 4 additions & 70 deletions ethernet/ieee8021BridgeMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -3038,72 +3038,6 @@ ieee8021BridgeTpPortTable_removeEntry (ieee8021BridgeTpPortEntry_t *poEntry)
return;
}

bool
ieee8021BridgeTpPortStatus_handler (
uint32_t u32IfIndex, uint8_t *pu8AdminFlags, bool bLocked)
{
register bool bRetCode = false;
register ieee8021BridgePhyData_t *poPhyData = NULL;
register ieee8021BridgeBaseEntry_t *poIeee8021BridgeBaseEntry = NULL;
register bool bMacLearn = xBitmap_getBitRev (pu8AdminFlags, neIfAdminFlags_macLearn_c);
register bool bMacFwd = xBitmap_getBitRev (pu8AdminFlags, neIfAdminFlags_macFwd_c);
register bool bPhyLocked = false;
register bool bBridgeLocked = false;


if (u32IfIndex == 0 || pu8AdminFlags == NULL || (bMacLearn && !bMacFwd))
{
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}


if (!bLocked)
{
ieee8021BridgePhyData_rdLock ();
bPhyLocked = true;
}

if ((poPhyData = ieee8021BridgePhyData_getByIndex (u32IfIndex, 0)) == NULL ||
poPhyData->u32ComponentId == 0 || poPhyData->u32Port == 0)
{
goto ieee8021BridgeTpPortStatus_handler_success;
}

ieee8021Bridge_wrLock ();
bBridgeLocked = true;

if ((poIeee8021BridgeBaseEntry = ieee8021BridgeBaseTable_getByIndex (poPhyData->u32ComponentId)) == NULL)
{
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}

ieee8021BridgeBase_wrLock (poIeee8021BridgeBaseEntry);


/*if (!ieee8021BridgeTpPortTable_handler (poIeee8021BridgeBaseEntry, poPhyData, bMacLearn, bMacFwd))
{
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}*/

ieee8021BridgeTpPortStatus_handler_success:

if (poPhyData != NULL)
{
xBitmap_setBitRev (poPhyData->au8AdminFlags, neIfAdminFlags_macLearn_c, bMacLearn);
xBitmap_setBitRev (poPhyData->au8AdminFlags, neIfAdminFlags_macFwd_c, bMacFwd);
}

bRetCode = true;

ieee8021BridgeTpPortStatus_handler_cleanup:

poIeee8021BridgeBaseEntry != NULL ? ieee8021BridgeBase_unLock (poIeee8021BridgeBaseEntry): false;
bBridgeLocked ? ieee8021Bridge_unLock (): false;
bPhyLocked ? ieee8021BridgePhyData_rdLock (): false;

return bRetCode;
}

bool
ieee8021BridgeTpPortTable_handler (
ieee8021BridgeBaseEntry_t *poComponent,
Expand All @@ -3120,10 +3054,10 @@ ieee8021BridgeTpPortTable_handler (
}


/*if (!bMacFwd && !ieee8021BridgeTpPortStatus_update (poPhy, poIeee8021BridgeTpPortEntry, bMacLearn, bMacFwd))
if (!bMacFwd && !ieee8021BridgeTpPortStatus_update (poPhy, poIeee8021BridgeTpPortEntry, bMacLearn, bMacFwd))
{
goto ieee8021BridgeTpPortTable_handler_cleanup;
}*/
}

if (bMacFwd)
{
Expand All @@ -3137,10 +3071,10 @@ ieee8021BridgeTpPortTable_handler (
ieee8021BridgeTpPortTable_removeEntry (poIeee8021BridgeTpPortEntry);
}

/*if (bMacFwd && !ieee8021BridgeTpPortStatus_update (poPhy, poIeee8021BridgeTpPortEntry, bMacLearn, bMacFwd))
if (bMacFwd && !ieee8021BridgeTpPortStatus_update (poPhy, poIeee8021BridgeTpPortEntry, bMacLearn, bMacFwd))
{
goto ieee8021BridgeTpPortTable_handler_cleanup;
}*/
}

ieee8021BridgeTpPortTable_handler_success:

Expand Down
10 changes: 0 additions & 10 deletions include/ethernet_ext.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,6 @@ bool
uint32_t u32IfIndex,
uint32_t u32PhyPort);

bool
ieee8021BridgePhyData_createRegister (
uint32_t u32IfIndex,
uint32_t u32PhyPort,
uint32_t u32ChassisId);
bool
ieee8021BridgePhyData_removeRegister (
uint32_t u32IfIndex,
uint32_t u32PhyPort);


#define PKT_IP_ENC_USED 4
#define PKT_L2_ENC_USED
Expand Down

0 comments on commit c59876e

Please sign in to comment.