aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMithlesh Thukral <mithlesh@linsyssoft.com>2009-03-25 15:50:34 +0530
committerGreg Kroah-Hartman <gregkh@suse.de>2009-04-17 11:06:31 -0700
commit8d17e6ad8113f7534d978b1b3511f62637483fcc (patch)
tree690413713d8c1549950dcebf7002054174e185ed
parent1f895130c0b0dd293b924b1c6cecac90a2e35dc6 (diff)
Staging: sxg: Use correct queue_id for transmitting non-TCP packets
Use correct queue_id while transmitting non-TCP packets. They should always use queue 0. Signed-off-by: LinSysSoft Sahara Team <saharaproj@linsyssoft.com> Signed-off-by: Mithlesh Thukral <mithlesh@linsyssoft.com>
-rw-r--r--drivers/staging/sxg/sxg.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/staging/sxg/sxg.c b/drivers/staging/sxg/sxg.c
index 52d2ab97070..d8edf42ac52 100644
--- a/drivers/staging/sxg/sxg.c
+++ b/drivers/staging/sxg/sxg.c
@@ -2615,7 +2615,9 @@ static int sxg_dumb_sgl(struct sxg_x64_sgl *pSgl,
struct iphdr *ip;
ip = ip_hdr(skb);
- if ((ip->protocol == IPPROTO_TCP)&&(DataLength >= sizeof(
+ if (ip->protocol != IPPROTO_TCP || !tcp_hdr(skb))
+ queue_id = 0;
+ else if ((ip->protocol == IPPROTO_TCP)&&(DataLength >= sizeof(
struct tcphdr))){
queue_id = ((ntohs(tcp_hdr(skb)->dest) == ISCSI_PORT) ?
(ntohs (tcp_hdr(skb)->source) &
@@ -2624,8 +2626,10 @@ static int sxg_dumb_sgl(struct sxg_x64_sgl *pSgl,
SXG_LARGE_SEND_QUEUE_MASK));
}
} else if (skb->protocol == htons(ETH_P_IPV6)) {
- if ((ipv6_hdr(skb)->nexthdr == IPPROTO_TCP) && (DataLength >=
- sizeof(struct tcphdr)) ) {
+ if (ipv6_hdr(skb)->nexthdr != IPPROTO_TCP || !tcp_hdr(skb))
+ queue_id = 0;
+ else if ((ipv6_hdr(skb)->nexthdr == IPPROTO_TCP) && (DataLength
+ >= sizeof(struct tcphdr)) ) {
queue_id = ((ntohs(tcp_hdr(skb)->dest) == ISCSI_PORT) ?
(ntohs (tcp_hdr(skb)->source) &
SXG_LARGE_SEND_QUEUE_MASK):