Re: [PATCH net-next 1/2] cxgb4: Add support for Inline IPSec Tx

2017-10-28 Thread kbuild test robot
Hi Atul,

Thank you for the patch! Yet we hit a small issue.
[auto build test ERROR on net-next/master]

url:
https://github.com/0day-ci/linux/commits/Atul-Gupta/cxgb4-Add-support-for-Inline-IPSec-Tx/20171029-060344
config: x86_64-kexec (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers/net//ethernet/chelsio/cxgb4/sge.c: In function 't4_eth_xmit':
>> drivers/net//ethernet/chelsio/cxgb4/sge.c:1198:6: error: implicit 
>> declaration of function 'xfrm_offload' 
>> [-Werror=implicit-function-declaration]
 if (xfrm_offload(skb) && !ssi->gso_size)
 ^~~~
   cc1: some warnings being treated as errors

vim +/xfrm_offload +1198 drivers/net//ethernet/chelsio/cxgb4/sge.c

  1177  
  1178  /*
  1179   * The chip min packet length is 10 octets but play safe and 
reject
  1180   * anything shorter than an Ethernet header.
  1181   */
  1182  if (unlikely(skb->len < ETH_HLEN)) {
  1183  out_free:   dev_kfree_skb_any(skb);
  1184  return NETDEV_TX_OK;
  1185  }
  1186  
  1187  /* Discard the packet if the length is greater than mtu */
  1188  max_pkt_len = ETH_HLEN + dev->mtu;
  1189  if (skb_vlan_tagged(skb))
  1190  max_pkt_len += VLAN_HLEN;
  1191  if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > 
max_pkt_len)))
  1192  goto out_free;
  1193  
  1194  pi = netdev_priv(dev);
  1195  adap = pi->adapter;
  1196  ssi = skb_shinfo(skb);
  1197  
> 1198  if (xfrm_offload(skb) && !ssi->gso_size)
  1199  return adap->uld[CXGB4_ULD_CRYPTO].tx_handler(skb, dev);
  1200  
  1201  qidx = skb_get_queue_mapping(skb);
  1202  if (ptp_enabled) {
  1203  spin_lock(>ptp_lock);
  1204  if (!(adap->ptp_tx_skb)) {
  1205  skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
  1206  adap->ptp_tx_skb = skb_get(skb);
  1207  } else {
  1208  spin_unlock(>ptp_lock);
  1209  goto out_free;
  1210  }
  1211  q = >sge.ptptxq;
  1212  } else {
  1213  q = >sge.ethtxq[qidx + pi->first_qset];
  1214  }
  1215  skb_tx_timestamp(skb);
  1216  
  1217  cxgb4_reclaim_completed_tx(adap, >q, true);
  1218  cntrl = TXPKT_L4CSUM_DIS_F | TXPKT_IPCSUM_DIS_F;
  1219  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip


[PATCH net-next 1/2] cxgb4: Add support for Inline IPSec Tx

2017-10-27 Thread Atul Gupta
Added Tx routine for ULD
- define interface for ULD Tx.

Export routines used for Tx data
- Routines common for data transmit are used by cxgb4 and chcr
  drivers.
- EXPORT routines enable transmit from chcr driver.

Signed-off-by: Atul Gupta 
Signed-off-by: Ganesh Goudar 
---
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h |  23 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c |   2 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c|   2 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c |   1 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h |   3 +
 drivers/net/ethernet/chelsio/cxgb4/sge.c   | 101 ++---
 6 files changed, 80 insertions(+), 52 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h 
b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
index 92a0b02..ee3832a 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
@@ -58,6 +58,13 @@
 extern struct list_head adapter_list;
 extern struct mutex uld_mutex;
 
+/* Suspend an Ethernet Tx queue with fewer available descriptors than this.
+ * This is the same as calc_tx_descs() for a TSO packet with
+ * nr_frags == MAX_SKB_FRAGS.
+ */
+#define ETHTXQ_STOP_THRES \
+   (1 + DIV_ROUND_UP((3 * MAX_SKB_FRAGS) / 2 + (MAX_SKB_FRAGS & 1), 8))
+
 enum {
MAX_NPORTS  = 4, /* max # of ports */
SERNUM_LEN  = 24,/* Serial # length */
@@ -555,6 +562,7 @@ enum { /* adapter flags */
 
 enum {
ULP_CRYPTO_LOOKASIDE = 1 << 0,
+   ULP_CRYPTO_IPSEC_INLINE = 1 << 1,
 };
 
 struct rx_sw_desc;
@@ -957,6 +965,11 @@ enum {
SCHED_CLASS_RATEMODE_ABS = 1,   /* Kb/s */
 };
 
+struct tx_sw_desc {/* SW state per Tx descriptor */
+   struct sk_buff *skb;
+   struct ulptx_sgl *sgl;
+};
+
 /* Support for "sched_queue" command to allow one or more NIC TX Queues
  * to be bound to a TX Scheduling Class.
  */
@@ -1662,4 +1675,14 @@ void t4_tp_mib_read(struct adapter *adap, u32 *buff, u32 
nregs,
 void free_tx_desc(struct adapter *adap, struct sge_txq *q,
  unsigned int n, bool unmap);
 void free_txq(struct adapter *adap, struct sge_txq *q);
+inline void cxgb4_reclaim_completed_tx(struct adapter *adap,
+  struct sge_txq *q, bool unmap);
+int cxgb4_map_skb(struct device *dev, const struct sk_buff *skb,
+ dma_addr_t *addr);
+void cxgb4_inline_tx_skb(const struct sk_buff *skb, const struct sge_txq *q,
+void *pos);
+void cxgb4_write_sgl(const struct sk_buff *skb, struct sge_txq *q,
+struct ulptx_sgl *sgl, u64 *end, unsigned int start,
+const dma_addr_t *addr);
+inline void cxgb4_ring_tx_db(struct adapter *adap, struct sge_txq *q, int n);
 #endif /* __CXGB4_H__ */
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c 
b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
index 917663b..cf47183 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
@@ -3096,6 +3096,8 @@ static int chcr_show(struct seq_file *seq, void *v)
   atomic_read(>chcr_stats.error));
seq_printf(seq, "Fallback: %10u \n",
   atomic_read(>chcr_stats.fallback));
+   seq_printf(seq, "IPSec PDU: %10u\n",
+  atomic_read(>chcr_stats.ipsec_cnt));
return 0;
 }
 
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c 
b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index e16078d..538a8a7 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -4079,7 +4079,7 @@ static int adap_init0(struct adapter *adap)
} else {
adap->vres.ncrypto_fc = val[0];
}
-   adap->params.crypto |= ULP_CRYPTO_LOOKASIDE;
+   adap->params.crypto = ntohs(caps_cmd.cryptocaps);
adap->num_uld += 1;
}
 #undef FW_PARAM_PFVF
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c 
b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c
index 71a315b..6b5fea4 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c
@@ -637,6 +637,7 @@ static void uld_init(struct adapter *adap, struct 
cxgb4_lld_info *lld)
lld->nchan = adap->params.nports;
lld->nports = adap->params.nports;
lld->wr_cred = adap->params.ofldq_wr_cred;
+   lld->crypto = adap->params.crypto;
lld->iscsi_iolen = MAXRXDATA_G(t4_read_reg(adap, TP_PARA_REG2_A));
lld->iscsi_tagmask = t4_read_reg(adap, ULP_RX_ISCSI_TAGMASK_A);
lld->iscsi_pgsz_order = t4_read_reg(adap, ULP_RX_ISCSI_PSZ_A);
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h 
b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h
index