Lines Matching refs:xs
19 struct xfrm_state *xs) in ixgbevf_ipsec_set_pf_sa() argument
28 sam->flags = xs->xso.flags; in ixgbevf_ipsec_set_pf_sa()
29 sam->spi = xs->id.spi; in ixgbevf_ipsec_set_pf_sa()
30 sam->proto = xs->id.proto; in ixgbevf_ipsec_set_pf_sa()
31 sam->family = xs->props.family; in ixgbevf_ipsec_set_pf_sa()
33 if (xs->props.family == AF_INET6) in ixgbevf_ipsec_set_pf_sa()
34 memcpy(sam->addr, &xs->id.daddr.a6, sizeof(xs->id.daddr.a6)); in ixgbevf_ipsec_set_pf_sa()
36 memcpy(sam->addr, &xs->id.daddr.a4, sizeof(xs->id.daddr.a4)); in ixgbevf_ipsec_set_pf_sa()
37 memcpy(sam->key, xs->aead->alg_key, sizeof(sam->key)); in ixgbevf_ipsec_set_pf_sa()
117 ret = ixgbevf_ipsec_set_pf_sa(adapter, r->xs); in ixgbevf_ipsec_restore()
124 ret = ixgbevf_ipsec_set_pf_sa(adapter, t->xs); in ixgbevf_ipsec_restore()
188 if (spi == rsa->xs->id.spi && in ixgbevf_ipsec_find_rx_state()
189 ((ip4 && *daddr == rsa->xs->id.daddr.a4) || in ixgbevf_ipsec_find_rx_state()
190 (!ip4 && !memcmp(daddr, &rsa->xs->id.daddr.a6, in ixgbevf_ipsec_find_rx_state()
191 sizeof(rsa->xs->id.daddr.a6)))) && in ixgbevf_ipsec_find_rx_state()
192 proto == rsa->xs->id.proto) { in ixgbevf_ipsec_find_rx_state()
193 ret = rsa->xs; in ixgbevf_ipsec_find_rx_state()
211 static int ixgbevf_ipsec_parse_proto_keys(struct xfrm_state *xs, in ixgbevf_ipsec_parse_proto_keys() argument
214 struct net_device *dev = xs->xso.real_dev; in ixgbevf_ipsec_parse_proto_keys()
219 if (!xs->aead) { in ixgbevf_ipsec_parse_proto_keys()
224 if (xs->aead->alg_icv_len != IXGBE_IPSEC_AUTH_BITS) { in ixgbevf_ipsec_parse_proto_keys()
230 key_data = &xs->aead->alg_key[0]; in ixgbevf_ipsec_parse_proto_keys()
231 key_len = xs->aead->alg_key_len; in ixgbevf_ipsec_parse_proto_keys()
232 alg_name = xs->aead->alg_name; in ixgbevf_ipsec_parse_proto_keys()
261 static int ixgbevf_ipsec_add_sa(struct xfrm_state *xs) in ixgbevf_ipsec_add_sa() argument
263 struct net_device *dev = xs->xso.real_dev; in ixgbevf_ipsec_add_sa()
272 if (xs->id.proto != IPPROTO_ESP && xs->id.proto != IPPROTO_AH) { in ixgbevf_ipsec_add_sa()
274 xs->id.proto); in ixgbevf_ipsec_add_sa()
278 if (xs->props.mode != XFRM_MODE_TRANSPORT) { in ixgbevf_ipsec_add_sa()
283 if (xs->xso.flags & XFRM_OFFLOAD_INBOUND) { in ixgbevf_ipsec_add_sa()
286 if (xs->calg) { in ixgbevf_ipsec_add_sa()
301 rsa.xs = xs; in ixgbevf_ipsec_add_sa()
303 if (rsa.xs->id.proto & IPPROTO_ESP) in ixgbevf_ipsec_add_sa()
304 rsa.decrypt = xs->ealg || xs->aead; in ixgbevf_ipsec_add_sa()
307 ret = ixgbevf_ipsec_parse_proto_keys(xs, rsa.key, &rsa.salt); in ixgbevf_ipsec_add_sa()
314 if (xs->props.family == AF_INET6) in ixgbevf_ipsec_add_sa()
315 memcpy(rsa.ipaddr, &xs->id.daddr.a6, 16); in ixgbevf_ipsec_add_sa()
317 memcpy(&rsa.ipaddr[3], &xs->id.daddr.a4, 4); in ixgbevf_ipsec_add_sa()
320 if (rsa.xs->id.proto & IPPROTO_ESP) in ixgbevf_ipsec_add_sa()
324 if (rsa.xs->props.family == AF_INET6) in ixgbevf_ipsec_add_sa()
327 ret = ixgbevf_ipsec_set_pf_sa(adapter, xs); in ixgbevf_ipsec_add_sa()
335 xs->xso.offload_handle = sa_idx + IXGBE_IPSEC_BASE_RX_INDEX; in ixgbevf_ipsec_add_sa()
341 (__force u32)rsa.xs->id.spi); in ixgbevf_ipsec_add_sa()
355 tsa.xs = xs; in ixgbevf_ipsec_add_sa()
357 if (xs->id.proto & IPPROTO_ESP) in ixgbevf_ipsec_add_sa()
358 tsa.encrypt = xs->ealg || xs->aead; in ixgbevf_ipsec_add_sa()
360 ret = ixgbevf_ipsec_parse_proto_keys(xs, tsa.key, &tsa.salt); in ixgbevf_ipsec_add_sa()
367 ret = ixgbevf_ipsec_set_pf_sa(adapter, xs); in ixgbevf_ipsec_add_sa()
375 xs->xso.offload_handle = sa_idx + IXGBE_IPSEC_BASE_TX_INDEX; in ixgbevf_ipsec_add_sa()
387 static void ixgbevf_ipsec_del_sa(struct xfrm_state *xs) in ixgbevf_ipsec_del_sa() argument
389 struct net_device *dev = xs->xso.real_dev; in ixgbevf_ipsec_del_sa()
397 if (xs->xso.flags & XFRM_OFFLOAD_INBOUND) { in ixgbevf_ipsec_del_sa()
398 sa_idx = xs->xso.offload_handle - IXGBE_IPSEC_BASE_RX_INDEX; in ixgbevf_ipsec_del_sa()
402 sa_idx, xs->xso.offload_handle); in ixgbevf_ipsec_del_sa()
411 sa_idx = xs->xso.offload_handle - IXGBE_IPSEC_BASE_TX_INDEX; in ixgbevf_ipsec_del_sa()
415 sa_idx, xs->xso.offload_handle); in ixgbevf_ipsec_del_sa()
430 static bool ixgbevf_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *xs) in ixgbevf_ipsec_offload_ok() argument
432 if (xs->props.family == AF_INET) { in ixgbevf_ipsec_offload_ok()
463 struct xfrm_state *xs; in ixgbevf_ipsec_tx() local
475 xs = xfrm_input_state(first->skb); in ixgbevf_ipsec_tx()
476 if (unlikely(!xs)) { in ixgbevf_ipsec_tx()
478 __func__, xs); in ixgbevf_ipsec_tx()
482 sa_idx = xs->xso.offload_handle - IXGBE_IPSEC_BASE_TX_INDEX; in ixgbevf_ipsec_tx()
485 __func__, sa_idx, xs->xso.offload_handle); in ixgbevf_ipsec_tx()
500 if (xs->id.proto == IPPROTO_ESP) { in ixgbevf_ipsec_tx()
559 struct xfrm_state *xs = NULL; in ixgbevf_ipsec_rx() local
598 xs = ixgbevf_ipsec_find_rx_state(ipsec, daddr, proto, spi, !!ip4); in ixgbevf_ipsec_rx()
599 if (unlikely(!xs)) in ixgbevf_ipsec_rx()
606 sp->xvec[sp->len++] = xs; in ixgbevf_ipsec_rx()