mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 18:20:25 +02:00 
			
		
		
		
	net: macsec: Expose extended packet number (EPN) properties to macsec offload
Currently macsec invokes HW offload path before reading extended packet number (EPN) related user properties i.e. salt and short secure channel identifier (ssci), hence preventing macsec EPN HW offload. Expose those by moving macsec EPN properties reading prior to HW offload path. Signed-off-by: Emeel Hakim <ehakim@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
		
							parent
							
								
									bcff1a37ba
								
							
						
					
					
						commit
						0a6e9b718d
					
				
					 1 changed files with 12 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -1828,6 +1828,12 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info)
 | 
			
		|||
 | 
			
		||||
	rx_sa->sc = rx_sc;
 | 
			
		||||
 | 
			
		||||
	if (secy->xpn) {
 | 
			
		||||
		rx_sa->ssci = nla_get_ssci(tb_sa[MACSEC_SA_ATTR_SSCI]);
 | 
			
		||||
		nla_memcpy(rx_sa->key.salt.bytes, tb_sa[MACSEC_SA_ATTR_SALT],
 | 
			
		||||
			   MACSEC_SALT_LEN);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* If h/w offloading is available, propagate to the device */
 | 
			
		||||
	if (macsec_is_offloaded(netdev_priv(dev))) {
 | 
			
		||||
		const struct macsec_ops *ops;
 | 
			
		||||
| 
						 | 
				
			
			@ -1850,12 +1856,6 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info)
 | 
			
		|||
			goto cleanup;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (secy->xpn) {
 | 
			
		||||
		rx_sa->ssci = nla_get_ssci(tb_sa[MACSEC_SA_ATTR_SSCI]);
 | 
			
		||||
		nla_memcpy(rx_sa->key.salt.bytes, tb_sa[MACSEC_SA_ATTR_SALT],
 | 
			
		||||
			   MACSEC_SALT_LEN);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	nla_memcpy(rx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEYID], MACSEC_KEYID_LEN);
 | 
			
		||||
	rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2070,6 +2070,12 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info)
 | 
			
		|||
	if (assoc_num == tx_sc->encoding_sa && tx_sa->active)
 | 
			
		||||
		secy->operational = true;
 | 
			
		||||
 | 
			
		||||
	if (secy->xpn) {
 | 
			
		||||
		tx_sa->ssci = nla_get_ssci(tb_sa[MACSEC_SA_ATTR_SSCI]);
 | 
			
		||||
		nla_memcpy(tx_sa->key.salt.bytes, tb_sa[MACSEC_SA_ATTR_SALT],
 | 
			
		||||
			   MACSEC_SALT_LEN);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* If h/w offloading is available, propagate to the device */
 | 
			
		||||
	if (macsec_is_offloaded(netdev_priv(dev))) {
 | 
			
		||||
		const struct macsec_ops *ops;
 | 
			
		||||
| 
						 | 
				
			
			@ -2092,12 +2098,6 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info)
 | 
			
		|||
			goto cleanup;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (secy->xpn) {
 | 
			
		||||
		tx_sa->ssci = nla_get_ssci(tb_sa[MACSEC_SA_ATTR_SSCI]);
 | 
			
		||||
		nla_memcpy(tx_sa->key.salt.bytes, tb_sa[MACSEC_SA_ATTR_SALT],
 | 
			
		||||
			   MACSEC_SALT_LEN);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	nla_memcpy(tx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEYID], MACSEC_KEYID_LEN);
 | 
			
		||||
	rcu_assign_pointer(tx_sc->sa[assoc_num], tx_sa);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue