OSDN Git Service

Staging: bcm: Outsourced restoring of endianess for ip adresses
authorMatthias Beyer <mail@beyermatthias.de>
Fri, 23 May 2014 20:23:42 +0000 (22:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 May 2014 22:26:35 +0000 (07:26 +0900)
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/bcm/CmHost.c

index 3d8c049..59a3eb9 100644 (file)
@@ -14,6 +14,9 @@ enum E_CLASSIFIER_ACTION {
 };
 
 static ULONG GetNextTargetBufferLocation(struct bcm_mini_adapter *Adapter, B_UINT16 tid);
+static void restore_endianess_of_pstClassifierEntry(
+               struct bcm_classifier_rule *pstClassifierEntry,
+               enum bcm_ipaddr_context eIpAddrContext);
 
 /************************************************************
  * Function - SearchSfid
@@ -200,15 +203,10 @@ CopyIpAddrToClassifier(struct bcm_classifier_rule *pstClassifierEntry,
                }
                if (bIpVersion6) {
                        /* Restore EndianNess of Struct */
-                       for (i = 0; i < MAX_IP_RANGE_LENGTH * 4; i++) {
-                               if (eIpAddrContext == eSrcIpAddress) {
-                                       pstClassifierEntry->stSrcIpAddress.ulIpv6Addr[i] = ntohl(pstClassifierEntry->stSrcIpAddress.ulIpv6Addr[i]);
-                                       pstClassifierEntry->stSrcIpAddress.ulIpv6Mask[i] = ntohl(pstClassifierEntry->stSrcIpAddress.ulIpv6Mask[i]);
-                               } else if (eIpAddrContext == eDestIpAddress) {
-                                       pstClassifierEntry->stDestIpAddress.ulIpv6Addr[i] = ntohl(pstClassifierEntry->stDestIpAddress.ulIpv6Addr[i]);
-                                       pstClassifierEntry->stDestIpAddress.ulIpv6Mask[i] = ntohl(pstClassifierEntry->stDestIpAddress.ulIpv6Mask[i]);
-                               }
-                       }
+                       restore_endianess_of_pstClassifierEntry(
+                                       pstClassifierEntry,
+                                       eIpAddrContext
+                                       );
                }
        }
 }
@@ -1919,3 +1917,19 @@ VOID OverrideServiceFlowParams(struct bcm_mini_adapter *Adapter,
                }
        }
 }
+
+static void restore_endianess_of_pstClassifierEntry(
+               struct bcm_classifier_rule *pstClassifierEntry,
+               enum bcm_ipaddr_context eIpAddrContext)
+{
+       int i;
+       for (i = 0; i < MAX_IP_RANGE_LENGTH * 4; i++) {
+               if (eIpAddrContext == eSrcIpAddress) {
+                       pstClassifierEntry->stSrcIpAddress.ulIpv6Addr[i] = ntohl(pstClassifierEntry->stSrcIpAddress.ulIpv6Addr[i]);
+                       pstClassifierEntry->stSrcIpAddress.ulIpv6Mask[i] = ntohl(pstClassifierEntry->stSrcIpAddress.ulIpv6Mask[i]);
+               } else if (eIpAddrContext == eDestIpAddress) {
+                       pstClassifierEntry->stDestIpAddress.ulIpv6Addr[i] = ntohl(pstClassifierEntry->stDestIpAddress.ulIpv6Addr[i]);
+                       pstClassifierEntry->stDestIpAddress.ulIpv6Mask[i] = ntohl(pstClassifierEntry->stDestIpAddress.ulIpv6Mask[i]);
+               }
+       }
+}