[ewg] [PATCH 1/5] RDMA/nes: fix a problem with sending packets with VLAN flag
miroslaw.walukiewicz at intel.com
miroslaw.walukiewicz at intel.com
Thu Dec 9 08:01:19 PST 2010
Now the VLAN tag is set in transmit wqe descriptor correctly.
Signed-off-by: Mirek Walukiewicz <miroslaw.walukiewicz at intel.com>
---
kernel_patches/fixes/nes_0051_ima_vlan_fix.patch | 33 ++++++++++++++++++++++
1 files changed, 33 insertions(+), 0 deletions(-)
create mode 100644 kernel_patches/fixes/nes_0051_ima_vlan_fix.patch
diff --git a/kernel_patches/fixes/nes_0051_ima_vlan_fix.patch b/kernel_patches/fixes/nes_0051_ima_vlan_fix.patch
new file mode 100644
index 0000000..2a8a346
--- /dev/null
+++ b/kernel_patches/fixes/nes_0051_ima_vlan_fix.patch
@@ -0,0 +1,33 @@
+diff --git a/drivers/infiniband/hw/nes/nes_ud.c b/drivers/infiniband/hw/nes/nes_ud.c
+index a1e0a76..2cb6f0c 100644
+--- a/drivers/infiniband/hw/nes/nes_ud.c
++++ b/drivers/infiniband/hw/nes/nes_ud.c
+@@ -1625,6 +1625,7 @@ int nes_ud_post_send(struct nes_ud_file *file,
+ int err = 0;
+ int misc_flags = NES_NIC_SQ_WQE_COMPLETION;
+ int i = 0;
++ int vlan_tag = 0;
+ struct nes_ud_resources *pRsc;
+
+ /* check if qp is activated */
+@@ -1637,6 +1638,11 @@ int nes_ud_post_send(struct nes_ud_file *file,
+ if (!(nes_ud_wr->flags & IB_SEND_IP_CSUM))
+ misc_flags |= NES_NIC_SQ_WQE_DISABLE_CHKSUM;
+
++#define VLAN_FLAGS 0x20
++ if ((nes_ud_wr->flags & VLAN_FLAGS)) {
++ vlan_tag = (nes_ud_wr->flags >> 16) & 0xffff;
++ misc_flags |= NES_NIC_SQ_WQE_TAGVALUE_ENABLE;
++ }
+ /* let's assume for now that max sge count is 1 */
+ for (i = 0; i < nes_ud_wr->wr_cnt; i++) {
+ nic_sqe = &sq_vbase[file->head];
+@@ -1660,7 +1666,7 @@ int nes_ud_post_send(struct nes_ud_file *file,
+
+ wqe_fragment_length =
+ (u16 *)&nic_sqe->wqe_words[NES_NIC_SQ_WQE_LENGTH_0_TAG_IDX];
+-
++ wqe_fragment_length[0] = cpu_to_le16(vlan_tag);
+ wqe_fragment_length++; /* skip vlan tag */
+ remaining_length = nes_ud_wr->sg_list[i].length;
+ wqe_fragment_index = 0;
More information about the ewg
mailing list