diff options
Diffstat (limited to 'drivers/infiniband/hw/nes')
| -rw-r--r-- | drivers/infiniband/hw/nes/nes.c | 4 | ||||
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_cm.c | 16 | ||||
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_hw.c | 5 | ||||
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_hw.h | 1 | ||||
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_nic.c | 59 | ||||
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_verbs.c | 2 | 
6 files changed, 21 insertions, 66 deletions
| diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c index 13de1192927c..2d668c69f6d9 100644 --- a/drivers/infiniband/hw/nes/nes.c +++ b/drivers/infiniband/hw/nes/nes.c @@ -1138,7 +1138,9 @@ static ssize_t nes_store_wqm_quanta(struct device_driver *ddp,  	u32 i = 0;  	struct nes_device *nesdev; -	strict_strtoul(buf, 0, &wqm_quanta_value); +	if (kstrtoul(buf, 0, &wqm_quanta_value) < 0) +		return -EINVAL; +  	list_for_each_entry(nesdev, &nes_dev_list, list) {  		if (i == ee_flsh_adapter) {  			nesdev->nesadapter->wqm_quanta = wqm_quanta_value; diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c index 33c7eedaba6c..e74cdf9ef471 100644 --- a/drivers/infiniband/hw/nes/nes_cm.c +++ b/drivers/infiniband/hw/nes/nes_cm.c @@ -2563,7 +2563,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)  	u16 last_ae;  	u8 original_hw_tcp_state;  	u8 original_ibqp_state; -	enum iw_cm_event_status disconn_status = IW_CM_EVENT_STATUS_OK; +	int disconn_status = 0;  	int issue_disconn = 0;  	int issue_close = 0;  	int issue_flush = 0; @@ -2605,7 +2605,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)  			(last_ae == NES_AEQE_AEID_LLP_CONNECTION_RESET))) {  		issue_disconn = 1;  		if (last_ae == NES_AEQE_AEID_LLP_CONNECTION_RESET) -			disconn_status = IW_CM_EVENT_STATUS_RESET; +			disconn_status = -ECONNRESET;  	}  	if (((original_hw_tcp_state == NES_AEQE_TCP_STATE_CLOSED) || @@ -2666,7 +2666,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)  			cm_id->provider_data = nesqp;  			/* Send up the close complete event */  			cm_event.event = IW_CM_EVENT_CLOSE; -			cm_event.status = IW_CM_EVENT_STATUS_OK; +			cm_event.status = 0;  			cm_event.provider_data = cm_id->provider_data;  			cm_event.local_addr = cm_id->local_addr;  			cm_event.remote_addr = cm_id->remote_addr; @@ -2966,7 +2966,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)  	nes_add_ref(&nesqp->ibqp);  	cm_event.event = IW_CM_EVENT_ESTABLISHED; -	cm_event.status = IW_CM_EVENT_STATUS_ACCEPTED; +	cm_event.status = 0;  	cm_event.provider_data = (void *)nesqp;  	cm_event.local_addr = cm_id->local_addr;  	cm_event.remote_addr = cm_id->remote_addr; @@ -3377,7 +3377,7 @@ static void cm_event_connected(struct nes_cm_event *event)  	/* notify OF layer we successfully created the requested connection */  	cm_event.event = IW_CM_EVENT_CONNECT_REPLY; -	cm_event.status = IW_CM_EVENT_STATUS_ACCEPTED; +	cm_event.status = 0;  	cm_event.provider_data = cm_id->provider_data;  	cm_event.local_addr.sin_family = AF_INET;  	cm_event.local_addr.sin_port = cm_id->local_addr.sin_port; @@ -3484,7 +3484,7 @@ static void cm_event_reset(struct nes_cm_event *event)  	nesqp->cm_id = NULL;  	/* cm_id->provider_data = NULL; */  	cm_event.event = IW_CM_EVENT_DISCONNECT; -	cm_event.status = IW_CM_EVENT_STATUS_RESET; +	cm_event.status = -ECONNRESET;  	cm_event.provider_data = cm_id->provider_data;  	cm_event.local_addr = cm_id->local_addr;  	cm_event.remote_addr = cm_id->remote_addr; @@ -3495,7 +3495,7 @@ static void cm_event_reset(struct nes_cm_event *event)  	ret = cm_id->event_handler(cm_id, &cm_event);  	atomic_inc(&cm_closes);  	cm_event.event = IW_CM_EVENT_CLOSE; -	cm_event.status = IW_CM_EVENT_STATUS_OK; +	cm_event.status = 0;  	cm_event.provider_data = cm_id->provider_data;  	cm_event.local_addr = cm_id->local_addr;  	cm_event.remote_addr = cm_id->remote_addr; @@ -3534,7 +3534,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)  			cm_node, cm_id, jiffies);  	cm_event.event = IW_CM_EVENT_CONNECT_REQUEST; -	cm_event.status = IW_CM_EVENT_STATUS_OK; +	cm_event.status = 0;  	cm_event.provider_data = (void *)cm_node;  	cm_event.local_addr.sin_family = AF_INET; diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c index 10d0a5ec9add..96fa9a4cafdf 100644 --- a/drivers/infiniband/hw/nes/nes_hw.c +++ b/drivers/infiniband/hw/nes/nes_hw.c @@ -2885,9 +2885,8 @@ void nes_nic_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq)  					if ((cqe_errv &  							(NES_NIC_ERRV_BITS_IPV4_CSUM_ERR | NES_NIC_ERRV_BITS_TCPUDP_CSUM_ERR |  							NES_NIC_ERRV_BITS_IPH_ERR | NES_NIC_ERRV_BITS_WQE_OVERRUN)) == 0) { -						if (nesvnic->rx_checksum_disabled == 0) { +						if (nesvnic->netdev->features & NETIF_F_RXCSUM)  							rx_skb->ip_summed = CHECKSUM_UNNECESSARY; -						}  					} else  						nes_debug(NES_DBG_CQ, "%s: unsuccessfully checksummed TCP or UDP packet."  								" errv = 0x%X, pkt_type = 0x%X.\n", @@ -2897,7 +2896,7 @@ void nes_nic_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq)  					if ((cqe_errv &  							(NES_NIC_ERRV_BITS_IPV4_CSUM_ERR | NES_NIC_ERRV_BITS_IPH_ERR |  							NES_NIC_ERRV_BITS_WQE_OVERRUN)) == 0) { -						if (nesvnic->rx_checksum_disabled == 0) { +						if (nesvnic->netdev->features & NETIF_F_RXCSUM) {  							rx_skb->ip_summed = CHECKSUM_UNNECESSARY;  							/* nes_debug(NES_DBG_CQ, "%s: Reporting successfully checksummed IPv4 packet.\n",  								  nesvnic->netdev->name); */ diff --git a/drivers/infiniband/hw/nes/nes_hw.h b/drivers/infiniband/hw/nes/nes_hw.h index d2abe07133a5..91594116f947 100644 --- a/drivers/infiniband/hw/nes/nes_hw.h +++ b/drivers/infiniband/hw/nes/nes_hw.h @@ -1245,7 +1245,6 @@ struct nes_vnic {  	u8  next_qp_nic_index;  	u8  of_device_registered;  	u8  rdma_enabled; -	u8  rx_checksum_disabled;  	u32 lro_max_aggr;  	struct net_lro_mgr lro_mgr;  	struct net_lro_desc lro_desc[NES_MAX_LRO_DESCRIPTORS]; diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c index e96b8fb5d44c..d3a1c41cfd27 100644 --- a/drivers/infiniband/hw/nes/nes_nic.c +++ b/drivers/infiniband/hw/nes/nes_nic.c @@ -1093,34 +1093,6 @@ static const char nes_ethtool_stringset[][ETH_GSTRING_LEN] = {  };  #define NES_ETHTOOL_STAT_COUNT  ARRAY_SIZE(nes_ethtool_stringset) -/** - * nes_netdev_get_rx_csum - */ -static u32 nes_netdev_get_rx_csum (struct net_device *netdev) -{ -	struct nes_vnic *nesvnic = netdev_priv(netdev); - -	if (nesvnic->rx_checksum_disabled) -		return 0; -	else -		return 1; -} - - -/** - * nes_netdev_set_rc_csum - */ -static int nes_netdev_set_rx_csum(struct net_device *netdev, u32 enable) -{ -	struct nes_vnic *nesvnic = netdev_priv(netdev); - -	if (enable) -		nesvnic->rx_checksum_disabled = 0; -	else -		nesvnic->rx_checksum_disabled = 1; -	return 0; -} -  /**   * nes_netdev_get_sset_count @@ -1521,7 +1493,7 @@ static int nes_netdev_get_settings(struct net_device *netdev, struct ethtool_cmd  	et_cmd->maxrxpkt = 511;  	if (nesadapter->OneG_Mode) { -		et_cmd->speed = SPEED_1000; +		ethtool_cmd_speed_set(et_cmd, SPEED_1000);  		if (phy_type == NES_PHY_TYPE_PUMA_1G) {  			et_cmd->supported   = SUPPORTED_1000baseT_Full;  			et_cmd->advertising = ADVERTISED_1000baseT_Full; @@ -1560,7 +1532,7 @@ static int nes_netdev_get_settings(struct net_device *netdev, struct ethtool_cmd  		et_cmd->advertising = ADVERTISED_10000baseT_Full;  		et_cmd->phy_address = mac_index;  	} -	et_cmd->speed = SPEED_10000; +	ethtool_cmd_speed_set(et_cmd, SPEED_10000);  	et_cmd->autoneg = AUTONEG_DISABLE;  	return 0;  } @@ -1598,19 +1570,10 @@ static int nes_netdev_set_settings(struct net_device *netdev, struct ethtool_cmd  } -static int nes_netdev_set_flags(struct net_device *netdev, u32 flags) -{ -	return ethtool_op_set_flags(netdev, flags, ETH_FLAG_LRO); -} - -  static const struct ethtool_ops nes_ethtool_ops = {  	.get_link = ethtool_op_get_link,  	.get_settings = nes_netdev_get_settings,  	.set_settings = nes_netdev_set_settings, -	.get_tx_csum = ethtool_op_get_tx_csum, -	.get_rx_csum = nes_netdev_get_rx_csum, -	.get_sg = ethtool_op_get_sg,  	.get_strings = nes_netdev_get_strings,  	.get_sset_count = nes_netdev_get_sset_count,  	.get_ethtool_stats = nes_netdev_get_ethtool_stats, @@ -1619,13 +1582,6 @@ static const struct ethtool_ops nes_ethtool_ops = {  	.set_coalesce = nes_netdev_set_coalesce,  	.get_pauseparam = nes_netdev_get_pauseparam,  	.set_pauseparam = nes_netdev_set_pauseparam, -	.set_tx_csum = ethtool_op_set_tx_csum, -	.set_rx_csum = nes_netdev_set_rx_csum, -	.set_sg = ethtool_op_set_sg, -	.get_tso = ethtool_op_get_tso, -	.set_tso = ethtool_op_set_tso, -	.get_flags = ethtool_op_get_flags, -	.set_flags = nes_netdev_set_flags,  }; @@ -1727,12 +1683,11 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,  	netdev->dev_addr[5] = (u8)u64temp;  	memcpy(netdev->perm_addr, netdev->dev_addr, 6); -	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) { -		netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM; -		netdev->features |= NETIF_F_GSO | NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM; -	} else { -		netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM; -	} +	netdev->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM; +	if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) +		netdev->hw_features |= NETIF_F_TSO; +	netdev->features |= netdev->hw_features; +	netdev->hw_features |= NETIF_F_LRO;  	nes_debug(NES_DBG_INIT, "nesvnic = %p, reported features = 0x%lX, QPid = %d,"  			" nic_index = %d, logical_port = %d, mac_index = %d.\n", diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c index 26d8018c0a7c..95ca93ceedac 100644 --- a/drivers/infiniband/hw/nes/nes_verbs.c +++ b/drivers/infiniband/hw/nes/nes_verbs.c @@ -1484,7 +1484,7 @@ static int nes_destroy_qp(struct ib_qp *ibqp)  			(nesqp->ibqp_state == IB_QPS_RTR)) && (nesqp->cm_id)) {  		cm_id = nesqp->cm_id;  		cm_event.event = IW_CM_EVENT_CONNECT_REPLY; -		cm_event.status = IW_CM_EVENT_STATUS_TIMEOUT; +		cm_event.status = -ETIMEDOUT;  		cm_event.local_addr = cm_id->local_addr;  		cm_event.remote_addr = cm_id->remote_addr;  		cm_event.private_data = NULL; |