forked from mirrors/linux
		
	sock: permit SO_ZEROCOPY on PF_RDS socket
allow the application to set SO_ZEROCOPY on the underlying sk of a PF_RDS socket Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com> Acked-by: Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									ea8994cb01
								
							
						
					
					
						commit
						28190752c7
					
				
					 1 changed files with 14 additions and 11 deletions
				
			
		|  | @ -1049,18 +1049,21 @@ int sock_setsockopt(struct socket *sock, int level, int optname, | |||
| 		break; | ||||
| 
 | ||||
| 	case SO_ZEROCOPY: | ||||
| 		if (sk->sk_family != PF_INET && sk->sk_family != PF_INET6) | ||||
| 			ret = -ENOTSUPP; | ||||
| 		else if (sk->sk_protocol != IPPROTO_TCP) | ||||
| 		if (sk->sk_family == PF_INET || sk->sk_family == PF_INET6) { | ||||
| 			if (sk->sk_protocol != IPPROTO_TCP) | ||||
| 				ret = -ENOTSUPP; | ||||
| 			else if (sk->sk_state != TCP_CLOSE) | ||||
| 				ret = -EBUSY; | ||||
| 		else if (val < 0 || val > 1) | ||||
| 		} else if (sk->sk_family != PF_RDS) { | ||||
| 			ret = -ENOTSUPP; | ||||
| 		} | ||||
| 		if (!ret) { | ||||
| 			if (val < 0 || val > 1) | ||||
| 				ret = -EINVAL; | ||||
| 			else | ||||
| 				sock_valbool_flag(sk, SOCK_ZEROCOPY, valbool); | ||||
| 			break; | ||||
| 
 | ||||
| 		} | ||||
| 	default: | ||||
| 		ret = -ENOPROTOOPT; | ||||
| 		break; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Sowmini Varadhan
						Sowmini Varadhan