+#ifdef SK_PHY_LP_MODE
+ case OID_SKGE_PHY_LP_MODE:
+ /* The preset ends here */
+ if (Action == SK_PNMI_PRESET) {
+
+ return (SK_PNMI_ERR_OK);
+ }
+
+ if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+ if (LogPortIndex == 0) {
+ Offset = 0;
+ continue;
+ }
+ else {
+ /* Set value for physical ports */
+ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex);
+
+ switch (*(pBuf + Offset)) {
+ case 0:
+ /* If LowPowerMode is active, we can leave it. */
+ if (pAC->GIni.GP[PhysPortIndex].PPhyPowerState) {
+
+ Val32 = SkGmLeaveLowPowerMode(pAC, IoC, PhysPortIndex);
+
+ if (pAC->GIni.GP[PhysPortIndex].PPhyPowerState < 3) {
+
+ SkDrvInitAdapter(pAC);
+ }
+ break;
+ }
+ else {
+ *pLen = 0;
+ return (SK_PNMI_ERR_GENERAL);
+ }
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ /* If no LowPowerMode is active, we can enter it. */
+ if (!pAC->GIni.GP[PhysPortIndex].PPhyPowerState) {
+
+ if ((*(pBuf + Offset)) < 3) {
+
+ SkDrvDeInitAdapter(pAC);
+ }
+
+ Val32 = SkGmEnterLowPowerMode(pAC, IoC, PhysPortIndex, *pBuf);
+ break;
+ }
+ else {
+ *pLen = 0;
+ return (SK_PNMI_ERR_GENERAL);
+ }
+ default:
+ *pLen = 0;
+ return (SK_PNMI_ERR_BAD_VALUE);
+ }
+ }
+ }
+ else { /* DualNetMode */
+
+ switch (*(pBuf + Offset)) {
+ case 0:
+ /* If we are in a LowPowerMode, we can leave it. */
+ if (pAC->GIni.GP[PhysPortIndex].PPhyPowerState) {
+
+ Val32 = SkGmLeaveLowPowerMode(pAC, IoC, PhysPortIndex);
+
+ if (pAC->GIni.GP[PhysPortIndex].PPhyPowerState < 3) {
+
+ SkDrvInitAdapter(pAC);
+ }
+ break;
+ }
+ else {
+ *pLen = 0;
+ return (SK_PNMI_ERR_GENERAL);
+ }
+
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ /* If we are not already in LowPowerMode, we can enter it. */
+ if (!pAC->GIni.GP[PhysPortIndex].PPhyPowerState) {
+
+ if ((*(pBuf + Offset)) < 3) {
+
+ SkDrvDeInitAdapter(pAC);
+ }
+ else {
+
+ Val32 = SkGmEnterLowPowerMode(pAC, IoC, PhysPortIndex, *pBuf);
+ }
+ break;
+ }
+ else {
+ *pLen = 0;
+ return (SK_PNMI_ERR_GENERAL);
+ }
+
+ default:
+ *pLen = 0;
+ return (SK_PNMI_ERR_BAD_VALUE);
+ }
+ }
+ Offset += sizeof(SK_U8);
+ break;
+#endif
+