[PATCH 1/6] KDapi: Big-endian support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Add byte swap calls where needed.

Signed-off-by: Doug Kehn <rdkehn at yahoo.com>
---
 .../Linux/InfraStackModules/KDapi/KDapi.c          |   88 ++++++++++----------
 1 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/InfraStack/OSDependent/Linux/InfraStackModules/KDapi/KDapi.c b/InfraStack/OSDependent/Linux/InfraStackModules/KDapi/KDapi.c
index 27c8abc..6db2e11 100644
--- a/InfraStack/OSDependent/Linux/InfraStackModules/KDapi/KDapi.c
+++ b/InfraStack/OSDependent/Linux/InfraStackModules/KDapi/KDapi.c
@@ -58,6 +58,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #include "KDapiForLinuxNlsock.h"
 #include "L4BufMan_L3L4Structs_Desc.h"
 #include "L4BufMan_L3L4Structs.h"
+#include "Services_Ctrl.h"
 
 #define MAX_DATA_SIZE_SET_NORMAL 100
 
@@ -264,12 +265,12 @@ static int send_recieve_message_to_driver(IN UINT32 Command,
 	// the flag so that next LINK_UP is accepted for dhcp req
 	// This will be useful in fast reconnect scenario where firmware is
 	// failing to send LINK_DOWN before sending a LINK_UP
-	if(wmx_in_buffer->type == L4_L3_OPCODE_CMD_CONNECT)
+	if(wmx_in_buffer->type == wimaxll_cpu_to_le16(L4_L3_OPCODE_CMD_CONNECT))
 	{
 		linkup_redundant = 0;
 	}
 
-	if (*((UINT16 *) pInBuffer) == 0x4604)	// enable raw logging during connect
+	if (*((UINT16 *) pInBuffer) == wimaxll_cpu_to_le16(0x4604))	// enable raw logging during connect
 	{
 		 bEnableRawTracing = 1;
 		//g_Connected = 0;
@@ -281,7 +282,7 @@ static int send_recieve_message_to_driver(IN UINT32 Command,
 
 
 
-	if ((bEnableRawTracing) || (*((UINT16 *) pInBuffer) == 0x6201)) {
+	if ((bEnableRawTracing) || (*((UINT16 *) pInBuffer) == wimaxll_cpu_to_le16(0x6201))) {
 #ifdef _DEBUG1
 		if (inBufSize == 2088) {
 			// Probe to check if the device has already rebooted before sending this large packet down
@@ -289,7 +290,7 @@ static int send_recieve_message_to_driver(IN UINT32 Command,
 			inBufSize = sizeof(GET_STATE_L4L3_MSG);
 		}
 #endif
-		if (*((UINT16 *) pInBuffer) == 0x6201)
+		if (*((UINT16 *) pInBuffer) == wimaxll_cpu_to_le16(0x6201))
 			DumpHexString("Gatekeeper (TLS Out): ", pInBuffer, inBufSize);
 		else {
 			DumpHexString("Gatekeeper (out) : ", pInBuffer, inBufSize);
@@ -328,22 +329,23 @@ static int send_recieve_message_to_driver(IN UINT32 Command,
 		if (send_rcv_msg->type != *(unsigned short *)pInBuffer) {
 			TRACE(TR_MOD_KDAPI, TR_SEV_ERR,
 			      "Incorrect response recieved %x expected %x\n",
-			      send_rcv_msg->type, *(unsigned short *)pInBuffer);
+			      wimaxll_le16_to_cpu(send_rcv_msg->type),
+			      wimaxll_le16_to_cpu(*(unsigned short *)pInBuffer));
 			printk("Incorrect response recieved %x expected %x\n",
-			       send_rcv_msg->type,
-			       *(unsigned short *)pInBuffer);
+			       wimaxll_le16_to_cpu(send_rcv_msg->type),
+			       wimaxll_le16_to_cpu(*(unsigned short *)pInBuffer));
 			free(send_rcv_msg);
 			send_rcv_msg = NULL;
 			goto error_msg_send_command;
 		}
 		memcpy(pOutBuffer, send_rcv_msg, rcv_msg_size);
 		*pWrittenOutBufSize = rcv_msg_size;
-		printk("Response recieved: size(%d) status(%x)\n", rcv_msg_size, send_rcv_msg->status);
+		printk("Response recieved: size(%d) status(%x)\n", rcv_msg_size, wimaxll_le16_to_cpu(send_rcv_msg->status));
 
 #ifndef DEBUG_DEVELOPER
         if(g_enable_driver_msg == TRUE) {
             printf("<<< [RSP 0x%x][%d]\n", Command, rcv_msg_size);
-            print_hex(send_rcv_msg, rcv_msg_size);
+            print_hex((unsigned char *)send_rcv_msg, rcv_msg_size);
         }
 #endif
 		// free the memory allocated by send_msg_response_to_l4
@@ -351,13 +353,13 @@ static int send_recieve_message_to_driver(IN UINT32 Command,
 		send_rcv_msg = NULL;
 
 		if (bEnableRawTracing) {
-			if (*((UINT16 *) pInBuffer) == 0x6201)
+			if (*((UINT16 *) pInBuffer) == wimaxll_cpu_to_le16(0x6201))
 				DumpHexString("Gatekeeper (TLS IN): ", pOutBuffer, rcv_msg_size);
 			else
 				DumpHexString("Gatekeeper (in): ", pOutBuffer, rcv_msg_size);
 		}
 // #if 1
-//              if ( *((UINT16 *)pInBuffer) == 0xd002 )
+//              if ( *((UINT16 *)pInBuffer) == wimaxll_cpu_to_le16(0xd002) )
 //              {
 //                      UINT16 *pTmp = pInBuffer;
 
@@ -367,7 +369,7 @@ static int send_recieve_message_to_driver(IN UINT32 Command,
 //              }
 // #endif // 1
 #ifdef INTERNAL_SUPPLICANT_DONT_SEND_KEY_SECONDTIME_IF_ALREADY_CONNECTED
-		if (*((UINT16 *) pInBuffer) == 0xd002) {
+		if (*((UINT16 *) pInBuffer) == wimaxll_cpu_to_le16(0xd002)) {
 			UINT16 *pTmp = pInBuffer;
 			// Set the global system state
 			if (*(pTmp + 12) == 8) {
@@ -407,8 +409,8 @@ static int get_L4M_version()
 	UINT32 tempByteWritten = 30;
 
 	memset(&cmd, 0, sizeof(cmd));
-	cmd.type = I2400M_MT_GET_LM_VERSION;
-	cmd.version = I2400M_L3L4_VERSION;
+	cmd.type = wimaxll_cpu_to_le16(I2400M_MT_GET_LM_VERSION);
+	cmd.version = wimaxll_cpu_to_le16(I2400M_L3L4_VERSION);
 
 	res =
 	    send_recieve_message_to_driver(0, &cmd, sizeof(cmd), response_from_driver,
@@ -515,7 +517,7 @@ static KDAPI_RESULT KDAPI_send_io_control(IN void *pInBuffer,
 
 	//printk("*");
 
-	type = *(unsigned short *)pInBuffer;
+	type = wimaxll_le16_to_cpu(*(unsigned short *)pInBuffer);
 	printk("KK Ioctl Sending L4 Message type %d\n", type);
 
 	TRACE(TR_MOD_KDAPI, TR_SEV_DEBUG, "Sending DeviceIoControl with ioctl");
@@ -550,14 +552,14 @@ static KDAPI_RESULT KDAPI_send_io_control(IN void *pInBuffer,
 #endif
 
 	/*
-	   if(header->Opcode == L4_L3_OPCODE_SET_SCAN_PARAM)
+	   if(header->Opcode == wimaxll_cpu_to_le16(L4_L3_OPCODE_SET_SCAN_PARAM))
 	   {
 	   //memset((char *)pInBuffer + 28, 0xff, 16);
 	   }
 	 */
 
 	ioctlRes =
-	    send_recieve_message_to_driver(*(unsigned short *)pInBuffer, pInBuffer,
+	    send_recieve_message_to_driver(wimaxll_le16_to_cpu(*(unsigned short *)pInBuffer), pInBuffer,
 			       inBufSize, pOutBuffer, &BytesWritten);
 	if (ioctlRes != 0) {
 		TRACE(TR_MOD_KDAPI, TR_SEV_ERR,
@@ -602,14 +604,14 @@ static int set_device_mode_to_normal()
 	}
 	//assemble radio-on message
 	//setup header
-	header.Opcode = L4_L3_OPCODE_CMD_MODE_OF_OPERATION;	//setup message type
-	header.Length = sizeof(struct ModeOfOperationCommand);	//setup message length. rest of the fields are irrelevant
+	header.Opcode = wimaxll_cpu_to_le16(L4_L3_OPCODE_CMD_MODE_OF_OPERATION);	//setup message type
+	header.Length = wimaxll_cpu_to_le16(sizeof(struct ModeOfOperationCommand));	//setup message length. rest of the fields are irrelevant
 	memcpy(message, (char *)&header, sizeof(header));
 
 	//setup message body
-	modeCommand.type = L3L4_TLV_TYPE_MODE_OF_OPERATION;	//setup rf operatig_wmx_handleon TLV type
-	modeCommand.length = sizeof(struct RfControl) - 4;	//setup rf operation TLV length
-	modeCommand.modeCommand = E_MODE_OF_OPERATION_NORMAL;	//setup rf operation to ON
+	modeCommand.type = wimaxll_cpu_to_le16(L3L4_TLV_TYPE_MODE_OF_OPERATION);	//setup rf operatig_wmx_handleon TLV type
+	modeCommand.length = wimaxll_cpu_to_le16(sizeof(struct RfControl) - 4);		//setup rf operation TLV length
+	modeCommand.modeCommand = wimaxll_cpu_to_le32(E_MODE_OF_OPERATION_NORMAL);	//setup rf operation to ON
 	memcpy(message + sizeof(header), (char *)&modeCommand,
 	       sizeof(modeCommand));
 
@@ -626,8 +628,8 @@ static int set_device_mode_to_normal()
 
 	free(message);
 	header = *(struct L3L4Header *)retMsg;
-	if ((header.Status != L3L4_RESPONSE_STATUS_SUCCESS_DONE)
-	    && (header.Status != L3L4_RESPONSE_STATUS_SUCCESS_IN_PROCESS)) {
+	if ((header.Status != wimaxll_cpu_to_le16(L3L4_RESPONSE_STATUS_SUCCESS_DONE))
+	    && (header.Status != wimaxll_cpu_to_le16(L3L4_RESPONSE_STATUS_SUCCESS_IN_PROCESS))) {
 		retStatus = 0;
 		printk
 		    ("Got status response other than SUCCESS_DONE or SUCCESS_IN_PROCESS\n");
@@ -649,8 +651,8 @@ static void prepare_nl_iface()
 
 	/* open command: Send a raw request */
 	memset(&cmd, 0, sizeof(cmd));
-	cmd.type = (I2400M_MT_OPEN);
-	cmd.version = (I2400M_L3L4_VERSION);
+	cmd.type = wimaxll_cpu_to_le16(I2400M_MT_OPEN);
+	cmd.version = wimaxll_cpu_to_le16(I2400M_L3L4_VERSION);
 	result = wimaxll_msg_write(g_wmx_write_handle,NULL ,&cmd, sizeof(cmd));
 	if (result < 0) {
 		printk(stderr, "E: libwimax: can't send open message: %d\n",
@@ -661,7 +663,7 @@ static void prepare_nl_iface()
 	/* open command: get the ack */
 	result = wimax_msg_read(g_wmx_read_handle, (void **)&ack);
 
-	if ((ack->type) != I2400M_MT_OPEN) {
+	if (wimaxll_le16_to_cpu(ack->type) != I2400M_MT_OPEN) {
 		printk(stderr,
 		       "E: libwimax: wrong reply 0x%04x to OPEN command\n",
 		       (ack->type));
@@ -687,8 +689,8 @@ static int get_L4M_version_no_thread()
 	/* get l4m version: Send a raw request */
 	printk("get l4m version: Send a raw request \n");
 	memset(&cmd, 0, sizeof(cmd));
-	cmd.type = I2400M_MT_GET_LM_VERSION;
-	cmd.version = I2400M_L3L4_VERSION;
+	cmd.type = wimaxll_cpu_to_le16(I2400M_MT_GET_LM_VERSION);
+	cmd.version = wimaxll_cpu_to_le16(I2400M_L3L4_VERSION);
 
 	CHECK_NL_HANDLE();
 
@@ -711,7 +713,7 @@ static int get_L4M_version_no_thread()
 			      "Error wimax read messsage: %d\n", result);
 			return -1;
 		}
-		if ((ack->type) == I2400M_MT_GET_LM_VERSION) {
+		if (wimaxll_le16_to_cpu(ack->type) == I2400M_MT_GET_LM_VERSION) {
 			printk
 			    ("Nlsock: correct reply 0x%04x to get l4m version command\n",
 			     (ack->type));
@@ -789,8 +791,8 @@ use_EL3RST:
 	 * get a -EL3RST back.
 	 */
 	memset(&cmd, 0, sizeof(cmd));
-	cmd.type = L4_L3_OPCODE_GET_STATE;
-	cmd.version = I2400M_L3L4_VERSION;
+	cmd.type = wimaxll_cpu_to_le16(L4_L3_OPCODE_GET_STATE);
+	cmd.version = wimaxll_cpu_to_le16(I2400M_L3L4_VERSION);
 
 	retry_count = 10;
 	while(--retry_count) {
@@ -839,8 +841,8 @@ static int init_device()
 
 	/* init device: Send a raw request */
 	memset(&cmd, 0, sizeof(cmd));
-	cmd.type = (L4_L3_OPCODE_CMD_INIT);
-	cmd.version = (I2400M_L3L4_VERSION);
+	cmd.type = wimaxll_cpu_to_le16(L4_L3_OPCODE_CMD_INIT);
+	cmd.version = wimaxll_cpu_to_le16(I2400M_L3L4_VERSION);
 
 	CHECK_NL_HANDLE();
 
@@ -870,7 +872,7 @@ static int init_device()
 			printk("Error wimax read message \n");
 		}
 
-		if ((ack->type) == L4_L3_OPCODE_CMD_INIT) {
+		if ((ack->type) == wimaxll_cpu_to_le16(L4_L3_OPCODE_CMD_INIT)) {
 			wimaxll_msg_free(ack);
 			break;
 		}
@@ -970,7 +972,7 @@ static int preinit_device()
 			return -1;
 		}
 
- 		if ((ack->type) == L4_L3_OPCODE_SET_PREINIT_CONFIG) {
+ 		if ((ack->type) == wimaxll_cpu_to_le16(L4_L3_OPCODE_SET_PREINIT_CONFIG)) {
 			wimaxll_msg_free(ack);
 			break;
 		}
@@ -1003,13 +1005,11 @@ static int stop_trace()
 	/* stop trace: Send a raw request */
 	printk("stop trace: Send a raw request \n");
 	memset(&cmd, 0, sizeof(cmd));
-	// warning FIXME: need conversion to little endian
-	// Don't worry if we are running on X86 platform as X86 platform is already little endian
-	cmd.hdr.type = I2400M_MT_CMD_MONITOR_CONTROL;
-	cmd.hdr.length = sizeof(cmd) - sizeof(cmd.hdr);
-	cmd.hdr.version = I2400M_L3L4_VERSION;
-	cmd.tlv.type = 0x4002;
-	cmd.tlv.length = 1;
+	cmd.hdr.type = wimaxll_cpu_to_le16(I2400M_MT_CMD_MONITOR_CONTROL);
+	cmd.hdr.length = wimaxll_cpu_to_le16(sizeof(cmd) - sizeof(cmd.hdr));
+	cmd.hdr.version = wimaxll_cpu_to_le16(I2400M_L3L4_VERSION);
+	cmd.tlv.type = wimaxll_cpu_to_le16(0x4002);
+	cmd.tlv.length = wimaxll_cpu_to_le16(1);
 	cmd.val = 1;
 
 	CHECK_NL_HANDLE();
@@ -1187,7 +1187,7 @@ void send_msg_response_to_l4(const struct i2400m_l3l4_hdr *l3l4, size_t size)
 #else
     if(g_enable_driver_msg == TRUE) {
             printf("<<< [IND 0x%x][%d]\n", type, size);
-            print_hex(l3l4, size);
+            print_hex((unsigned char *)l3l4, size);
         }
 #endif
 
-- 
1.7.1



      


[Index of Archives]     [Linux Kernel]     [Linux Wireless]     [Linux Bluetooth]     [Linux Netdev]     [Linux Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux