mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 14:04:54 +02:00
ch_ktls: tcb close causes tls connection failure
commit21d8c25e3fupstream. HW doesn't need marking TCB closed. This TCB state change sometimes causes problem to the new connection which gets the same tid. Fixes:34aba2c450("cxgb4/chcr : Register to tls add and del callback") Signed-off-by: Vinay Kumar Yadav <vinay.yadav@chelsio.com> Signed-off-by: Rohit Maheshwari <rohitm@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5f3c278035
commit
65bdd564b3
|
|
@ -354,18 +354,6 @@ static int chcr_set_tcb_field(struct chcr_ktls_info *tx_info, u16 word,
|
||||||
return cxgb4_ofld_send(tx_info->netdev, skb);
|
return cxgb4_ofld_send(tx_info->netdev, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* chcr_ktls_mark_tcb_close: mark tcb state to CLOSE
|
|
||||||
* @tx_info - driver specific tls info.
|
|
||||||
* return: NET_TX_OK/NET_XMIT_DROP.
|
|
||||||
*/
|
|
||||||
static int chcr_ktls_mark_tcb_close(struct chcr_ktls_info *tx_info)
|
|
||||||
{
|
|
||||||
return chcr_set_tcb_field(tx_info, TCB_T_STATE_W,
|
|
||||||
TCB_T_STATE_V(TCB_T_STATE_M),
|
|
||||||
CHCR_TCB_STATE_CLOSED, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* chcr_ktls_dev_del: call back for tls_dev_del.
|
* chcr_ktls_dev_del: call back for tls_dev_del.
|
||||||
* Remove the tid and l2t entry and close the connection.
|
* Remove the tid and l2t entry and close the connection.
|
||||||
|
|
@ -400,8 +388,6 @@ static void chcr_ktls_dev_del(struct net_device *netdev,
|
||||||
|
|
||||||
/* clear tid */
|
/* clear tid */
|
||||||
if (tx_info->tid != -1) {
|
if (tx_info->tid != -1) {
|
||||||
/* clear tcb state and then release tid */
|
|
||||||
chcr_ktls_mark_tcb_close(tx_info);
|
|
||||||
cxgb4_remove_tid(&tx_info->adap->tids, tx_info->tx_chan,
|
cxgb4_remove_tid(&tx_info->adap->tids, tx_info->tx_chan,
|
||||||
tx_info->tid, tx_info->ip_family);
|
tx_info->tid, tx_info->ip_family);
|
||||||
}
|
}
|
||||||
|
|
@ -579,7 +565,6 @@ static int chcr_ktls_dev_add(struct net_device *netdev, struct sock *sk,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
free_tid:
|
free_tid:
|
||||||
chcr_ktls_mark_tcb_close(tx_info);
|
|
||||||
#if IS_ENABLED(CONFIG_IPV6)
|
#if IS_ENABLED(CONFIG_IPV6)
|
||||||
/* clear clip entry */
|
/* clear clip entry */
|
||||||
if (tx_info->ip_family == AF_INET6)
|
if (tx_info->ip_family == AF_INET6)
|
||||||
|
|
@ -677,10 +662,6 @@ static int chcr_ktls_cpl_act_open_rpl(struct adapter *adap,
|
||||||
if (tx_info->pending_close) {
|
if (tx_info->pending_close) {
|
||||||
spin_unlock(&tx_info->lock);
|
spin_unlock(&tx_info->lock);
|
||||||
if (!status) {
|
if (!status) {
|
||||||
/* it's a late success, tcb status is establised,
|
|
||||||
* mark it close.
|
|
||||||
*/
|
|
||||||
chcr_ktls_mark_tcb_close(tx_info);
|
|
||||||
cxgb4_remove_tid(&tx_info->adap->tids, tx_info->tx_chan,
|
cxgb4_remove_tid(&tx_info->adap->tids, tx_info->tx_chan,
|
||||||
tid, tx_info->ip_family);
|
tid, tx_info->ip_family);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user