forked from luck/tmp_suning_uos_patched
xfrm: don't check offload_handle for nonzero
The offload_handle should be an opaque data cookie for the driver to use, much like the data cookie for a timer or alarm callback. Thus, the XFRM stack should not be checking for non-zero, because the driver might use that to store an array reference, which could be zero, or some other zero but meaningful value. We can remove the checks for non-zero because there are plenty other attributes also being checked to see if there is an offload in place for the SA in question. Signed-off-by: Shannon Nelson <shannon.nelson@oracle.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
This commit is contained in:
parent
03dc7a35fc
commit
fcb662deeb
|
@ -135,8 +135,7 @@ static struct sk_buff *esp4_gso_segment(struct sk_buff *skb,
|
|||
|
||||
skb->encap_hdr_csum = 1;
|
||||
|
||||
if (!(features & NETIF_F_HW_ESP) || !x->xso.offload_handle ||
|
||||
(x->xso.dev != skb->dev))
|
||||
if (!(features & NETIF_F_HW_ESP) || x->xso.dev != skb->dev)
|
||||
esp_features = features & ~(NETIF_F_SG | NETIF_F_CSUM_MASK);
|
||||
else if (!(features & NETIF_F_HW_ESP_TX_CSUM))
|
||||
esp_features = features & ~NETIF_F_CSUM_MASK;
|
||||
|
@ -179,8 +178,7 @@ static int esp_xmit(struct xfrm_state *x, struct sk_buff *skb, netdev_features_
|
|||
if (!xo)
|
||||
return -EINVAL;
|
||||
|
||||
if (!(features & NETIF_F_HW_ESP) || !x->xso.offload_handle ||
|
||||
(x->xso.dev != skb->dev)) {
|
||||
if (!(features & NETIF_F_HW_ESP) || x->xso.dev != skb->dev) {
|
||||
xo->flags |= CRYPTO_FALLBACK;
|
||||
hw_offload = false;
|
||||
}
|
||||
|
|
|
@ -162,8 +162,7 @@ static struct sk_buff *esp6_gso_segment(struct sk_buff *skb,
|
|||
|
||||
skb->encap_hdr_csum = 1;
|
||||
|
||||
if (!(features & NETIF_F_HW_ESP) || !x->xso.offload_handle ||
|
||||
(x->xso.dev != skb->dev))
|
||||
if (!(features & NETIF_F_HW_ESP) || x->xso.dev != skb->dev)
|
||||
esp_features = features & ~(NETIF_F_SG | NETIF_F_CSUM_MASK);
|
||||
else if (!(features & NETIF_F_HW_ESP_TX_CSUM))
|
||||
esp_features = features & ~NETIF_F_CSUM_MASK;
|
||||
|
@ -207,8 +206,7 @@ static int esp6_xmit(struct xfrm_state *x, struct sk_buff *skb, netdev_features
|
|||
if (!xo)
|
||||
return -EINVAL;
|
||||
|
||||
if (!(features & NETIF_F_HW_ESP) || !x->xso.offload_handle ||
|
||||
(x->xso.dev != skb->dev)) {
|
||||
if (!(features & NETIF_F_HW_ESP) || x->xso.dev != skb->dev) {
|
||||
xo->flags |= CRYPTO_FALLBACK;
|
||||
hw_offload = false;
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ struct sk_buff *validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t featur
|
|||
if (skb_is_gso(skb)) {
|
||||
struct net_device *dev = skb->dev;
|
||||
|
||||
if (unlikely(!x->xso.offload_handle || (x->xso.dev != dev))) {
|
||||
if (unlikely(x->xso.dev != dev)) {
|
||||
struct sk_buff *segs;
|
||||
|
||||
/* Packet got rerouted, fixup features and segment it. */
|
||||
|
@ -211,8 +211,8 @@ bool xfrm_dev_offload_ok(struct sk_buff *skb, struct xfrm_state *x)
|
|||
if (!x->type_offload || x->encap)
|
||||
return false;
|
||||
|
||||
if ((!dev || (x->xso.offload_handle && (dev == xfrm_dst_path(dst)->dev))) &&
|
||||
(!xdst->child->xfrm && x->type->get_mtu)) {
|
||||
if ((!dev || (dev == xfrm_dst_path(dst)->dev)) &&
|
||||
(!xdst->child->xfrm && x->type->get_mtu)) {
|
||||
mtu = x->type->get_mtu(x, xdst->child_mtu_cached);
|
||||
|
||||
if (skb->len <= mtu)
|
||||
|
|
Loading…
Reference in New Issue
Block a user