login
Header Space

 
 

[PATCH 0/4] firewire: trivial fw-sbp2 updates

Previous thread: [patch 18/21] mlock vma pages under mmap_sem held for read by Rik van Riel on Thursday, February 28, 2008 - 3:29 pm. (1 message)

Next thread: [PATCH] firewire: fw-ohci: add option for remote debugging by Stefan Richter on Thursday, February 28, 2008 - 3:54 pm. (1 message)
To: <linux1394-devel@...>
Cc: <linux-kernel@...>
Date: Thursday, February 28, 2008 - 3:50 pm

I'll follow up with four simple fw-sbp2 patches:

 1/4 firewire: fw-sbp2: remove usages of fw_memcpy_to_be32
 2/4 firewire: fw-sbp2: simplify some macros
 3/4 firewire: fw-sbp2: remove unnecessary memset
 4/4 firewire: fw-sbp2: reduce log noise

 drivers/firewire/fw-sbp2.c |  110 ++++++++++++++-----------------------
 1 file changed, 44 insertions(+), 66 deletions(-)
-- 
Stefan Richter
-=====-==--- --=- ===--
http://arcgraph.de/sr/

--
To: <linux1394-devel@...>
Cc: <linux-kernel@...>
Date: Thursday, February 28, 2008 - 3:53 pm

The block/unblock logic is now sufficiently tested.

Signed-off-by: Stefan Richter &lt;stefanr@s5r6.in-berlin.de&gt;
---

To be postponed after 2.6.25.

 drivers/firewire/fw-sbp2.c |    8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

Index: linux/drivers/firewire/fw-sbp2.c
===================================================================
--- linux.orig/drivers/firewire/fw-sbp2.c
+++ linux/drivers/firewire/fw-sbp2.c
@@ -687,10 +687,8 @@ static void sbp2_conditionally_block(str
 	if (!tgt-&gt;dont_block &amp;&amp; !lu-&gt;blocked &amp;&amp;
 	    lu-&gt;generation != card-&gt;generation) {
 		lu-&gt;blocked = true;
-		if (++tgt-&gt;blocked == 1) {
+		if (++tgt-&gt;blocked == 1)
 			scsi_block_requests(shost);
-			fw_notify("blocked %s\n", lu-&gt;tgt-&gt;bus_id);
-		}
 	}
 	spin_unlock_irqrestore(&amp;card-&gt;lock, flags);
 }
@@ -717,10 +715,8 @@ static void sbp2_conditionally_unblock(s
 	}
 	spin_unlock_irqrestore(&amp;card-&gt;lock, flags);
 
-	if (unblock) {
+	if (unblock)
 		scsi_unblock_requests(shost);
-		fw_notify("unblocked %s\n", lu-&gt;tgt-&gt;bus_id);
-	}
 }
 
 /*

-- 
Stefan Richter
-=====-==--- --=- ===--
http://arcgraph.de/sr/

--
To: <linux1394-devel@...>
Cc: <linux-kernel@...>
Date: Thursday, February 28, 2008 - 3:52 pm

orb came from kzalloc.

Signed-off-by: Stefan Richter &lt;stefanr@s5r6.in-berlin.de&gt;
---
 drivers/firewire/fw-sbp2.c |    3 ---
 1 file changed, 3 deletions(-)

Index: linux/drivers/firewire/fw-sbp2.c
===================================================================
--- linux.orig/drivers/firewire/fw-sbp2.c
+++ linux/drivers/firewire/fw-sbp2.c
@@ -1426,7 +1426,6 @@ static int sbp2_scsi_queuecommand(struct
 	orb-&gt;cmd  = cmd;
 
 	orb-&gt;request.next.high   = cpu_to_be32(SBP2_ORB_NULL);
-	orb-&gt;request.next.low    = 0x0;
 	/*
 	 * At speed 100 we can do 512 bytes per packet, at speed 200,
 	 * 1024 bytes per packet etc.  The SBP-2 max_payload field
@@ -1446,8 +1445,6 @@ static int sbp2_scsi_queuecommand(struct
 	if (scsi_sg_count(cmd) &amp;&amp; sbp2_map_scatterlist(orb, device, lu) &lt; 0)
 		goto out;
 
-	memset(orb-&gt;request.command_block,
-	       0, sizeof(orb-&gt;request.command_block));
 	memcpy(orb-&gt;request.command_block, cmd-&gt;cmnd, COMMAND_SIZE(*cmd-&gt;cmnd));
 
 	orb-&gt;base.callback = complete_command_orb;

-- 
Stefan Richter
-=====-==--- --=- ===--
http://arcgraph.de/sr/

--
To: <linux1394-devel@...>
Cc: <linux-kernel@...>
Date: Thursday, February 28, 2008 - 3:52 pm

How hard can it be to switch on one bit? :-)

Signed-off-by: Stefan Richter &lt;stefanr@s5r6.in-berlin.de&gt;
---
 drivers/firewire/fw-sbp2.c |   11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

Index: linux/drivers/firewire/fw-sbp2.c
===================================================================
--- linux.orig/drivers/firewire/fw-sbp2.c
+++ linux/drivers/firewire/fw-sbp2.c
@@ -174,9 +174,6 @@ struct sbp2_target {
 #define SBP2_ORB_NULL			0x80000000
 #define SBP2_MAX_SG_ELEMENT_LENGTH	0xf000
 
-#define SBP2_DIRECTION_TO_MEDIA		0x0
-#define SBP2_DIRECTION_FROM_MEDIA	0x1
-
 /* Unit directory keys */
 #define SBP2_CSR_UNIT_CHARACTERISTICS	0x3a
 #define SBP2_CSR_FIRMWARE_REVISION	0x3c
@@ -272,7 +269,7 @@ struct sbp2_login_response {
 #define COMMAND_ORB_PAGE_TABLE_PRESENT	((1) &lt;&lt; 19)
 #define COMMAND_ORB_MAX_PAYLOAD(v)	((v) &lt;&lt; 20)
 #define COMMAND_ORB_SPEED(v)		((v) &lt;&lt; 24)
-#define COMMAND_ORB_DIRECTION(v)	((v) &lt;&lt; 27)
+#define COMMAND_ORB_DIRECTION		((1) &lt;&lt; 27)
 #define COMMAND_ORB_REQUEST_FORMAT(v)	((v) &lt;&lt; 29)
 #define COMMAND_ORB_NOTIFY		((1) &lt;&lt; 31)
 
@@ -1444,11 +1441,7 @@ static int sbp2_scsi_queuecommand(struct
 		COMMAND_ORB_NOTIFY);
 
 	if (cmd-&gt;sc_data_direction == DMA_FROM_DEVICE)
-		orb-&gt;request.misc |= cpu_to_be32(
-			COMMAND_ORB_DIRECTION(SBP2_DIRECTION_FROM_MEDIA));
-	else if (cmd-&gt;sc_data_direction == DMA_TO_DEVICE)
-		orb-&gt;request.misc |= cpu_to_be32(
-			COMMAND_ORB_DIRECTION(SBP2_DIRECTION_TO_MEDIA));
+		orb-&gt;request.misc |= cpu_to_be32(COMMAND_ORB_DIRECTION);
 
 	if (scsi_sg_count(cmd) &amp;&amp; sbp2_map_scatterlist(orb, device, lu) &lt; 0)
 		goto out;

-- 
Stefan Richter
-=====-==--- --=- ===--
http://arcgraph.de/sr/

--
To: <linux1394-devel@...>
Cc: <linux-kernel@...>
Date: Thursday, February 28, 2008 - 3:51 pm

Write directly in big endian instead of byte-swapping after the fact.
This saves a few conversions, lets gcc use constant endianess
conversions where possible, and enables deeper endianess annotation.

Signed-off-by: Stefan Richter &lt;stefanr@s5r6.in-berlin.de&gt;
---
 drivers/firewire/fw-sbp2.c |   96 ++++++++++++++++---------------------
 1 file changed, 44 insertions(+), 52 deletions(-)

Index: linux/drivers/firewire/fw-sbp2.c
===================================================================
--- linux.orig/drivers/firewire/fw-sbp2.c
+++ linux/drivers/firewire/fw-sbp2.c
@@ -223,8 +223,8 @@ struct sbp2_status {
 };
 
 struct sbp2_pointer {
-	u32 high;
-	u32 low;
+	__be32 high;
+	__be32 low;
 };
 
 struct sbp2_orb {
@@ -252,8 +252,8 @@ struct sbp2_management_orb {
 	struct {
 		struct sbp2_pointer password;
 		struct sbp2_pointer response;
-		u32 misc;
-		u32 length;
+		__be32 misc;
+		__be32 length;
 		struct sbp2_pointer status_fifo;
 	} request;
 	__be32 response[4];
@@ -262,13 +262,10 @@ struct sbp2_management_orb {
 	struct sbp2_status status;
 };
 
-#define LOGIN_RESPONSE_GET_LOGIN_ID(v)	((v).misc &amp; 0xffff)
-#define LOGIN_RESPONSE_GET_LENGTH(v)	(((v).misc &gt;&gt; 16) &amp; 0xffff)
-
 struct sbp2_login_response {
-	u32 misc;
+	__be32 misc;
 	struct sbp2_pointer command_block_agent;
-	u32 reconnect_hold;
+	__be32 reconnect_hold;
 };
 #define COMMAND_ORB_DATA_SIZE(v)	((v))
 #define COMMAND_ORB_PAGE_SIZE(v)	((v) &lt;&lt; 16)
@@ -284,7 +281,7 @@ struct sbp2_command_orb {
 	struct {
 		struct sbp2_pointer next;
 		struct sbp2_pointer data_descriptor;
-		u32 misc;
+		__be32 misc;
 		u8 command_block[12];
 	} request;
 	struct scsi_cmnd *cmd;
@@ -453,8 +450,7 @@ sbp2_send_orb(struct sbp2_orb *orb, stru
 	unsigned long flags;
 
 	orb-&gt;pointer.high = 0;
-	orb-&gt;pointer.low = orb-&gt;request_bus;
-	fw_memcpy_to_be32(&amp;orb-&gt;pointer, &amp;orb-&gt;pointer, sizeof(orb-&gt;pointer));
+	orb-&gt;pointer.low = cpu_to_be32(orb-&gt;request_bus)...
Previous thread: [patch 18/21] mlock vma pages under mmap_sem held for read by Rik van Riel on Thursday, February 28, 2008 - 3:29 pm. (1 message)

Next thread: [PATCH] firewire: fw-ohci: add option for remote debugging by Stefan Richter on Thursday, February 28, 2008 - 3:54 pm. (1 message)
speck-geostationary