mirror of https://gitee.com/openkylin/linux.git
ice: Offload SCTP checksum
This patch adds the ability to offload SCTP checksum calculations to the NIC. Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
a8939784a1
commit
cf909e19ac
|
@ -26,6 +26,7 @@
|
||||||
#include <linux/bitmap.h>
|
#include <linux/bitmap.h>
|
||||||
#include <linux/log2.h>
|
#include <linux/log2.h>
|
||||||
#include <linux/ip.h>
|
#include <linux/ip.h>
|
||||||
|
#include <linux/sctp.h>
|
||||||
#include <linux/ipv6.h>
|
#include <linux/ipv6.h>
|
||||||
#include <linux/if_bridge.h>
|
#include <linux/if_bridge.h>
|
||||||
#include <linux/avf/virtchnl.h>
|
#include <linux/avf/virtchnl.h>
|
||||||
|
|
|
@ -346,6 +346,7 @@ enum ice_tx_desc_cmd_bits {
|
||||||
ICE_TX_DESC_CMD_IIPT_IPV4 = 0x0040, /* 2 BITS */
|
ICE_TX_DESC_CMD_IIPT_IPV4 = 0x0040, /* 2 BITS */
|
||||||
ICE_TX_DESC_CMD_IIPT_IPV4_CSUM = 0x0060, /* 2 BITS */
|
ICE_TX_DESC_CMD_IIPT_IPV4_CSUM = 0x0060, /* 2 BITS */
|
||||||
ICE_TX_DESC_CMD_L4T_EOFT_TCP = 0x0100, /* 2 BITS */
|
ICE_TX_DESC_CMD_L4T_EOFT_TCP = 0x0100, /* 2 BITS */
|
||||||
|
ICE_TX_DESC_CMD_L4T_EOFT_SCTP = 0x0200, /* 2 BITS */
|
||||||
ICE_TX_DESC_CMD_L4T_EOFT_UDP = 0x0300, /* 2 BITS */
|
ICE_TX_DESC_CMD_L4T_EOFT_UDP = 0x0300, /* 2 BITS */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1528,6 +1528,7 @@ static int ice_cfg_netdev(struct ice_vsi *vsi)
|
||||||
|
|
||||||
csumo_features = NETIF_F_RXCSUM |
|
csumo_features = NETIF_F_RXCSUM |
|
||||||
NETIF_F_IP_CSUM |
|
NETIF_F_IP_CSUM |
|
||||||
|
NETIF_F_SCTP_CRC |
|
||||||
NETIF_F_IPV6_CSUM;
|
NETIF_F_IPV6_CSUM;
|
||||||
|
|
||||||
vlano_features = NETIF_F_HW_VLAN_CTAG_FILTER |
|
vlano_features = NETIF_F_HW_VLAN_CTAG_FILTER |
|
||||||
|
|
|
@ -1465,6 +1465,12 @@ int ice_tx_csum(struct ice_tx_buf *first, struct ice_tx_offload_params *off)
|
||||||
offset |= l4_len << ICE_TX_DESC_LEN_L4_LEN_S;
|
offset |= l4_len << ICE_TX_DESC_LEN_L4_LEN_S;
|
||||||
break;
|
break;
|
||||||
case IPPROTO_SCTP:
|
case IPPROTO_SCTP:
|
||||||
|
/* enable SCTP checksum offload */
|
||||||
|
cmd |= ICE_TX_DESC_CMD_L4T_EOFT_SCTP;
|
||||||
|
l4_len = sizeof(struct sctphdr) >> 2;
|
||||||
|
offset |= l4_len << ICE_TX_DESC_LEN_L4_LEN_S;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (first->tx_flags & ICE_TX_FLAGS_TSO)
|
if (first->tx_flags & ICE_TX_FLAGS_TSO)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue