Skip to content

Commit ac0245f

Browse files
Karen XieJames Bottomley
authored andcommitted
[SCSI] cxgb4i: Use cxgb4_select_ntuple to correctly calculate ntuple fields
Fixed calculates wrong tuple values on T5 adapter: switch to use the exported API cxgb4_select_ntuple() from cxgb4 base driver. Signed-off-by: Karen Xie <kxie@chelsio.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
1 parent 58968fc commit ac0245f

File tree

1 file changed

+7
-52
lines changed

1 file changed

+7
-52
lines changed

drivers/scsi/cxgbi/cxgb4i/cxgb4i.c

Lines changed: 7 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -175,52 +175,6 @@ static inline int is_ofld_imm(const struct sk_buff *skb)
175175
sizeof(struct fw_ofld_tx_data_wr));
176176
}
177177

178-
179-
#define VLAN_NONE 0xfff
180-
#define FILTER_SEL_VLAN_NONE 0xffff
181-
#define FILTER_SEL_WIDTH_P_FC (3+1) /* port uses 3 bits, FCoE one bit */
182-
#define FILTER_SEL_WIDTH_VIN_P_FC \
183-
(6 + 7 + FILTER_SEL_WIDTH_P_FC) /* 6 bits are unused, VF uses 7 bits*/
184-
#define FILTER_SEL_WIDTH_TAG_P_FC \
185-
(3 + FILTER_SEL_WIDTH_VIN_P_FC) /* PF uses 3 bits */
186-
#define FILTER_SEL_WIDTH_VLD_TAG_P_FC (1 + FILTER_SEL_WIDTH_TAG_P_FC)
187-
188-
static unsigned int select_ntuple(struct cxgbi_device *cdev,
189-
struct l2t_entry *l2t)
190-
{
191-
struct cxgb4_lld_info *lldi = cxgbi_cdev_priv(cdev);
192-
unsigned int ntuple = 0;
193-
u32 viid;
194-
195-
switch (lldi->filt_mode) {
196-
197-
/* default filter mode */
198-
case HW_TPL_FR_MT_PR_IV_P_FC:
199-
if (l2t->vlan == VLAN_NONE)
200-
ntuple |= FILTER_SEL_VLAN_NONE << FILTER_SEL_WIDTH_P_FC;
201-
else {
202-
ntuple |= l2t->vlan << FILTER_SEL_WIDTH_P_FC;
203-
ntuple |= 1 << FILTER_SEL_WIDTH_VLD_TAG_P_FC;
204-
}
205-
ntuple |= l2t->lport << S_PORT | IPPROTO_TCP <<
206-
FILTER_SEL_WIDTH_VLD_TAG_P_FC;
207-
break;
208-
case HW_TPL_FR_MT_PR_OV_P_FC: {
209-
viid = cxgb4_port_viid(l2t->neigh->dev);
210-
211-
ntuple |= FW_VIID_VIN_GET(viid) << FILTER_SEL_WIDTH_P_FC;
212-
ntuple |= FW_VIID_PFN_GET(viid) << FILTER_SEL_WIDTH_VIN_P_FC;
213-
ntuple |= FW_VIID_VIVLD_GET(viid) << FILTER_SEL_WIDTH_TAG_P_FC;
214-
ntuple |= l2t->lport << S_PORT | IPPROTO_TCP <<
215-
FILTER_SEL_WIDTH_VLD_TAG_P_FC;
216-
break;
217-
}
218-
default:
219-
break;
220-
}
221-
return ntuple;
222-
}
223-
224178
static void send_act_open_req(struct cxgbi_sock *csk, struct sk_buff *skb,
225179
struct l2t_entry *e)
226180
{
@@ -248,8 +202,6 @@ static void send_act_open_req(struct cxgbi_sock *csk, struct sk_buff *skb,
248202
struct cpl_act_open_req *req =
249203
(struct cpl_act_open_req *)skb->head;
250204

251-
req = (struct cpl_act_open_req *)skb->head;
252-
253205
INIT_TP_WR(req, 0);
254206
OPCODE_TID(req) = cpu_to_be32(MK_OPCODE_TID(CPL_ACT_OPEN_REQ,
255207
qid_atid));
@@ -258,7 +210,9 @@ static void send_act_open_req(struct cxgbi_sock *csk, struct sk_buff *skb,
258210
req->local_ip = csk->saddr.sin_addr.s_addr;
259211
req->peer_ip = csk->daddr.sin_addr.s_addr;
260212
req->opt0 = cpu_to_be64(opt0);
261-
req->params = cpu_to_be32(select_ntuple(csk->cdev, csk->l2t));
213+
req->params = cpu_to_be32(cxgb4_select_ntuple(
214+
csk->cdev->ports[csk->port_id],
215+
csk->l2t));
262216
opt2 |= 1 << 22;
263217
req->opt2 = cpu_to_be32(opt2);
264218

@@ -271,8 +225,6 @@ static void send_act_open_req(struct cxgbi_sock *csk, struct sk_buff *skb,
271225
struct cpl_t5_act_open_req *req =
272226
(struct cpl_t5_act_open_req *)skb->head;
273227

274-
req = (struct cpl_t5_act_open_req *)skb->head;
275-
276228
INIT_TP_WR(req, 0);
277229
OPCODE_TID(req) = cpu_to_be32(MK_OPCODE_TID(CPL_ACT_OPEN_REQ,
278230
qid_atid));
@@ -281,7 +233,10 @@ static void send_act_open_req(struct cxgbi_sock *csk, struct sk_buff *skb,
281233
req->local_ip = csk->saddr.sin_addr.s_addr;
282234
req->peer_ip = csk->daddr.sin_addr.s_addr;
283235
req->opt0 = cpu_to_be64(opt0);
284-
req->params = cpu_to_be32(select_ntuple(csk->cdev, csk->l2t));
236+
req->params = cpu_to_be64(V_FILTER_TUPLE(
237+
cxgb4_select_ntuple(
238+
csk->cdev->ports[csk->port_id],
239+
csk->l2t)));
285240
opt2 |= 1 << 31;
286241
req->opt2 = cpu_to_be32(opt2);
287242

0 commit comments

Comments
 (0)