| Age | Commit message (Expand) | Author | Files | Lines |
| 2025-02-21 | rxrpc: peer->mtu_lock is redundant | David Howells | 1 | -2/+0 |
| 2025-02-05 | rxrpc: Fix race in call state changing vs recvmsg() | David Howells | 1 | -1/+9 |
| 2025-02-05 | rxrpc: Fix call state set to not include the SERVER_SECURING state | David Howells | 1 | -1/+1 |
| 2024-12-09 | rxrpc: Implement RACK/TLP to deal with transmission stalls [RFC8985] | David Howells | 1 | -39/+78 |
| 2024-12-09 | rxrpc: Manage RTT per-call rather than per-peer | David Howells | 1 | -5/+5 |
| 2024-12-09 | rxrpc: Tidy up the ACK parsing a bit | David Howells | 1 | -29/+26 |
| 2024-12-09 | rxrpc: Use irq-disabling spinlocks between app and I/O thread | David Howells | 1 | -4/+1 |
| 2024-12-09 | rxrpc: Send jumbo DATA packets | David Howells | 1 | -0/+3 |
| 2024-12-09 | rxrpc: Adjust the rxrpc_rtt_rx tracepoint | David Howells | 1 | -2/+2 |
| 2024-12-09 | rxrpc: Don't use received skbuff timestamps | David Howells | 1 | -9/+10 |
| 2024-12-09 | rxrpc: Store the DATA serial in the txqueue and use this in RTT calc | David Howells | 1 | -33/+61 |
| 2024-12-09 | rxrpc: Use the new rxrpc_tx_queue struct to more efficiently process ACKs | David Howells | 1 | -91/+161 |
| 2024-12-09 | rxrpc: Adjust names and types of congestion-related fields | David Howells | 1 | -81/+70 |
| 2024-12-09 | rxrpc: Display stats about jumbo packets transmitted and received | David Howells | 1 | -1/+5 |
| 2024-12-09 | rxrpc: Replace call->acks_first_seq with tracking of the hard ACK point | David Howells | 1 | -30/+26 |
| 2024-12-09 | rxrpc: call->acks_hard_ack is now the same call->tx_bottom, so remove it | David Howells | 1 | -9/+8 |
| 2024-12-09 | rxrpc: Implement progressive transmission queue struct | David Howells | 1 | -15/+57 |
| 2024-12-09 | rxrpc: Fix CPU time starvation in I/O thread | David Howells | 1 | -1/+1 |
| 2024-12-09 | rxrpc: Prepare to be able to send jumbo DATA packets | David Howells | 1 | -14/+22 |
| 2024-12-09 | rxrpc: Implement path-MTU probing using padded PING ACKs (RFC8899) | David Howells | 1 | -9/+17 |
| 2024-12-09 | rxrpc: Use umin() and umax() rather than min_t()/max_t() where possible | David Howells | 1 | -8/+5 |
| 2024-05-08 | rxrpc: Only transmit one ACK per jumbo packet received | David Howells | 1 | -11/+35 |
| 2024-05-08 | rxrpc: Fix congestion control algorithm | David Howells | 1 | -3/+0 |
| 2024-03-05 | rxrpc: Extract useful fields from a received ACK to skb priv data | David Howells | 1 | -34/+27 |
| 2024-03-05 | rxrpc: Use ktimes for call timeout tracking and set the timer lazily | David Howells | 1 | -15/+13 |
| 2024-02-29 | rxrpc: Strip barriers and atomics off of timer tracking | David Howells | 1 | -9/+6 |
| 2024-02-29 | rxrpc: Fix the names of the fields in the ACK trailer struct | David Howells | 1 | -11/+11 |
| 2024-02-29 | rxrpc: Convert rxrpc_txbuf::flags into a mask and don't use atomics | David Howells | 1 | -1/+1 |
| 2024-02-05 | rxrpc: Fix counting of new acks and nacks | David Howells | 1 | -18/+97 |
| 2023-11-17 | rxrpc: Defer the response to a PING ACK until we've parsed it | David Howells | 1 | -13/+13 |
| 2023-11-17 | rxrpc: Fix RTT determination to use any ACK as a source | David Howells | 1 | -19/+16 |
| 2023-02-20 | rxrpc: Fix overproduction of wakeups to recvmsg() | David Howells | 1 | -1/+1 |
| 2023-01-31 | rxrpc: Simplify ACK handling | David Howells | 1 | -23/+23 |
| 2023-01-31 | rxrpc: De-atomic call->ackr_window and call->ackr_nr_unacked | David Howells | 1 | -7/+7 |
| 2023-01-06 | rxrpc: Remove call->state_lock | David Howells | 1 | -55/+41 |
| 2023-01-06 | rxrpc: Move call state changes from recvmsg to I/O thread | David Howells | 1 | -1/+37 |
| 2023-01-06 | rxrpc: Tidy up abort generation infrastructure | David Howells | 1 | -35/+30 |
| 2023-01-06 | rxrpc: Only disconnect calls in the I/O thread | David Howells | 1 | -6/+0 |
| 2023-01-06 | rxrpc: Only set/transmit aborts in the I/O thread | David Howells | 1 | -4/+2 |
| 2022-12-01 | rxrpc: Move the cwnd degradation after transmitting packets | David Howells | 1 | -22/+27 |
| 2022-12-01 | rxrpc: Trace/count transmission underflows and cwnd resets | David Howells | 1 | -2/+5 |
| 2022-12-01 | rxrpc: Remove the _bh annotation from all the spinlocks | David Howells | 1 | -2/+2 |
| 2022-12-01 | rxrpc: Make the I/O thread take over the call and local processor work | David Howells | 1 | -125/+42 |
| 2022-12-01 | rxrpc: Reduce the use of RCU in packet input | David Howells | 1 | -4/+3 |
| 2022-12-01 | rxrpc: Simplify skbuff accounting in receive path | David Howells | 1 | -23/+22 |
| 2022-12-01 | rxrpc: Implement a mechanism to send an event notification to a call | David Howells | 1 | -2/+1 |
| 2022-12-01 | rxrpc: Remove call->input_lock | David Howells | 1 | -17/+5 |
| 2022-12-01 | rxrpc: Split the receive code | David Howells | 1 | -366/+6 |
| 2022-12-01 | rxrpc: trace: Don't use __builtin_return_address for sk_buff tracing | David Howells | 1 | -18/+18 |
| 2022-12-01 | rxrpc: trace: Don't use __builtin_return_address for rxrpc_call tracing | David Howells | 1 | -4/+4 |
| 2022-12-01 | rxrpc: trace: Don't use __builtin_return_address for rxrpc_conn tracing | David Howells | 1 | -1/+1 |
| 2022-12-01 | rxrpc: trace: Don't use __builtin_return_address for rxrpc_local tracing | David Howells | 1 | -2/+2 |
| 2022-12-01 | rxrpc: Extract the code from a received ABORT packet much earlier | David Howells | 1 | -12/+19 |
| 2022-12-01 | rxrpc: Drop rxrpc_conn_parameters from rxrpc_connection and rxrpc_bundle | David Howells | 1 | -2/+2 |
| 2022-12-01 | rxrpc: Remove the [_k]net() debugging macros | David Howells | 1 | -1/+0 |
| 2022-12-01 | rxrpc: Remove the [k_]proto() debugging macros | David Howells | 1 | -17/+0 |
| 2022-11-08 | rxrpc: Fix congestion management | David Howells | 1 | -1/+20 |
| 2022-11-08 | rxrpc: Save last ACK's SACK table rather than marking txbufs | David Howells | 1 | -88/+76 |
| 2022-11-08 | rxrpc: Remove call->lock | David Howells | 1 | -3/+0 |
| 2022-11-08 | rxrpc: Don't use a ring buffer for call Tx queue | David Howells | 1 | -84/+61 |
| 2022-11-08 | rxrpc: Get rid of the Rx ring | David Howells | 1 | -82/+131 |
| 2022-11-08 | rxrpc: Clone received jumbo subpackets and queue separately | David Howells | 1 | -216/+185 |
| 2022-11-08 | rxrpc: Clean up ACK handling | David Howells | 1 | -4/+4 |
| 2022-11-08 | rxrpc: Allocate ACK records at proposal and queue for transmission | David Howells | 1 | -51/+38 |
| 2022-11-08 | rxrpc: Remove call->tx_phase | David Howells | 1 | -4/+1 |
| 2022-11-08 | rxrpc: Remove unnecessary header inclusions | David Howells | 1 | -14/+0 |
| 2022-11-08 | rxrpc: Record statistics about ACK types | David Howells | 1 | -0/+1 |
| 2022-11-08 | rxrpc: Add stats procfile and DATA packet stats | David Howells | 1 | -0/+6 |
| 2022-11-08 | rxrpc: Track highest acked serial | David Howells | 1 | -0/+4 |
| 2022-05-23 | Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net | Jakub Kicinski | 1 | -11/+20 |
| 2022-05-22 | rxrpc: Fix decision on when to generate an IDLE ACK | David Howells | 1 | -2/+9 |
| 2022-05-22 | rxrpc: Don't let ack.previousPacket regress | David Howells | 1 | -1/+3 |
| 2022-05-22 | rxrpc: Fix overlapping ACK accounting | David Howells | 1 | -8/+8 |
| 2022-05-22 | afs: Adjust ACK interpretation to try and cope with NAT | David Howells | 1 | -0/+27 |
| 2022-05-22 | rxrpc: Use refcount_t rather than atomic_t | David Howells | 1 | -3/+1 |
| 2021-01-13 | rxrpc: Call state should be read with READ_ONCE() under some circumstances | Baptiste Lepers | 1 | -1/+1 |
| 2020-09-03 | Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net | Linus Torvalds | 1 | -53/+70 |
| 2020-08-23 | treewide: Use fallthrough pseudo-keyword | Gustavo A. R. Silva | 1 | -3/+3 |
| 2020-08-20 | rxrpc: Fix loss of RTT samples due to interposed ACK | David Howells | 1 | -44/+60 |
| 2020-08-20 | rxrpc: Keep the ACK serial in a var in rxrpc_input_ack() | David Howells | 1 | -10/+11 |
| 2020-06-17 | rxrpc: Fix handling of rwind from an ACK packet | David Howells | 1 | -4/+3 |
| 2020-06-05 | rxrpc: Fix missing notification | David Howells | 1 | -5/+2 |
| 2020-05-20 | rxrpc: Fix ack discard | David Howells | 1 | -4/+26 |
| 2020-05-20 | rxrpc: Trace discarded ACKs | David Howells | 1 | -2/+10 |
| 2020-05-11 | rxrpc: Fix the excessive initial retransmission timeout | David Howells | 1 | -3/+3 |
| 2020-03-13 | afs: Fix client call Rx-phase signal handling | David Howells | 1 | -1/+0 |
| 2020-01-30 | rxrpc: Fix insufficient receive notification generation | David Howells | 1 | -4/+2 |
| 2020-01-27 | rxrpc: Fix use-after-free in rxrpc_receive_data() | David Howells | 1 | -5/+7 |
| 2019-12-20 | rxrpc: Unlock new call in rxrpc_new_incoming_call() rather than the caller | David Howells | 1 | -18/+0 |
| 2019-09-05 | rxrpc: Fix misplaced traceline | David Howells | 1 | -1/+1 |
| 2019-08-27 | rxrpc: Use skb_unshare() rather than skb_cow_data() | David Howells | 1 | -0/+18 |
| 2019-08-27 | rxrpc: Use the tx-phase skb flag to simplify tracing | David Howells | 1 | -11/+11 |
| 2019-08-27 | rxrpc: Pass the input handler's data skb reference to the Rx ring | David Howells | 1 | -5/+15 |
| 2019-08-27 | rxrpc: Use info in skbuff instead of reparsing a jumbo packet | David Howells | 1 | -117/+114 |
| 2019-08-27 | rxrpc: Improve jumbo packet counting | David Howells | 1 | -9/+14 |
| 2019-08-09 | rxrpc: Don't bother generating maxSkew in the ACK packet | David Howells | 1 | -27/+16 |
| 2019-08-09 | rxrpc: Fix local endpoint refcounting | David Howells | 1 | -4/+12 |
| 2019-05-30 | treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 | Thomas Gleixner | 1 | -5/+1 |
| 2019-04-24 | rxrpc: fix race condition in rxrpc_input_packet() | Eric Dumazet | 1 | -4/+8 |
| 2019-04-12 | rxrpc: Fix detection of out of order acks | Jeffrey Altman | 1 | -6/+12 |
| 2018-10-12 | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net | David S. Miller | 1 | -120/+131 |
| 2018-10-08 | rxrpc: Fix the packet reception routine | David Howells | 1 | -41/+79 |
| 2018-10-08 | rxrpc: Only take the rwind and mtu values from latest ACK | David Howells | 1 | -9/+10 |
| 2018-10-08 | rxrpc: Carry call state out of locked section in rxrpc_rotate_tx_window() | David Howells | 1 | -6/+8 |
| 2018-10-08 | rxrpc: Don't check RXRPC_CALL_TX_LAST after calling rxrpc_rotate_tx_window() | David Howells | 1 | -16/+19 |
| 2018-10-08 | rxrpc: Don't need to take the RCU read lock in the packet receiver | David Howells | 1 | -28/+13 |
| 2018-10-08 | rxrpc: Use the UDP encap_rcv hook | David Howells | 1 | -38/+12 |
| 2018-10-05 | rxrpc: Fix the data_ready handler | David Howells | 1 | -30/+38 |
| 2018-10-05 | rxrpc: Fix some missed refs to init_net | David Howells | 1 | -2/+2 |
| 2018-10-04 | rxrpc: Use rxrpc_free_skb() rather than rxrpc_lose_skb() | David Howells | 1 | -1/+1 |
| 2018-10-03 | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net | David S. Miller | 1 | -26/+64 |
| 2018-09-28 | rxrpc: Make service call handling more robust | David Howells | 1 | -3/+4 |
| 2018-09-28 | rxrpc: Improve up-front incoming packet checking | David Howells | 1 | -13/+50 |
| 2018-09-28 | rxrpc: Emit BUSY packets when supposed to rather than ABORTs | David Howells | 1 | -1/+1 |
| 2018-09-28 | rxrpc: Fix RTT gathering | David Howells | 1 | -2/+6 |
| 2018-09-28 | rxrpc: Fix checks as to whether we should set up a new call | David Howells | 1 | -8/+4 |
| 2018-09-10 | net: Add and use skb_mark_not_on_list(). | David S. Miller | 1 | -1/+1 |
| 2018-08-01 | rxrpc: Trace socket notification | David Howells | 1 | -1/+3 |
| 2018-08-01 | rxrpc: Trace packet transmission | David Howells | 1 | -1/+10 |
| 2018-06-04 | rxrpc: Fix handling of call quietly cancelled out on server | David Howells | 1 | -2/+8 |
| 2018-05-10 | rxrpc: Fix missing start of call timeout | David Howells | 1 | -1/+1 |
| 2018-04-04 | rxrpc: Fix undefined packet handling | David Howells | 1 | -0/+6 |
| 2018-03-30 | rxrpc: Don't treat call aborts as conn aborts | David Howells | 1 | -6/+9 |
| 2018-03-30 | rxrpc: Fix firewall route keepalive | David Howells | 1 | -0/+2 |
| 2018-03-27 | rxrpc, afs: Use debug_ids rather than pointers in traces | David Howells | 1 | -3/+3 |
| 2017-11-29 | rxrpc: Clean up whitespace | David Howells | 1 | -2/+2 |
| 2017-11-24 | rxrpc: Add a timeout for detecting lost ACKs/lost DATA | David Howells | 1 | -0/+40 |
| 2017-11-24 | rxrpc: Fix call timeouts | David Howells | 1 | -4/+30 |
| 2017-11-02 | rxrpc: Fix call expiry handling | David Howells | 1 | -2/+0 |
| 2017-10-24 | net: rxrpc: mark expected switch fall-throughs | Gustavo A. R. Silva | 1 | -0/+1 |
| 2017-06-05 | rxrpc: Add service upgrade support for client connections | David Howells | 1 | -0/+17 |
| 2017-04-06 | rxrpc: Trace changes in a call's receive window size | David Howells | 1 | -0/+2 |
| 2017-04-06 | rxrpc: Trace received aborts | David Howells | 1 | -1/+3 |
| 2017-04-06 | rxrpc: Trace protocol errors in received packets | David Howells | 1 | -1/+4 |
| 2017-04-06 | rxrpc: Use negative error codes in rxrpc_call struct | David Howells | 1 | -3/+3 |
| 2017-03-10 | rxrpc: Wake up the transmitter if Rx window size increases on the peer | David Howells | 1 | -3/+12 |
| 2017-03-07 | rxrpc: Call state should be read with READ_ONCE() under some circumstances | David Howells | 1 | -5/+7 |
| 2017-03-01 | rxrpc: Fix deadlock between call creation and sendmsg/recvmsg | David Howells | 1 | -0/+1 |
| 2017-01-05 | rxrpc: Add some more tracing | David Howells | 1 | -1/+5 |
| 2017-01-05 | rxrpc: Fix handling of enums-to-string translation in tracing | David Howells | 1 | -10/+0 |
| 2016-11-07 | udp: do fwd memory scheduling on dequeue | Paolo Abeni | 1 | -4/+3 |
| 2016-10-06 | rxrpc: Partially handle OpenAFS's improper termination of calls | David Howells | 1 | -0/+37 |
| 2016-10-06 | rxrpc: Fix loss of PING RESPONSE ACK production due to PING ACKs | David Howells | 1 | -2/+2 |
| 2016-10-06 | rxrpc: Only ping for lost reply in client call | David Howells | 1 | -1/+2 |
| 2016-09-30 | rxrpc: Keep the call timeouts as ktimes rather than jiffies | David Howells | 1 | -1/+2 |
| 2016-09-30 | rxrpc: The offset field in struct rxrpc_skb_priv is unnecessary | David Howells | 1 | -11/+12 |
| 2016-09-30 | rxrpc: Reduce ssthresh to peer's receive window | David Howells | 1 | -0/+2 |
| 2016-09-30 | rxrpc: Switch to Congestion Avoidance mode at cwnd==ssthresh | David Howells | 1 | -3/+3 |
| 2016-09-29 | rxrpc: Note serial number being ACK'd in the congestion management trace | David Howells | 1 | -4/+4 |
| 2016-09-24 | rxrpc: Implement slow-start | David Howells | 1 | -6/+163 |
| 2016-09-24 | rxrpc: Schedule an ACK if the reply to a client call appears overdue | David Howells | 1 | -0/+8 |
| 2016-09-24 | rxrpc: Generate a summary of the ACK state for later use | David Howells | 1 | -11/+34 |
| 2016-09-24 | rxrpc: Reinitialise the call ACK and timer state for client reply phase | David Howells | 1 | -0/+9 |
| 2016-09-24 | rxrpc: Send an immediate ACK if we fill in a hole | David Howells | 1 | -1/+9 |
| 2016-09-23 | rxrpc: Add tracepoint for ACK proposal | David Howells | 1 | -6/+13 |
| 2016-09-23 | rxrpc: Add a tracepoint to log injected Rx packet loss | David Howells | 1 | -6/+5 |
| 2016-09-23 | rxrpc: Pass the last Tx packet marker in the annotation buffer | David Howells | 1 | -35/+67 |
| 2016-09-23 | rxrpc: Fix accidental cancellation of scheduled resend by ACK parser | David Howells | 1 | -0/+2 |
| 2016-09-23 | rxrpc: Use before_eq() and friends to compare serial numbers | David Howells | 1 | -1/+1 |
| 2016-09-22 | rxrpc: Reduce the number of PING ACKs sent | David Howells | 1 | -2/+5 |
| 2016-09-22 | rxrpc: Obtain RTT data by requesting ACKs on DATA packets | David Howells | 1 | -0/+35 |
| 2016-09-22 | rxrpc: Send pings to get RTT data | David Howells | 1 | -1/+47 |
| 2016-09-22 | rxrpc: Add re-sent Tx annotation | David Howells | 1 | -3/+11 |
| 2016-09-17 | rxrpc: Add config to inject packet loss | David Howells | 1 | -0/+8 |
| 2016-09-17 | rxrpc: Improve skb tracing | David Howells | 1 | -6/+7 |
| 2016-09-17 | rxrpc: Add a tracepoint to follow packets in the Rx buffer | David Howells | 1 | -1/+5 |
| 2016-09-17 | rxrpc: Add a tracepoint to log received ACK packets | David Howells | 1 | -0/+2 |
| 2016-09-17 | rxrpc: Add a tracepoint to follow the life of a packet in the Tx buffer | David Howells | 1 | -0/+2 |
| 2016-09-17 | rxrpc: Fix the parsing of soft-ACKs | David Howells | 1 | -1/+1 |
| 2016-09-17 | rxrpc: Fix handling of the last packet in rxrpc_recvmsg_data() | David Howells | 1 | -1/+3 |
| 2016-09-13 | rxrpc: Correctly initialise, limit and transmit call->rx_winsize | David Howells | 1 | -7/+16 |
| 2016-09-13 | rxrpc: Allow tx_winsize to grow in response to an ACK | David Howells | 1 | -3/+5 |
| 2016-09-13 | rxrpc: Use skb->len not skb->data_len | David Howells | 1 | -4/+4 |
| 2016-09-13 | rxrpc: Add missing wakeup on Tx window rotation | David Howells | 1 | -0/+2 |
| 2016-09-08 | rxrpc: Rewrite the data and ack handling code | David Howells | 1 | -511/+533 |
| 2016-09-08 | rxrpc: Preallocate peers, conns and calls for incoming service requests | David Howells | 1 | -1/+1 |
| 2016-09-08 | rxrpc: Add tracepoints to record received packets and end of data_ready | David Howells | 1 | -2/+6 |
| 2016-09-07 | rxrpc: Add tracepoint for working out where aborts happen | David Howells | 1 | -3/+4 |
| 2016-09-07 | rxrpc: Calls shouldn't hold socket refs | David Howells | 1 | -12/+14 |
| 2016-09-07 | rxrpc: Use rxrpc_is_service_call() rather than rxrpc_conn_is_service() | David Howells | 1 | -2/+2 |
| 2016-09-07 | rxrpc: Pass the connection pointer to rxrpc_post_packet_to_call() | David Howells | 1 | -3/+4 |
| 2016-09-07 | rxrpc: Cache the security index in the rxrpc_call struct | David Howells | 1 | -1/+1 |
| 2016-09-07 | rxrpc: Improve the call tracking tracepoint | David Howells | 1 | -3/+3 |
| 2016-09-01 | rxrpc: Don't expose skbs to in-kernel users [ver #2] | David Howells | 1 | -2/+8 |
| 2016-08-30 | rxrpc: Trace rxrpc_call usage | David Howells | 1 | -2/+2 |
| 2016-08-30 | rxrpc: Calls should only have one terminal state | David Howells | 1 | -34/+34 |
| 2016-08-24 | rxrpc: Fix conn-based retransmit | David Howells | 1 | -1/+1 |
| 2016-08-23 | rxrpc: Perform terminal call ACK/ABORT retransmission from conn processor | David Howells | 1 | -2/+29 |
| 2016-08-23 | rxrpc: Calculate serial skew on packet reception | David Howells | 1 | -14/+23 |
| 2016-08-09 | rxrpc: Free packets discarded in data_ready | David Howells | 1 | -0/+2 |
| 2016-08-09 | rxrpc: Fix a use-after-push in data_ready handler | David Howells | 1 | -6/+11 |
| 2016-08-09 | rxrpc: Once packet posted in data_ready, don't retry posting | David Howells | 1 | -5/+3 |
| 2016-08-06 | rxrpc: Fix races between skb free, ACK generation and replying | David Howells | 1 | -10/+2 |
| 2016-07-06 | rxrpc: Use RCU to access a peer's service connection tree | David Howells | 1 | -21/+23 |
| 2016-07-06 | rxrpc: Move data_ready peer lookup into rxrpc_find_connection() | David Howells | 1 | -27/+3 |
| 2016-07-06 | rxrpc: Move usage count getting into rxrpc_queue_conn() | David Howells | 1 | -1/+0 |
| 2016-07-06 | rxrpc: Provide queuing helper functions | David Howells | 1 | -1/+1 |
| 2016-07-01 | rxrpc: Fix processing of authenticated/encrypted jumbo packets | David Howells | 1 | -1/+1 |
| 2016-06-22 | rxrpc: Kill off the rxrpc_transport struct | David Howells | 1 | -7/+1 |
| 2016-06-22 | rxrpc: Provide more refcount helper functions | David Howells | 1 | -1/+1 |