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