target/cxgbit: Use T6 specific macros to get ETH/IP hdr len
authorVarun Prakash <varun@chelsio.com>
Fri, 13 Jan 2017 15:23:23 +0000 (20:53 +0530)
committerNicholas Bellinger <nab@linux-iscsi.org>
Sun, 19 Feb 2017 05:24:19 +0000 (21:24 -0800)
Signed-off-by: Varun Prakash <varun@chelsio.com>
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/iscsi/cxgbit/cxgbit_cm.c

index 845a7de..b26c85a 100644 (file)
@@ -1068,6 +1068,7 @@ cxgbit_pass_accept_rpl(struct cxgbit_sock *csk, struct cpl_pass_accept_req *req)
        struct sk_buff *skb;
        const struct tcphdr *tcph;
        struct cpl_t5_pass_accept_rpl *rpl5;
+       struct cxgb4_lld_info *lldi = &csk->com.cdev->lldi;
        unsigned int len = roundup(sizeof(*rpl5), 16);
        unsigned int mtu_idx;
        u64 opt0;
@@ -1121,8 +1122,13 @@ cxgbit_pass_accept_rpl(struct cxgbit_sock *csk, struct cpl_pass_accept_req *req)
                opt2 |= WND_SCALE_EN_F;
 
        hlen = ntohl(req->hdr_len);
-       tcph = (const void *)(req + 1) + ETH_HDR_LEN_G(hlen) +
-               IP_HDR_LEN_G(hlen);
+
+       if (is_t5(lldi->adapter_type))
+               tcph = (struct tcphdr *)((u8 *)(req + 1) +
+                      ETH_HDR_LEN_G(hlen) + IP_HDR_LEN_G(hlen));
+       else
+               tcph = (struct tcphdr *)((u8 *)(req + 1) +
+                      T6_ETH_HDR_LEN_G(hlen) + T6_IP_HDR_LEN_G(hlen));
 
        if (tcph->ece && tcph->cwr)
                opt2 |= CCTRL_ECN_V(1);