Loading drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -524,7 +524,8 @@ static int ipa3_attrib_dump(struct ipa_rule_attrib *attrib, } } if ((attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_ETHER_II) || if ((attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_ETHER_II) || (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_802_3)) { (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_802_3) || (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP)) { pr_err("dst_mac_addr:%pM ", attrib->dst_mac_addr); pr_err("dst_mac_addr:%pM ", attrib->dst_mac_addr); } } Loading drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_fltrt.c +132 −0 Original line number Original line Diff line number Diff line Loading @@ -797,6 +797,38 @@ static int ipa_fltrt_generate_hw_rule_bdy_ip4(u16 *en_rule, ihl_ofst_meq32++; ihl_ofst_meq32++; } } if (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32) || IPA_IS_RAN_OUT_OF_EQ( ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32 + 1)) { IPAHAL_ERR("ran out of ihl_meq32 eq\n"); goto err; } *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32]); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32 + 1]); /* populate first ihl meq eq */ extra = ipa_write_8(8, extra); rest = ipa_write_8(attrib->dst_mac_addr_mask[3], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[2], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[1], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[0], rest); rest = ipa_write_8(attrib->dst_mac_addr[3], rest); rest = ipa_write_8(attrib->dst_mac_addr[2], rest); rest = ipa_write_8(attrib->dst_mac_addr[1], rest); rest = ipa_write_8(attrib->dst_mac_addr[0], rest); /* populate second ihl meq eq */ extra = ipa_write_8(12, extra); rest = ipa_write_16(0, rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[5], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[4], rest); rest = ipa_write_16(0, rest); rest = ipa_write_8(attrib->dst_mac_addr[5], rest); rest = ipa_write_8(attrib->dst_mac_addr[4], rest); ihl_ofst_meq32 += 2; } if (attrib->attrib_mask & IPA_FLT_META_DATA) { if (attrib->attrib_mask & IPA_FLT_META_DATA) { *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN(IPA_METADATA_COMPARE); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN(IPA_METADATA_COMPARE); rest = ipa_write_32(attrib->meta_data_mask, rest); rest = ipa_write_32(attrib->meta_data_mask, rest); Loading Loading @@ -1103,6 +1135,38 @@ static int ipa_fltrt_generate_hw_rule_bdy_ip6(u16 *en_rule, ihl_ofst_meq32++; ihl_ofst_meq32++; } } if (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32) || IPA_IS_RAN_OUT_OF_EQ( ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32 + 1)) { IPAHAL_ERR("ran out of ihl_meq32 eq\n"); goto err; } *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32]); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32 + 1]); /* populate first ihl meq eq */ extra = ipa_write_8(8, extra); rest = ipa_write_8(attrib->dst_mac_addr_mask[3], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[2], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[1], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[0], rest); rest = ipa_write_8(attrib->dst_mac_addr[3], rest); rest = ipa_write_8(attrib->dst_mac_addr[2], rest); rest = ipa_write_8(attrib->dst_mac_addr[1], rest); rest = ipa_write_8(attrib->dst_mac_addr[0], rest); /* populate second ihl meq eq */ extra = ipa_write_8(12, extra); rest = ipa_write_16(0, rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[5], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[4], rest); rest = ipa_write_16(0, rest); rest = ipa_write_8(attrib->dst_mac_addr[5], rest); rest = ipa_write_8(attrib->dst_mac_addr[4], rest); ihl_ofst_meq32 += 2; } if (attrib->attrib_mask & IPA_FLT_META_DATA) { if (attrib->attrib_mask & IPA_FLT_META_DATA) { *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN(IPA_METADATA_COMPARE); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN(IPA_METADATA_COMPARE); rest = ipa_write_32(attrib->meta_data_mask, rest); rest = ipa_write_32(attrib->meta_data_mask, rest); Loading Loading @@ -1613,6 +1677,40 @@ static int ipa_flt_generate_eq_ip4(enum ipa_ip_type ip, ofst_meq128++; ofst_meq128++; } } if (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32) || IPA_IS_RAN_OUT_OF_EQ( ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32 + 1)) { IPAHAL_ERR("ran out of ihl_meq32 eq\n"); return -EPERM; } *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32]); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32 + 1]); /* populate the first ihl meq 32 eq */ eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].offset = 8; eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].mask = (attrib->dst_mac_addr_mask[3] & 0xFF) | ((attrib->dst_mac_addr_mask[2] << 8) & 0xFF00) | ((attrib->dst_mac_addr_mask[1] << 16) & 0xFF0000) | ((attrib->dst_mac_addr_mask[0] << 24) & 0xFF000000); eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].value = (attrib->dst_mac_addr[3] & 0xFF) | ((attrib->dst_mac_addr[2] << 8) & 0xFF00) | ((attrib->dst_mac_addr[1] << 16) & 0xFF0000) | ((attrib->dst_mac_addr[0] << 24) & 0xFF000000); /* populate the second ihl meq 32 eq */ eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].offset = 12; eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].mask = ((attrib->dst_mac_addr_mask[5] << 16) & 0xFF0000) | ((attrib->dst_mac_addr_mask[4] << 24) & 0xFF000000); eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].value = ((attrib->dst_mac_addr[5] << 16) & 0xFF0000) | ((attrib->dst_mac_addr[4] << 24) & 0xFF000000); ihl_ofst_meq32 += 2; } if (attrib->attrib_mask & IPA_FLT_TOS_MASKED) { if (attrib->attrib_mask & IPA_FLT_TOS_MASKED) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ofst_meq32, ofst_meq32)) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ofst_meq32, ofst_meq32)) { IPAHAL_ERR("ran out of meq32 eq\n"); IPAHAL_ERR("ran out of meq32 eq\n"); Loading Loading @@ -1976,6 +2074,40 @@ static int ipa_flt_generate_eq_ip6(enum ipa_ip_type ip, ofst_meq128++; ofst_meq128++; } } if (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32) || IPA_IS_RAN_OUT_OF_EQ( ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32 + 1)) { IPAHAL_ERR("ran out of ihl_meq32 eq\n"); return -EPERM; } *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32]); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32 + 1]); /* populate the first ihl meq 32 eq */ eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].offset = 8; eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].mask = (attrib->dst_mac_addr_mask[3] & 0xFF) | ((attrib->dst_mac_addr_mask[2] << 8) & 0xFF00) | ((attrib->dst_mac_addr_mask[1] << 16) & 0xFF0000) | ((attrib->dst_mac_addr_mask[0] << 24) & 0xFF000000); eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].value = (attrib->dst_mac_addr[3] & 0xFF) | ((attrib->dst_mac_addr[2] << 8) & 0xFF00) | ((attrib->dst_mac_addr[1] << 16) & 0xFF0000) | ((attrib->dst_mac_addr[0] << 24) & 0xFF000000); /* populate the second ihl meq 32 eq */ eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].offset = 12; eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].mask = ((attrib->dst_mac_addr_mask[5] << 16) & 0xFF0000) | ((attrib->dst_mac_addr_mask[4] << 24) & 0xFF000000); eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].value = ((attrib->dst_mac_addr[5] << 16) & 0xFF0000) | ((attrib->dst_mac_addr[4] << 24) & 0xFF000000); ihl_ofst_meq32 += 2; } if (attrib->attrib_mask & IPA_FLT_MAC_ETHER_TYPE) { if (attrib->attrib_mask & IPA_FLT_MAC_ETHER_TYPE) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ofst_meq32, ofst_meq32)) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ofst_meq32, ofst_meq32)) { IPAHAL_ERR("ran out of meq32 eq\n"); IPAHAL_ERR("ran out of meq32 eq\n"); Loading include/uapi/linux/msm_ipa.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -127,6 +127,7 @@ #define IPA_FLT_MAC_SRC_ADDR_802_3 (1ul << 19) #define IPA_FLT_MAC_SRC_ADDR_802_3 (1ul << 19) #define IPA_FLT_MAC_DST_ADDR_802_3 (1ul << 20) #define IPA_FLT_MAC_DST_ADDR_802_3 (1ul << 20) #define IPA_FLT_MAC_ETHER_TYPE (1ul << 21) #define IPA_FLT_MAC_ETHER_TYPE (1ul << 21) #define IPA_FLT_MAC_DST_ADDR_L2TP (1ul << 22) /** /** * maximal number of NAT PDNs in the PDN config table * maximal number of NAT PDNs in the PDN config table Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -524,7 +524,8 @@ static int ipa3_attrib_dump(struct ipa_rule_attrib *attrib, } } if ((attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_ETHER_II) || if ((attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_ETHER_II) || (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_802_3)) { (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_802_3) || (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP)) { pr_err("dst_mac_addr:%pM ", attrib->dst_mac_addr); pr_err("dst_mac_addr:%pM ", attrib->dst_mac_addr); } } Loading
drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_fltrt.c +132 −0 Original line number Original line Diff line number Diff line Loading @@ -797,6 +797,38 @@ static int ipa_fltrt_generate_hw_rule_bdy_ip4(u16 *en_rule, ihl_ofst_meq32++; ihl_ofst_meq32++; } } if (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32) || IPA_IS_RAN_OUT_OF_EQ( ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32 + 1)) { IPAHAL_ERR("ran out of ihl_meq32 eq\n"); goto err; } *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32]); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32 + 1]); /* populate first ihl meq eq */ extra = ipa_write_8(8, extra); rest = ipa_write_8(attrib->dst_mac_addr_mask[3], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[2], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[1], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[0], rest); rest = ipa_write_8(attrib->dst_mac_addr[3], rest); rest = ipa_write_8(attrib->dst_mac_addr[2], rest); rest = ipa_write_8(attrib->dst_mac_addr[1], rest); rest = ipa_write_8(attrib->dst_mac_addr[0], rest); /* populate second ihl meq eq */ extra = ipa_write_8(12, extra); rest = ipa_write_16(0, rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[5], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[4], rest); rest = ipa_write_16(0, rest); rest = ipa_write_8(attrib->dst_mac_addr[5], rest); rest = ipa_write_8(attrib->dst_mac_addr[4], rest); ihl_ofst_meq32 += 2; } if (attrib->attrib_mask & IPA_FLT_META_DATA) { if (attrib->attrib_mask & IPA_FLT_META_DATA) { *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN(IPA_METADATA_COMPARE); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN(IPA_METADATA_COMPARE); rest = ipa_write_32(attrib->meta_data_mask, rest); rest = ipa_write_32(attrib->meta_data_mask, rest); Loading Loading @@ -1103,6 +1135,38 @@ static int ipa_fltrt_generate_hw_rule_bdy_ip6(u16 *en_rule, ihl_ofst_meq32++; ihl_ofst_meq32++; } } if (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32) || IPA_IS_RAN_OUT_OF_EQ( ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32 + 1)) { IPAHAL_ERR("ran out of ihl_meq32 eq\n"); goto err; } *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32]); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32 + 1]); /* populate first ihl meq eq */ extra = ipa_write_8(8, extra); rest = ipa_write_8(attrib->dst_mac_addr_mask[3], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[2], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[1], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[0], rest); rest = ipa_write_8(attrib->dst_mac_addr[3], rest); rest = ipa_write_8(attrib->dst_mac_addr[2], rest); rest = ipa_write_8(attrib->dst_mac_addr[1], rest); rest = ipa_write_8(attrib->dst_mac_addr[0], rest); /* populate second ihl meq eq */ extra = ipa_write_8(12, extra); rest = ipa_write_16(0, rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[5], rest); rest = ipa_write_8(attrib->dst_mac_addr_mask[4], rest); rest = ipa_write_16(0, rest); rest = ipa_write_8(attrib->dst_mac_addr[5], rest); rest = ipa_write_8(attrib->dst_mac_addr[4], rest); ihl_ofst_meq32 += 2; } if (attrib->attrib_mask & IPA_FLT_META_DATA) { if (attrib->attrib_mask & IPA_FLT_META_DATA) { *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN(IPA_METADATA_COMPARE); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN(IPA_METADATA_COMPARE); rest = ipa_write_32(attrib->meta_data_mask, rest); rest = ipa_write_32(attrib->meta_data_mask, rest); Loading Loading @@ -1613,6 +1677,40 @@ static int ipa_flt_generate_eq_ip4(enum ipa_ip_type ip, ofst_meq128++; ofst_meq128++; } } if (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32) || IPA_IS_RAN_OUT_OF_EQ( ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32 + 1)) { IPAHAL_ERR("ran out of ihl_meq32 eq\n"); return -EPERM; } *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32]); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32 + 1]); /* populate the first ihl meq 32 eq */ eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].offset = 8; eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].mask = (attrib->dst_mac_addr_mask[3] & 0xFF) | ((attrib->dst_mac_addr_mask[2] << 8) & 0xFF00) | ((attrib->dst_mac_addr_mask[1] << 16) & 0xFF0000) | ((attrib->dst_mac_addr_mask[0] << 24) & 0xFF000000); eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].value = (attrib->dst_mac_addr[3] & 0xFF) | ((attrib->dst_mac_addr[2] << 8) & 0xFF00) | ((attrib->dst_mac_addr[1] << 16) & 0xFF0000) | ((attrib->dst_mac_addr[0] << 24) & 0xFF000000); /* populate the second ihl meq 32 eq */ eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].offset = 12; eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].mask = ((attrib->dst_mac_addr_mask[5] << 16) & 0xFF0000) | ((attrib->dst_mac_addr_mask[4] << 24) & 0xFF000000); eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].value = ((attrib->dst_mac_addr[5] << 16) & 0xFF0000) | ((attrib->dst_mac_addr[4] << 24) & 0xFF000000); ihl_ofst_meq32 += 2; } if (attrib->attrib_mask & IPA_FLT_TOS_MASKED) { if (attrib->attrib_mask & IPA_FLT_TOS_MASKED) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ofst_meq32, ofst_meq32)) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ofst_meq32, ofst_meq32)) { IPAHAL_ERR("ran out of meq32 eq\n"); IPAHAL_ERR("ran out of meq32 eq\n"); Loading Loading @@ -1976,6 +2074,40 @@ static int ipa_flt_generate_eq_ip6(enum ipa_ip_type ip, ofst_meq128++; ofst_meq128++; } } if (attrib->attrib_mask & IPA_FLT_MAC_DST_ADDR_L2TP) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32) || IPA_IS_RAN_OUT_OF_EQ( ipa3_0_ihl_ofst_meq32, ihl_ofst_meq32 + 1)) { IPAHAL_ERR("ran out of ihl_meq32 eq\n"); return -EPERM; } *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32]); *en_rule |= IPA_GET_RULE_EQ_BIT_PTRN( ipa3_0_ihl_ofst_meq32[ihl_ofst_meq32 + 1]); /* populate the first ihl meq 32 eq */ eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].offset = 8; eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].mask = (attrib->dst_mac_addr_mask[3] & 0xFF) | ((attrib->dst_mac_addr_mask[2] << 8) & 0xFF00) | ((attrib->dst_mac_addr_mask[1] << 16) & 0xFF0000) | ((attrib->dst_mac_addr_mask[0] << 24) & 0xFF000000); eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32].value = (attrib->dst_mac_addr[3] & 0xFF) | ((attrib->dst_mac_addr[2] << 8) & 0xFF00) | ((attrib->dst_mac_addr[1] << 16) & 0xFF0000) | ((attrib->dst_mac_addr[0] << 24) & 0xFF000000); /* populate the second ihl meq 32 eq */ eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].offset = 12; eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].mask = ((attrib->dst_mac_addr_mask[5] << 16) & 0xFF0000) | ((attrib->dst_mac_addr_mask[4] << 24) & 0xFF000000); eq_atrb->ihl_offset_meq_32[ihl_ofst_meq32 + 1].value = ((attrib->dst_mac_addr[5] << 16) & 0xFF0000) | ((attrib->dst_mac_addr[4] << 24) & 0xFF000000); ihl_ofst_meq32 += 2; } if (attrib->attrib_mask & IPA_FLT_MAC_ETHER_TYPE) { if (attrib->attrib_mask & IPA_FLT_MAC_ETHER_TYPE) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ofst_meq32, ofst_meq32)) { if (IPA_IS_RAN_OUT_OF_EQ(ipa3_0_ofst_meq32, ofst_meq32)) { IPAHAL_ERR("ran out of meq32 eq\n"); IPAHAL_ERR("ran out of meq32 eq\n"); Loading
include/uapi/linux/msm_ipa.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -127,6 +127,7 @@ #define IPA_FLT_MAC_SRC_ADDR_802_3 (1ul << 19) #define IPA_FLT_MAC_SRC_ADDR_802_3 (1ul << 19) #define IPA_FLT_MAC_DST_ADDR_802_3 (1ul << 20) #define IPA_FLT_MAC_DST_ADDR_802_3 (1ul << 20) #define IPA_FLT_MAC_ETHER_TYPE (1ul << 21) #define IPA_FLT_MAC_ETHER_TYPE (1ul << 21) #define IPA_FLT_MAC_DST_ADDR_L2TP (1ul << 22) /** /** * maximal number of NAT PDNs in the PDN config table * maximal number of NAT PDNs in the PDN config table Loading